DirScan —— 高性能 Web 目录与隐蔽资产扫描工具
- 作者:林乐天
- 版本:v1.5
- 更新:2025-10-08
- 博客:https://www.birdy02.com
介绍
DirScan 是一款高效 Web 目录、备份文件、隐蔽资产发现与web资产存活快速验证工具。工具设计轻量、并发友好,支持代理、认证与自定义请求头,内置指纹识别库,结果可导出
excel,便于后续分析与报告生成。
主要目标是快速发现隐蔽资产、备份文件、目录与可能被遗留的常见敏感文件,从而为安全评估、红队演练和资产盘点提供高质量的初步数据。
DirScan 所使用的都是作者独立设计的模块,如:备份文件检测、请求方法库、路径扫描模块,并且每个模块都在持续优化更新,这些支持库共同支撑起了DirScan的实现。
特点
- 备份文件: 基于输入目标自动生成扫描字典,与内置字典的结合扫描
- 隐蔽资产: 内置数百个
产品、框架的目录字典 - 资产存活: 对输入的URL(列表)快速进行存活探测,通过输出状态码、指纹等信息快速筛选目标
- 严格校验: 对不同文件有不同的判断规则,而不仅是判断响应状态码
- 深度挖掘: 基于爬取到的路径与内置路径拼接
产品、框架字典,深度挖掘隐藏在目录下的资产信息 - 连接复用: 第一次建立
TCP连接后,重复使用该连接发送Http请求,速度与性能提升3~5倍
主要特性
- 高并发扫描,支持自定义线程数以提升扫描速度。
- 多种扫描模式:
allbackupdircmsinfo自定义扫描字典,按需选择减少误报与加速任务。 - 支持 HTTP 代理(含带认证的代理)。
- 支持 Basic Auth、Cookie 与自定义请求头文件。
- 默认识别 Web 指纹发现潜在高危资产。
- 扫描结果可导出为 Excel,字段包含路径、标题、状态码、响应大小与指纹结果。
- 命令行工具,易集成到 CI / 自动化流程。
使用说明
Banner
░██████ ░██████
░██ ░██ ░██ ░██
░██ ░███████ ░███████░██ ░███████ ░██████ ░████████
░████████ ░██ ░██░██ ░██░████████ ░██ ░██ ░██ ░██ ░██
░██░█████████░██ ░██░██ ░███████ ░██ ░██
░██ ░██ ░██ ░██ ░██░██ ░██ ░██ ░██░██ ░██ ░██ ░██
░██████ ░███████ ░███████ ░██████ ░███████ ░█████░██░██ ░██
+ Author: 林乐天
+ Version: v1.5
+ Update: 2025-10-08
+ Docs: https://www.birdy02.com/docs/dirscan
* DirScan是一款高效的Web目录、备份文件、隐蔽资产挖掘、Web资产存活的扫描工具,支持高并发、代理、认证等特性。
* 默认识别指纹信息,发现高危资产
* 扫描结果输出Excel
命令基本格式:
dirScan [flags]
支持的 Flags
-a, --auth string Basic认证信息 [username:password]
-c, --cookie string 请求Cookie [SESSION=xxxx;]
-d, --depth 跳过深度挖掘功能 ps:启用可挖掘隐藏在二级目录下的资产
--header string 请求头文件,不包含内容 -> [GET /index HTTP/x.x]
-h, --help help for dirScan
-m, --mode string 指定扫描的模式:
* all: 全模块扫描-调用所有扫描模块,扫描顺序[backup-cms-dir]
* backup: 备份文件扫描-基于输入目标生成和内置字典,对目标可能泄漏的数据库、web等备份文件进行检测.
* dir: 内置路径扫描-使用内置1w+路径对目标进行碰撞,能发现泄漏文件或路径.
* cms: 资产发现扫描-扫描隐藏在特定目录下的资产,如: /nacos
* info: 只对输入目标列表进行探测和基本信息识别,一般用于快速批量检测网站信息中.
* dist.txt: 路径字典扫描-输入自定义字典,使用dir模块进行碰撞,自定义字典不支持深度挖掘. (default "cms")
-p, --proxy string 代理服务器地址 [http://127.0.0.1:8080 认证:http://username:password@127.0.0.1:8080]
-r, --retry int 请求失败后重试次数 (default 2)
-t, --thread int 并发线程数 (default 20)
--timeout int 请求超时时间[秒] (default 4)
-u, --url string 输入目标 [http(s)://xxx:xx 或 urls.txt,urls.csv(列:扫描目标,任务描述)]
--user-agent string 指定User-Agent头
常见用法示例
- 单个目标快速扫描:
dirscan -u https://example.com
- 从文件批量扫描(urls.txt 每行为一个 URL):
dirscan -u urls.txt -t 100 -m cms
- 通过代理扫描并设置超时和字典:
dirscan -u https://example.com -p http://127.0.0.1:8080 --timeout 10 -w ./wordlists/common.txt
- 批量扫描存活资产信息:
dirscan -u urls.txt -t 100 -m info
- 内网或受保护资源,附带 Basic Auth 与 Cookie:
dirscan -u https://intranet.local -a username:password -c "SESSION=abcd1234;" --mode backup
- 使用自定义请求头文件(仅包含请求头,不包含请求行):
dirscan -u https://example.com --header ./headers.txt
终端日志
- 多目标
14:18:04 [INFO] 输入目标 3 个
14:18:04 [INFO] >> 备份文件扫描 <<
14:18:04 [BackUpScan] 待扫描文件: 2499
14:18:04 [BackUpScan] Target: https://www.birdy02.com
14:18:04 [BackUpScan] Thread: 50
14:18:11 progress: 100.00%--------------------------------------------------
14:18:11 [INFO] >> 隐蔽资产发现扫描 <<
14:18:11 [DirScan] 待扫描路径: 395
14:18:11 [DirScan] Target: https://www.birdy02.com
14:18:11 [DirScan] Thread: 50
14:18:13 [DirScan] 200 - 49B https://www.birdy02.com/actuator/health {SpringBoot}
14:18:14 [DirScan] 200 - 8.89KB https://www.birdy02.com/docs {google-webmaster-platform} title:文档 - 林乐天的个人博客
14:18:14 [DirScan] 200 - 10.75KB https://www.birdy02.com/login {登陆页面} title:登录 - 林乐天的个人博客
14:18:15 [DirScan] 200 - 67.51KB https://www.birdy02.com/index {PHP,google-webmaster-platform} title:林乐天的个人博客
14:18:17 [DirScan] 深度挖掘路径: 9
14:18:17 [DirScan] 深度挖掘字典: 4689
14:19:41 [DirScan] Scanning stopped
--------------------------------------------------
14:19:41 [INFO] >> 路径扫描 <<
14:19:41 [DirScan] 待扫描路径: 11024
14:19:41 [DirScan] Target: https://www.birdy02.com
14:19:41 [DirScan] Thread: 50
14:19:51 [DirScan] 200 - 113.88KB https://www.birdy02.com/404 {iframe} title:404
14:20:22 [DirScan] 200 - 28.09KB https://www.birdy02.com/archives {google-webmaster-platform} title:文章:27 - 林乐天的个人博客
14:20:49 [DirScan] 200 - 23.06KB https://www.birdy02.com/rss.xml title:林乐天的个人博客
14:20:51 [DirScan] 200 - 12.72KB https://www.birdy02.com/sitemap.xml
14:21:01 [DirScan] 深度挖掘路径: 9
14:21:01 [DirScan] 深度挖掘字典: 4905
14:22:27 [DirScan] Scanning stopped
14:22:27 [INFO] >> 备份文件扫描 <<
14:22:27 [BackUpScan] 待扫描文件: 2499
14:22:27 [BackUpScan] Target: https://w.birdy02.com
14:22:27 [BackUpScan] Thread: 50
14:22:27 [BackUpScan] 200 - 31.29KB https://w.birdy02.com/w.birdy02.com.tar.gz
14:22:33 progress: 100.00%--------------------------------------------------
14:22:33 [INFO] >> 隐蔽资产发现扫描 <<
14:22:33 [DirScan] 待扫描路径: 395
14:22:33 [DirScan] Target: https://w.birdy02.com
14:22:33 [DirScan] Thread: 50
14:22:37 [DirScan] 深度挖掘路径: 12
14:22:37 [DirScan] 深度挖掘字典: 6252
14:22:53 [DirScan] Scanning stopped
--------------------------------------------------
14:22:53 [INFO] >> 路径扫描 <<
14:22:53 [DirScan] 待扫描路径: 11024
14:22:53 [DirScan] Target: https://w.birdy02.com
14:22:53 [DirScan] Thread: 50
14:22:59 [DirScan] 200 - 113.88KB https://w.birdy02.com/404.html {iframe} title:404
14:23:10 [DirScan] 200 - 31.58KB https://w.birdy02.com/favicon.ico
14:23:11 [DirScan] 200 - 13.79KB https://w.birdy02.com/index.html title:林乐天 - 个人主页
14:23:22 [DirScan] 深度挖掘路径: 12
14:23:22 [DirScan] 深度挖掘字典: 6540
14:23:38 [DirScan] Scanning stopped
14:23:38 [INFO] >> 备份文件扫描 <<
14:23:38 [BackUpScan] 待扫描文件: 2499
14:23:38 [BackUpScan] Target: https://cloud.birdy02.com:3443
14:23:38 [BackUpScan] Thread: 50
14:23:43 progress: 100.00%--------------------------------------------------
14:23:43 [INFO] >> 隐蔽资产发现扫描 <<
14:23:43 [DirScan] 待扫描路径: 395
14:23:43 [DirScan] Target: https://cloud.birdy02.com:3443
14:23:43 [DirScan] Thread: 50
14:23:48 [DirScan] 深度挖掘路径: 4
14:23:48 [DirScan] 深度挖掘字典: 2084
14:23:59 [DirScan] Scanning stopped
--------------------------------------------------
14:23:59 [INFO] >> 路径扫描 <<
14:23:59 [DirScan] 待扫描路径: 11024
14:23:59 [DirScan] Target: https://cloud.birdy02.com:3443
14:23:59 [DirScan] Thread: 50
14:24:35 [DirScan] 200 - 549B https://cloud.birdy02.com:3443/index.html {Access-Control}
14:24:50 [DirScan] 200 - 27B https://cloud.birdy02.com:3443/title {Access-Control}
14:24:52 [DirScan] 200 - 3B https://cloud.birdy02.com:3443/version {Access-Control}
14:24:56 [DirScan] 深度挖掘路径: 4
14:24:56 [DirScan] 深度挖掘字典: 2180
14:25:07 [DirScan] Scanning stopped
14:25:07 [INFO] 扫描完成!
14:25:07 [INFO] Excel文件: output/dirsan-1759559107.xlsx
输出说明
工具会把扫描结果导出为 Excel 文件,常见字段如下:
file — 发现的文件
目标描述:任务描述、一般可用于指定归属单位发现时间:文件、路径的发现时间文件名:扫描的文件名称文件大小:响应体大小(字节)请求Url:文件的URL地址响应状态:HTTP 响应码请求头:Http的请求头响应头:Http的响应头Hash:响应体的hash值(如果被Head方法扫描到,则无hash值)
dir — 发现的目录
目标描述:任务描述、一般可用于指定归属单位发现时间:文件、路径的发现时间目标URL:文件的URL地址请求路径:请求的URL路径部分请求协议:请求的协议主机名:请求的HostnameIP地址:响应的IP地址响应标题:响应网页的标题响应状态:HTTP 响应码响应长度:响应体大小(字节)指纹:检测到的指纹信息请求头:Http的请求头响应头:Http的响应头Hash:响应体的hash值
扫描建议与安全注意
- 合法授权:在进行外部或非自有目标扫描之前,务必获得明确授权。未经授权的扫描可能违反法律或触发安全响应。
- 并发与节奏控制:根据目标承载能力调整
-t并发数与--timeout,避免对目标造成服务中断。 - 环境隔离:在生产环境或敏感网络运行前,先在测试环境验证参数配置。
- 敏感数据处理:扫描结果中可能包含敏感信息(如备份文件路径、凭据泄露迹象等),请按企业数据保护规范存储与传输。
集成与自动化
DirScan 适合集成到:
- CI / 定期巡检任务(结合定时器或调度器)
- 资产管理平台(定期增量扫描 + 合并结果)
- 红队工具链(作为前期信息收集模块)
示例(CRON 每天凌晨 2 点批量扫描):
0 2 * * * /opt/dirscan/dirscan -u /opt/targets/urls.txt -w /opt/wordlists/common.txt -t 20 --timeout 10 -m all -o /data/scan-results/$(date +\%F)-dirscan.xlsx
常见问题(FAQ)
问:如何减少误报?
答:我们通过对响应数据进行清洗和对比,可以排除掉大部分的无效数据,并且内置一批特征判断的路径,极大降低了误报率。
问:是否支持登录态扫描(如表单登录)?
答:当前版本支持 Basic Auth、Cookie注入与自定义请求头,只需要将认证后的 token(验证) 信息添加到请求中即可。
贡献者指南
欢迎任何形式的贡献:bug 报告、字典/指纹更新、功能改进或文档完善。
联系方式
- 作者:林乐天
- 博客:https://www.birdy02.com
- 邮箱:linletian02@q.com
WeChat: