1、下载安装
1.1、windows上使用下载安装:
dirsearch下载地址: GitHub - maurosoria/dirsearch: Web path scanner
1.2、kali上使用下载安装:
Kail Linux 下输入以下命令即可安装
apt-get install dirsearch
2、查看帮助:
>python dirsearch.py -h
用法: dirsearch.py [-u|--url] 目标 [-e|--extensions] 扩展名 [选项]
选项:
--version 显示程序版本号并退出
-h, --help 显示帮助信息并退出
必填项:
-u URL, --url=URL 目标 URL(s),可以使用多个标志
-l PATH, --url-file=PATH
URL 列表文件
--stdin 从 STDIN 读取 URL(s)
--cidr=CIDR 目标 CIDR
--raw=PATH 从文件加载原始 HTTP 请求(使用 '--scheme' 标志设置协议)
-s SESSION_FILE, --session=SESSION_FILE
会话文件
--config=PATH 配置文件的路径(默认使用 'DIRSEARCH_CONFIG' 环境变量,否则使用 'config.ini')
字典设置:
-w WORDLISTS, --wordlists=WORDLISTS
自定义字典(用逗号分隔)
-e EXTENSIONS, --extensions=EXTENSIONS
用逗号分隔的扩展名列表(例如 php,asp)
-f, --force-extensions
在每个字典条目的末尾添加扩展名。默认情况下,dirsearch 只用扩展名替换 %EXT% 关键字
-O, --overwrite-extensions
使用您的扩展名(通过 `-e` 选择)覆盖字典中的其他扩展名
--exclude-extensions=EXTENSIONS
用逗号分隔的扩展名列表排除(例如 asp,jsp)
--remove-extensions
移除所有路径中的扩展名(例如 admin.php -> admin)
--prefixes=PREFIXES
添加自定义前缀到所有字典条目(用逗号分隔)
--suffixes=SUFFIXES
添加自定义后缀到所有字典条目,忽略目录(用逗号分隔)
-U, --uppercase 字典转为大写
-L, --lowercase 字典转为小写
-C, --capital 字典首字母大写
通用设置:
-t THREADS, --threads=THREADS
线程数
-r, --recursive 递归爆破
--deep-recursive 对每个目录深度执行递归扫描(例如 api/users -> api/)
--force-recursive 对每个找到的路径执行递归爆破,不仅限于目录
-R DEPTH, --max-recursion-depth=DEPTH
最大递归深度
--recursion-status=CODES
递归扫描的有效状态代码,支持范围(用逗号分隔)
--subdirs=SUBDIRS 扫描给定 URL[s]的子目录(用逗号分隔)
--exclude-subdirs=SUBDIRS
在递归扫描期间排除以下子目录(用逗号分隔)
-i CODES, --include-status=CODES
包括状态代码,用逗号分隔,支持范围(例如 200,300-399)
-x CODES, --exclude-status=CODES
排除状态代码,用逗号分隔,支持范围(例如 301,500-599)
--exclude-sizes=SIZES
通过大小(用逗号分隔)排除响应(例如 0B,4KB)
--exclude-text=TEXTS
通过文本排除响应,可以使用多个标志
--exclude-regex=REGEX
通过正则表达式排除响应
--exclude-redirect=STRING
如果正则表达式(或文本)与重定向 URL 匹配,则排除响应(例如 '/index.html')
--exclude-response=PATH
排除类似于此页面响应的响应,以路径为输入(例如 404.html)
--skip-on-status=CODES
每当命中其中一个状态代码时跳过目标,用逗号分隔,支持范围
--min-response-size=LENGTH
最小响应长度
--max-response-size=LENGTH
最大响应长度
--max-time=SECONDS 扫描的最大运行时间
--exit-on-error 每当发生错误时退出
请求设置:
-m METHOD, --http-method=METHOD
HTTP 方法(默认: GET)
-d DATA, --data=DATA
HTTP 请求数据
--data-file=PATH 包含 HTTP 请求数据的文件
-H HEADERS, --header=HEADERS
HTTP 请求头,可以使用多个标志
--header-file=PATH 包含 HTTP 请求头的文件
-F, --follow-redirects
跟随 HTTP 重定向
--random-agent 为每个请求选择随机 User-Agent
--auth=CREDENTIAL 身份验证凭证(例如 user:password 或 bearer token)
--auth-type=TYPE 身份验证类型(basic, digest, bearer, ntlm, jwt, oauth2)
--cert-file=PATH 包含客户端证书的文件
--key-file=PATH 包含客户端证书私钥的文件(未加密)
--user-agent=USER_AGENT
--cookie=COOKIE
连接设置:
--timeout=TIMEOUT 连接超时
--delay=DELAY 请求之间的延迟
--proxy=PROXY 代理 URL(HTTP/SOCKS),可以使用多个标志
--proxy-file=PATH 包含代理服务器的文件
--proxy-auth=CREDENTIAL
代理身份验证凭证
--replay-proxy=PROXY
重放找到的路径时使用的代理
--tor 使用 Tor 网络作为代理
--scheme=SCHEME 原始请求的协议或 URL 中没有协议时使用的协议(默认: 自动检测)
--max-rate=RATE 每秒的最大请求数
--retries=RETRIES 失败请求的重试次数
--ip=IP 服务器 IP 地址
--interface=NETWORK_INTERFACE
要使用的网络接口
高级设置:
--crawl 在响应中爬取新路径
显示设置:
--full-url 在输出中显示完整的 URL(在安静模式下自动启用)
--redirects-history
显示重定向历史
--no-color 无彩色输出
-q, --quiet-mode 安静模式
输出设置:
-o PATH, --output=PATH
输出文件
--format=FORMAT 报告格式(可用: simple, plain, json, xml, md, csv, html, sqlite)
--log=PATH 日志文件
3、常用语法:
python dirsearch.py -u http://xxx.com 日常使用
python dirsearch.py -u http://xxx.com -r 递归扫描,不过容易被检测
python dirsearch.py -u http://xxx.com -r -t 30 线程控制请求速率
python dirsearch.py -u http://xxx.com -r -t 30 --proxy 127.0.0.1:8080 使用代理
python dirsearch.py -e php,html,js -u http://xxx.com 指定文件扩展名python dirsearch.py -e php,html,js -u http://xxx.com -w /path/to/wordlist 使用自定义的字典
1.扫描单个URL,并限制线程数和扩展名:
python dirsearch.py -u http://xxx.com -t 10 -e php,asp --exclude-extensions=html
该命令将对 http://example.com 进行目录扫描,使用最多 10 个线程并仅检查扩展名为 php 和 asp 的路径,同时排除扩展名为 html 的路径。
2.从URL列表文件中批量扫描:
python dirsearch.py -l urls.txt -t 5 -e php
该命令将从 urls.txt 文件中读取目标URL列表,并使用最多 5 个线程对每个URL进行目录扫描,仅检查扩展名为 php 的路径。
3.使用自定义字典和深度递归扫描:
python dirsearch.py -u http://xxx.com -w custom-wordlist.txt -r --deep-recursive
该命令将对 http://example.com 进行目录扫描,使用自定义的单词列表文件 custom-wordlist.txt,并启用深度递归扫描,即在每个目录的所有深度上执行递归扫描。
4.在请求中使用自定义HTTP头:
python dirsearch.py -u http://xxx.com -H "X-Custom-Header: Value" -H "Authorization: Bearer token"
该命令将对 http://example.com 进行目录扫描,并在每个请求中包含自定义的HTTP头,如 X-Custom-Header 和 Authorization。
5.指定线程数和延迟时间:
python dirsearch.py -u http://xxx.com -t 20 --delay 0.5
上述命令将使用20个线程并设置每个请求之间的延迟为0.5秒。
6.使用自定义的请求头和超时时间:
python dirsearch.py -u http://xxx.com -H "Custom-Header: value" --timeout 10
这个命令将在每个请求中添加一个自定义的请求头 “Custom-Header: value”,并将超时时间设置为10秒。
7.包含和排除特定状态码:
python dirsearch.py -u http://xxx.com -i 200,302 -x 404,500
上述命令将只包含状态码为200和302的响应,并排除状态码为404和500的响应。
8.使用代理进行扫描:
python dirsearch.py -u http://xxx.com -p http://127.0.0.1:8080
这个命令将通过指定的HTTP代理(例如Burp Suite)对目标URL进行扫描。
9.保存输出到文件中:
python dirsearch.py -u http://xxx.com -o output.txt
上述命令将扫描结果输出到指定的文件 output.txt。
10.使用代理链进行扫描:
python dirsearch.py -u http://xxx.com -p http://proxy1:8080 -p http://proxy2:8080
上述命令将通过两个代理服务器 proxy1 和 proxy2 进行目标URL的扫描。
11.从标准输入读取URL:
cat urls.txt | python dirsearch.py --stdin -t 10
这个命令通过管道从 urls.txt 中读取URL,并使用最多 10 个线程对每个URL进行目录扫描。
12.启用递归扫描和重定向跟随:
python dirsearch.py -u http://xxx.com -r -F
上述命令将启用目录的递归扫描,并且在扫描时跟随HTTP重定向。
13.排除指定大小范围的响应:
python dirsearch.py -u http://xxx.com --exclude-sizes 0-100B,500KB-1MB
该命令将排除大小在 0 到 100 字节以及 500千字节到 1 兆字节范围内的响应。
14.设定最大运行时间和最大重试次数:
python dirsearch.py -u http://xxx.com --max-time 300 --retries 5
上述命令将设置最长运行时间为 300 秒,并允许失败请求最多重试 5 次。
15.指定自定义的User-Agent头:
python dirsearch.py -u http://xxx.com --user-agent "Custom User Agent"
上述命令将在HTTP请求中指定自定义的User-Agent头。
16.使用代理认证进行扫描:
python dirsearch.py -u http://xxx.com -p http://proxy.example.com --proxy-auth "username:password"
这个命令将使用指定的代理服务器 proxy.example.com 进行扫描,并提供代理认证的用户名和密码。
17.启用递归扫描并限制最大递归深度:
python dirsearch.py -u http://xxx.com -r -R 5
上述命令将启用递归目录扫描,并限制最大递归深度为5层。
18.排除特定文本出现的响应:
python dirsearch.py -u http://xxx.com --exclude-text "Not Found" --exclude-text "Error"
该命令将排除响应中包含指定文本(如 “Not Found” 和 “Error”)的路径。
19.设置最小和最大响应长度:
python dirsearch.py -u http://xxx.com --min-response-size 1000 --max-response-size 50000
上述命令将只包含响应长度在1000到50000字节之间的路径。
4、以不同格式保存输出
以简单格式保存输出
dirsearch.py -u http://xxx.com/ --simple-report=report
我们可以清楚地看到,我的简单格式结果已成功创建。 我们可以轻松地分析我们的结果。
以 JSON 格式保存输出
dirsearch.py -u http://xxx.com/ --json-report=report
以 XML 格式保存输出
dirsearch.py -u http://xxx.com/ --xml-report=report
以 Markdown 格式保存输出
dirsearch.py -u http://xxx.com/ --markdown-report=report
以 CSV 格式保存输出
dirsearch.py -u http://xxx.com/ --csv-report=report
以普通格式保存输出
dirsearch.py -u http://xxx.com/ --plain-text-report=report