robots.txt 与静态资源线索分析
robots.txt 不是访问控制,只是给爬虫看的约定。靶场和真实测试里,它经常暴露隐藏目录、测试文件、静态资源或命名习惯。JavaScript、CSS、图片、源码注释也常常能把攻击面从“目录枚举”推进到“业务线索识别”。
基础检查
curl -s http://target/robots.txt
curl -s http://target/sitemap.xml
curl -s http://target/.well-known/security.txt
看到 Disallow 不要只记录路径,要反向思考:
| 线索 | 下一步 |
|---|---|
Disallow: /*.txt | 枚举 *.txt、测试说明、备份文件 |
Disallow: *.js | 下载 JS,查接口、变量、凭据格式 |
Disallow: *.css | 查隐藏图片、data URI、注释 |
/admin、/backup | 先验证访问,再查认证和备份文件 |
下载静态资源
wget -r -np -nH --cut-dirs=0 http://target/
find . -type f \( -name '*.js' -o -name '*.css' -o -name '*.txt' \) -print
快速 grep:
rg -n 'admin|password|token|key|secret|debug|backup|api|login|user|pass' .
JavaScript 线索
常见目标:
- API 路径和隐藏页面。
- 前端硬编码的用户名、字段名、默认参数。
- 加密、编码、密码生成逻辑。
- 混淆变量和运行时动态生成的字符串。
对轻度混淆脚本,可以在末尾追加输出语句:
node script.js
或者把关键变量通过 console.log() / JSON.stringify() 打出来。
CSS 与图片线索
CSS 里值得看:
background-image: url(...)data:image/png;base64,...display: none- 注释中的旧路径
如果图片来自 data URI,先解码:
python3 - <<'PY'
import base64, re
css = open('style.css', 'r', encoding='utf-8').read()
m = re.search(r'base64,([A-Za-z0-9+/=]+)', css)
open('/tmp/out.png', 'wb').write(base64.b64decode(m.group(1)))
PY
防坑点
robots.txt暴露路径不等于一定可访问,但它能指导后续字典。- 静态资源中的“主题词”适合喂给 CeWL 或自定义词表继续枚举。
- 不要只看压缩后的前端包,源码映射
*.map有时会泄露更完整代码。
来源案例
- GameShell5:
robots.txt把注意力引到script.js和style.css,最终恢复 LessPass 参数。 - The Planets: Earth:测试站
robots.txt提示*.txt,继续读到testingnotes.txt。 - Matrix-Breakout: 2 Morpheus:
robots.txt和页面主题帮助收束/graffiti.php枚举方向。