目录爆破与目标类型判断
适用:Web 目录扫描(dirsearch)、源码泄露探测 核心认知:先判断目标类型,再决定用不用目录爆破——工具是死的,判断是活的
一、为什么有时候"扫不出结果"?(dirsearch 的过滤机制)
dirsearch 扫描前会做通配响应(wildcard)检测:
1. 请求几个随机路径,看目标是否"catch-all"(对不存在的路径也返回 200 同页面)
2. 如果检测到 → 建立"通配画像"
3. 扫描时:响应和通配画像【相似度≥90%】→ 判定为无效 → 静默过滤,不报告
结果:遇到 catch-all 站点,所有"和首页长得一样"的路径都被吞掉 → 看起来"什么都没扫到"。
这是防噪音设计(否则 catch-all 站会报几千条假结果),不是工具坏了。
二、目标类型判断(花 3 秒,先做这步!)
curl -o nul -w "%{http_code} %{size_download}" https://目标/随便不存在的xyz123
curl -o nul -w "%{http_code} %{size_download}" https://目标/
| 结果 | 结论 | 该干嘛 |
|---|---|---|
| 随机路径 404 / 大小不同 | ✅ 正常站点 | dirsearch 放心扫,能出结果 |
| 随机路径 200 且大小一样 | ⚠️ catch-all | 目录爆破意义不大,换思路 |
catch-all 站点的正确思路:源码审计(看主页源码/JS)、参数探测、伪协议、手动试常见文件名。
三、dirsearch 正确用法
# 基本(正常站点)
dirsearch -u http://目标 -e php,txt,zip,bak -x 403 -t 20
# 指定字典
dirsearch -u http://目标 -w 字典.txt -e php
# 强制显示指定状态码(辅助判断)
dirsearch -u http://目标 -e php -i 200,301,302,401,403
# 中断后恢复
# Ctrl+C → [q]uit 退出 → [s]ave 保存会话 → 下次 --resume 会话文件 继续
注意:默认字典(dicc.txt)没有 .phps 条目——扫 .phps 要 -e php,phps 或自定义字典。
四、源码泄露文件类型(PHP 站必试清单)
index.phps ← 直接显示高亮源码(重点!)
index.php.bak ← 备份文件
index.php~ ← vim 备份
index.php.swp ← vim 交换文件
index.php.txt ← 改名保存
index.php.old ← 旧版本
原理:.php 被执行看不到源码;.phps 被 Web 服务器配置映射为源码显示(Apache AddType application/x-httpd-php-source .phps,nginx 同理)——访问直接看高亮源码。这是开发者/出题人常留的"后门",等于主动泄露。
五、工具对比
| 工具 | 特点 | 适合 |
|---|---|---|
| dirsearch | 好用,有 wildcard 过滤(会吞相似内容) | 正常站点、CTF |
| ffuf | 快,参数灵活(-ac 自动校准可关) | 进阶、复杂场景 |
| gobuster | 老实,行为简单 | 想避开相似度过滤时 |
| 手动 curl | 永远最可靠 | 试已知文件名时 |
六、实战流程(照这个走)
1. curl 随机路径 → 判断目标类型(正常 / catch-all)
2. 正常 → dirsearch 扫(-e 加全扩展名)
3. catch-all → 手动试源码泄露文件 + 分析主页
4. 扫出结果 → 200/301 重点看;403 存在但被拦
5. 扫不出 → 不是坏事,说明没隐藏文件,转源码审计/参数探测
记忆口诀
先探类型再爆破,catch-all 换思路;源码泄露试 phps,手动 curl 最可靠。
速查表持续补充,实战遇到新技巧随时更新。