pathScan 是一个用Go编写的路径扫描、信息收集、指纹探索工具
pathScan 是一个用Go编写的路径扫描、信息收集、指纹探索工具,它允许您快速可靠的扫描URL地址。这是一个非常简单的工具。
特征
- 快速发现路径、快速从网络空间中收集信息、指纹识别
- 丰富的内置字典,自动下载字典,可远程加载目标或远程加载字典
- 可持续递归扫描,恢复上次扫描进度
- 从网络空间测绘中发现目标,从持续的扫描中发现目标
- 支持使用HTTP/SOCKS5代理
- 可自定义请求头,可自定义指纹识别规则
- 通过hash,len指定跳过
- 结果可回调处理
先决条件
Note: 在安装 pathScan 之前,请确保安装 libpcap 用于数据包捕获的库。
要在 Linux 上安装 libpcap:sudo apt install -y libpcap-dev
,在 Mac 上安装: brew install libpcap
安装pathScan
pathScan需要go1.21才能安装成功。执行一下命令
go install -v github.com/wjlin0/pathScan@latest
下载准备运行的二进制文件
# windows
wget https://github.com/wjlin0/pathScan/releases/download/v1.5.3/pathScan_v1.5.3_windows_amd64.zip
#linux macos
OS=$(uname -s | tr '[:upper:]' '[:lower:]'); ARCH=$(uname -m); [ "$ARCH" = "x86_64" ] && ARCH="amd64"; rm -rf /tmp/pathScan && wget "https://github.com/wjlin0/pathScan/releases/download/v1.5.3/pathScan_v1.5.3_""$OS"_"$ARCH"".zip" -O /tmp/pathScan.zip && unzip /tmp/pathScan.zip -d /tmp/pathScan && sudo mv /tmp/pathScan/pathScan /usr/local/bin/pathScan && sudo chmod +x /usr/local/bin/pathScan && rm -rf /tmp/pathScan && pathScan
用法
- 更多用法查看 BLOG
pathScan -h
pathScan 1.5.3 Go 扫描、信息收集工具
Usage:
pathScan [flags]
Flags:
输入:
-u, -url string[] 目标(以逗号分割)
-list string[] 从文件中,读取目标
-tr, -target-remote string 从远程加载目标
-tc, -target-channel 从通道中加载目标
-resume string 使用resume.cfg恢复扫描
-mf, -match-file string 指纹文件目录或文件
递归:
-r, -recursive 递归扫描
-rt, -recursive-time int 递归扫描深度 (default 3)
子域名收集:
-s, -sub 子域名收集
-sq, -sub-query string[] 需要收集的域名 (支持从文件中录入 -sq /tmp/sub-query.txt)
-sl, -sub-limit int 每个搜索引擎返回的至少不超过数 (default 1000)
-so, -sub-output string 子域名搜索结果保存 支持csv格式输出
-se, -sub-engine string[] 子域名搜索引擎 [shodan censys fofa quake hunter zoomeye netlas criminalip publicwww hunterhow binary shodan-idb anubis-spider sitedossier-spider fder bing-spider chinaz-spider google-spider ip138-spider qianxun-spider rapiddns-spider baidu-spider yahoo-spider] (default all)
被动发现:
-a, -api 被动发现
-as, -api-server string 中间人劫持代理端口 (default ":8081")
-ac, -api-ca-path string 中间人劫持证书路径
-ah, -api-allow-hosts string[] 允许的hosts (支持从文件中录入 -ah /tmp/allow-hosts.txt 支持 *.wjlin0.com 写法) (default ["*"])
引擎:
-uc, -uncover 启用打开搜索引擎
-uq, -uncover-query string[] 搜索查询
-ue, -uncover-engine string[] 支持的引擎 [shodan censys fofa quake hunter zoomeye netlas criminalip publicwww hunterhow binary] (default fofa)
-uf, -uncover-field string 引擎返回字段 (ip,port,host) (default "host")
-ul, -uncover-limit int 发现要返回的结果 (default 200)
-uo, -uncover-output string 搜索引擎查询结果保存 支持csv格式输出
跳过:
-su, -skip-url string[] 跳过的目标(以逗号分割,支持从文件读取 -su /tmp/skip-url.txt)
-sc, -skip-code string[] 跳过状态码(以逗号分割,支持从文件读取 -sc /tmp/skip-code.txt, 支持 5xx、300-399 )
-sh, -skip-hash string 跳过指定hash
-sbl, -skip-body-len string[] 跳过body固定长度(支持 100-200,即长度为100~200之间的均跳过,支持 从文件中读取 -sbl /tmp/skip-body-len.txt)
-sbr, -skip-body-regex string[] 跳过body正则匹配(以逗号分割,支持从文件读取 -sbr /tmp/skip-regex.txt)
扫描字典:
-ps, -path string[] 路径(以逗号分割)
-pf, -path-file string[] 从文件中,读取路径
-pr, -path-remote string 从远程加载字典
-ldd, -load-default-dict 目标超过一个时,是否加载默认字典
-lad, -load-api-dict 是否加载api字典
输出:
-o, -output string 输出文件路径(可忽略)
-csv csv格式输出
-html html格式输出
-silent 简略输出
-nc, -no-color 无颜色输出
-vb, -verbose 详细输出模式
-v, -version 输出版本
端口扫描:
-n, -naabu 端口扫描
-port string 端口(80,443, 100-200)
-tp, -top-ports string top端口(100,200,300)
-ns, -naabu-scan-type string 端口扫描类型(SYN/CONNECT) (default "s")
-sn, -naabu-host-discovery 只允许主机发现
-Pn, -skip-host-discovery 跳过主机发现
-no, -naabu-output string 端口扫描结果保存 支持csv格式输出
-nsi, -naabu-source-ip string 端口扫描源IP
-nsp, -naabu-source-port string 端口扫描源端口
-ne, -naabu-exclude-cdn 端口扫描排除cdn
工具:
-clear 清理历史任务
-gh, -get-hash 计算hash
-shm, -skip-hash-method string 指定hash的方法(sha256,md5,sha1) (default "sha256")
配置:
-rs, -retries int 重试
-p, -proxy string 代理
-f, -favicon 自动识别favicon
-resolvers string[] 自定义DNS列表( 文件或逗号隔开 )
-pa, -proxy-auth string 代理认证,以冒号分割(username:password)
-st, -scan-target 只进行目标存活扫描
-nn, -not-new 允许重定向
-sdl, -scan-domain-list string[] 从响应中中发现其他域名(逗号隔开,支持文件读取 -sdl /tmp/otherDomain.txt)
-sd, -scan-domain 从响应中发现其他域名
请求头参数:
-m, -method string[] 请求方法 [GET HEAD POST PUT PATCH DELETE CONNECT OPTIONS TRACE] (default ["GET"])
-ua, -user-agent string[] User-Agent (支持从文件中录入 -ua /tmp/user-agent.txt)
-c, -cookie string cookie
-auth, -authorization string Auth请求头
-header string[] 自定义请求头,以逗号隔开 (支持从文件中录入 -header /tmp/header.txt)
-b, -body string 自定义请求体
速率:
-t, -thread int 线程 (default 30)
-rl, -rate-limit int 每秒允许的HTTP连接数 (default 150)
-nr, -naabu-rate int 端口扫描速率 (default 1000)
-timeout int 超时时间 (default 10)
-wt, -wait-timeout int 自定义任务结束前的等待,一般用于结束结束时间果断,导致无法发现更多目标 (default 3)
更新:
-update 更新版本
-um, -update-match 更新指纹识别库
-am, -auto-match 跳过自动检查更新
EXAMPLES:
运行 pathScan 扫描路径, 指定单个目标 跳过404输出:
$ pathScan -u https://example.com/ -sc 404
运行 pathScan 递归扫描 指定单个目标:
$ pathScan -r -u https://example.com/ -sc 404
运行 pathScan 搜索引擎 并指定多个路径:
$ pathScan -uc -ue fofa -uq 'app="tomcat"' -pf "/,/api/v1/user"
运行 pathScan 收集子域名 指定输出:
$ pathScan -s -sq 'example.com' -csv -o out.csv
运行 pathScan 端口扫描 并指定前1000个端口:
$ pathScan -u example.com -n -csv -o out.csv -tp 1000
运行 pathScan 收集子域名 并端口扫描:
$ pathScan -s -sq 'example.com' -n -port 80,443,8080 -csv -o out.csv
其他文档可在以下网址获得: https://github.com/wjlin0/pathScan/
运行pathScan
pathScan -t https://wjlin0.com
# 从管道中加载
cat url.txt | pathScan -tc
# 恢复上次扫描
pathScan -resume Hc7wUXRoH2G1RjrNgjB2OMzXlXo1Hg.cfg
# 输出
pathScan -u https://wjlin0.com -csv -output 1.csv
# 自定义请求头
pathScan -u https://wjlin0.com -header User-Agent:pathScan/1.8,Cookie:a=1 -header a:1
# 跳过指定hash,指定长度
pathScan -u https://wjlin0.com -sh 291583051dfea8f6e512e25121cb09209b8e57402f0d32dcd8d1b611f16a3b20 -sbl 114763
收集某个资产
pathScan -s -sq baidu.com -sd -o output/baidu/baidu.csv -csv
自定义指纹
采用配置文件的方式,可自定义加载指纹识别库 -> pathScan-match 如果您掌握某些系统的指纹识别方法 欢迎至指纹识别库中提交 pull
rules:
- name: "ctfd"
matchers:
- type: regex
part: body
regex:
- <small class=(?:['"]{1}.*)> ?Powered by CTFd ?</small>
集成到自己的工具中
package main
import (
"fmt"
"github.com/projectdiscovery/gologger"
"github.com/wjlin0/pathScan/pkg/result"
"github.com/wjlin0/pathScan/pkg/runner"
"os"
)
func main() {
options := &runner.Options{Url: []string{
"https://wjlin0.com/",
},
Timeout: 2,
ResultBack: func(result *result.Result) {
fmt.Println(result)
},
Method: []string{"GET"},
Path: []string{"/"},
}
run, err := runner.NewRunner(options)
if err != nil || run == nil {
if err != nil {
gologger.Print().Msg(fmt.Sprintf("Unable to create Runner:%s", err.Error()))
os.Exit(-1)
}
return
}
panic(run.RunEnumeration())
}
pathScan 支持默认配置文件位于下面两个路径,它允许您在配置文件中定义任何标志并设置默认值以包括所有扫描。
- $HOME/.config/pathScan/config.yaml
- $HOME/.config/pathScan/provider-config.yaml
温馨提示:本文最后更新于2024年1月29日 18:33,若内容或图片失效,请在下方留言或联系博主。