项目介绍
dirsearch 是一款高效、多线程的 Web 路径扫描工具,专为渗透测试人员和网络安全研究人员设计,用于发现目标网站的隐藏目录、敏感文件及未授权接口。其支持自定义字典、代理配置、请求头伪装等功能,适用于红队渗透、漏洞挖掘及资产测绘等场景。
核心功能
- 多线程扫描:默认 20 线程,可自定义调整以提高效率。
- 智能错误处理:自动过滤重复状态码(如 404),降低误报率。
- 灵活扩展支持:
- 支持自定义字典(如
-w指定字典文件)。 - 支持多种扩展名扫描(如
-e php,asp,aspx)。
- 支持自定义字典(如
- 结果输出:生成可读性强的报告(TXT/JSON/CSV),便于后续分析。
- 绕过检测:支持随机 User-Agent、代理池、请求延迟等隐蔽扫描策略。
适用场景
- 红队渗透:快速定位网站后台、敏感文件(如
admin.php、backup.zip)。 - 漏洞验证:发现未授权访问的 API 接口(如
/api/v1/users)。 - 资产梳理:扫描企业网站的暴露面资产(如遗留测试页面)。
安装教程
使用 pip 安装:
pip install dirsearch
安装依赖:
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 日志文件

