目录爆破与目标类型判断

目录爆破与目标类型判断

适用: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 最可靠。


速查表持续补充,实战遇到新技巧随时更新。