跳到主要内容dirsearch 工具安装、用法及 CTF 实战例题 | 极客日志Python
dirsearch 工具安装、用法及 CTF 实战例题
项目介绍 dirsearch 是一款高效、多线程的 Web 路径扫描工具,专为渗透测试人员和网络安全研究人员设计,用于发现目标网站的隐藏目录、敏感文件及未授权接口。其支持自定义字典、代理配置、请求头伪装等功能,适用于红队渗透、漏洞挖掘及资产测绘等场景。 核心功能 **多线程扫描**:默认 20 线程,可自定义调整以提高效率。 **智能错误处理**:自动过滤重复状态码(如 404),降低误报率。 *…
孤勇者61K 浏览 项目介绍
dirsearch 是一款高效、多线程的 Web 路径扫描工具,专为渗透测试人员和网络安全研究人员设计,用于发现目标网站的隐藏目录、敏感文件及未授权接口。其支持自定义字典、代理配置、请求头伪装等功能,适用于红队渗透、漏洞挖掘及资产测绘等场景。
核心功能
- 多线程扫描:默认 20 线程,可自定义调整以提高效率。
- 智能错误处理:自动过滤重复状态码(如 404),降低误报率。
- 灵活扩展支持:
- 支持自定义字典(如
-w 指定字典文件)。
- 支持多种扩展名扫描(如
-e php,asp,aspx)。
结果输出:生成可读性强的报告(TXT/JSON/CSV),便于后续分析。绕过检测:支持随机 User-Agent、代理池、请求延迟等隐蔽扫描策略。适用场景
- 红队渗透:快速定位网站后台、敏感文件(如
admin.php、backup.zip)。
- 漏洞验证:发现未授权访问的 API 接口(如
/api/v1/users)。
- 资产梳理:扫描企业网站的暴露面资产(如遗留测试页面)。
安装教程
pip install --upgrade -r requirements.txt
基础使用教程
语法及参数
输入 python dirsearch.py -h 获取帮助信息。
用法:dirsearch.py [-u|--url] 目标 [-e|--extensions] 扩展名 [选项]
选项:
--version 显示程序的版本号并退出
-h, --help 显示此帮助消息并退出
必需:
-u URL, --url=URL 目标 URL,可以使用多个选项指定多个目标 URL
-l PATH, --urls-file=PATH URL 列表文件
--stdin 从标准输入读取 URL
--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 在每个单词列表条目的末尾添加扩展名。
-O, --overwrite-extensions 使用指定的扩展名覆盖单词列表中的其他扩展名
--exclude-extensions=EXTENSIONS 排除的扩展名列表
--remove-extensions 删除所有路径中的扩展名
--prefixes=PREFIXES 将自定义前缀添加到所有单词列表条目中
--suffixes=SUFFIXES 将自定义后缀添加到所有单词列表条目中
-U, --uppercase 单词列表转为大写
-L, --lowercase 单词列表转为小写
-C, --capital 单词首字母大写
通用设置:
-t THREADS, --threads=THREADS 线程数
-r, --recursive 递归地进行强制破解
--deep-recursive 在每个目录深度上执行递归扫描
--force-recursive 对找到的每个路径执行递归强制破解
-R DEPTH, --max-recursion-depth=DEPTH 最大递归深度
--recursion-status=CODES 用于执行递归扫描的有效状态码
--subdirs=SUBDIRS 扫描给定 URL 的子目录
--exclude-subdirs=SUBDIRS 在递归扫描期间排除以下子目录
-i CODES, --include-status=CODES 包括的状态码
-x CODES, --exclude-status=CODES 排除的状态码
--exclude-sizes=SIZES 根据大小排除响应
--exclude-text=TEXTS 根据文本排除响应
--exclude-regex=REGEX 根据正则表达式排除响应
--exclude-redirect=STRING 如果此正则表达式与重定向 URL 匹配,则排除响应
--exclude-response=PATH 排除类似于此页面响应的响应
--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 请求标头
--headers-file=PATH 包含 HTTP 请求标头的文件
-F, --follow-redirects 跟随 HTTP 重定向
--random-agent 每个请求选择一个随机 User-Agent
--auth=CREDENTIAL 认证凭据
--auth-type=TYPE 认证类型(basic、digest、bearer、ntlm、jwt)
--cert-file=PATH 包含客户端证书的文件
--key-file=PATH 包含客户端证书私钥的文件
--user-agent=USER_AGENT
--cookie=COOKIE
连接设置:
--timeout=TIMEOUT 连接超时时间
--delay=DELAY 请求之间的延迟
-p PROXY, --proxy=PROXY 代理 URL(HTTP/SOCKS)
--proxies-file=PATH 包含代理服务器的文件
--proxy-auth=CREDENTIAL 代理认证凭据
--replay-proxy=PROXY 用于重放已发现路径的代理
--tor 使用 Tor 网络作为代理
--scheme=SCHEME 原始请求的协议
--max-rate=RATE 每秒请求数最大值
--retries=RETRIES 失败请求的重试次数
--ip=IP 服务器 IP 地址
高级设置:
--crawl 在响应中爬取新路径
显示设置:
--full-url 在输出中显示完整 URL
--redirects-history 显示重定向历史记录
--no-color 不使用彩色输出
-q, --quiet-mode 安静模式
输出设置:
-o PATH/URL, --output=PATH/URL 输出文件或 MySQL/PostgreSQL 数据库 URL
--format=FORMAT 报告格式(可用:simple、plain、json、xml、md、csv、html、sqlite、mysql、postgresql)
--log=PATH 日志文件
常见参数说明
| 参数 | 功能说明 |
|---|
-u URL | 指定目标 URL(如 http://example.com) |
-w FILE | 指定自定义字典文件(默认使用 dictionaries/common.txt) |
-e EXTENSIONS | 扫描指定扩展名(如 php,html,zip) |
-t THREADS | 设置线程数(默认 20,建议不超过 50) |
--timeout SEC | 设置请求超时时间(默认 30 秒) |
--random-agent | 启用随机 User-Agent |
基础扫描示例
1. 扫描单个目标
python dirsearch.py -u http://example.com -e php,html
-u http://example.com:指定目标 URL。
-e php,html:指定扩展名,枚举以 .php 和 .html 结尾的文件。
命令作用:DirSearch 会基于内置字典,尝试访问目标网站下的常见目录和指定扩展名的文件,帮助发现网站隐藏的资源。
[10:00:00] Starting scan...
[10:00:01] 200 - 123B /index.html
[10:00:03] 403 - 456B /admin/
[10:00:05] 200 - 789B /config.php
- 合法合规:仅可对授权目标使用。
- 字典优化:默认字典位于
dirsearch-master/db/dicc.txt,可根据需求替换。
- 速度控制:可添加
-t 10 或 --delay 1 避免触发防护机制。
python dirsearch.py -u http://example.com -t 10 -e php,asp --exclude-extensions=html
2. 从 URL 列表文件中批量扫描
python dirsearch.py -l urls.txt -t 5 -e php
3. 使用自定义字典
python dirsearch.py -u http://example.com -w /path/to/custom_wordlist.txt
-u http://example.com:指定目标 URL。
-w /path/to/custom_wordlist.txt:指定自定义字典文件。
自定义字典格式要求:字典文件需为纯文本格式,每行一个目录或文件名。
4. 过滤状态码
python dirsearch.py -u http://example.com --exclude-status 403,500
命令作用:排除指定 HTTP 状态码的结果,让输出更聚焦于有效资源。
5. 在请求中使用自定义 HTTP 头
python dirsearch.py -u http://example.com -H "X-Custom-Header: Value" -H "Authorization: Bearer token"
命令作用:在扫描时向目标网站添加自定义 HTTP 请求头,以模拟特定场景或绕过防护。
6. 指定线程数和延迟时间
python dirsearch.py -u http://example.com -t 20 --delay 0.5
7. 包含和排除特定状态码
python dirsearch.py -u http://example.com -i 200,302 -x 404,500
命令作用:通过 -i(包含)和 -x(排除)组合,实现双重筛选,极大减少干扰信息。
8. 通过代理扫描
python dirsearch.py -u http://example.com --proxy http://127.0.0.1:8080
9. 设置请求延迟
python dirsearch.py -u http://example.com --delay 2
10. 随机 User-Agent
python dirsearch.py -u http://example.com --random-agent
11. 递归扫描与深度控制
python dirsearch.py -u http://example.com --recursive -R 3
--recursive:启用递归扫描。
-R 3:设置递归深度为 3。
12. 导出 JSON 报告
python dirsearch.py -u http://example.com -o report.json --format json
核心作用:将扫描数据以 JSON 格式保存到指定文件,便于后续自动化解析。
常见状态码含义
| 状态码 | 含义 | 场景价值 |
|---|
200 | 成功请求 | 直接发现存在的文件/目录 |
302 | 临时重定向 | 可能指向登录页或隐藏资源 |
301 | 永久重定向 | 永久迁移,原 URL 失效 |
307 | 严格保持原方法 | 临时重定向,保留请求方法 |
303 | 强制转为 GET | 临时重定向,强制转为 GET |
429 | 访问过于频繁 | 触发限流,需降低扫描频率 |
400 | 错误请求 | 客户端请求语法或参数错误 |
403 | 权限不够 | 目录/文件存在但无访问权限 |
404 | 资源不存在 | 无效路径,过滤后避免输出 |
500 | 服务器错误 | 服务端自身出错,非客户端问题 |
CTF 实战例题
题目
在 CTF 信息搜集环节,常见题目要求通过扫描发现隐藏目录或敏感文件。
解题思路
-
基础扫描命令:
python dirsearch.py -u http://目标网址 -e 后缀名
-
优化参数:
-w:使用自定义字典。
-r:递归扫描子目录。
-t:增加并发线程。
--delay:设置请求延迟。
-x:排除无效状态码。
-
CTF 场景常用命令:
python dirsearch.py -u http://目标网址 -e * -r -x 404 --full-url
-e *:扫描所有常见后缀。
-r:递归扫描。
--full-url:显示完整 URL。
-
结果分析:
- 重点关注状态码
200。
- 寻找备份文件(如
index.php~)。
- 寻找压缩包(如
backup.zip)。
- 查看
robots.txt。
-
注意事项:
- 避免频繁扫描,防止被 WAF 拦截。
- 使用代理隐藏真实 IP。
- 仅在授权环境下使用。
示例操作
python dirsearch.py -u http://目标网址 -e * --full-url
若遇到 429 错误(请求过多),建议降低线程数(如 -t 5)或增加请求间隔。
总结
本文介绍了 dirsearch 工具的安装、常用参数及实战例题。通过合理配置参数,可快速定位目标网站的敏感资源,为后续渗透测试或 CTF 解题提供关键线索。
微信扫一扫,关注极客日志
微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
相关免费在线工具
- curl 转代码
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
- Base64 字符串编码/解码
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
- Base64 文件转换器
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
- Markdown 转 HTML
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML 转 Markdown 互为补充。 在线工具,Markdown 转 HTML在线工具,online
- HTML 转 Markdown
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML 转 Markdown在线工具,online
- JSON 压缩
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online