逆向工程实战手册 第 57 章

第 57 章 Web 渗透测试基础(信息收集与枚举)

从逆向进入渗透:Web 是最大、最常被攻击的入口。本章是 Web 渗透的"第一步方法论"——信息收集(Recon)与枚举(Enumeration),这是 80% 攻击路径的起点。对应 MITRE ATT&CK TA0043(侦察)。

📍 知识点地图 | 主题:Web侦察 | 前置:第13章 | 后续:第58章 | 核心概念:资产测绘、子域、泄露狩猎、目录枚举

57.1 Web 渗透五阶段模型(知识架构)

Phase 1: 信息收集(Recon)    — 目标有什么?资产/技术栈/入口
Phase 2: 枚举(Enumeration)  — 找到所有可达的路径/接口
Phase 3: 漏洞探测(Hunt)     — 每个入口有没有洞(第 58 章)
Phase 4: 利用(Exploit)      — 把洞变成权限
Phase 5: 报告(Report)       — 证据+影响+修复

本章 = Phase 1-2;第 58 章 = Phase 3-4

57.2 资产测绘(找到目标的一切)

域名与子域发现

# 子域名被动收集(三条线并行)
subfinder -d target.com -o subdomains.txt
amass enum -d target.com -passive -o amass_results.txt
# 证书透明度日志(经常有隐藏域名)
curl "https://crt.sh/?q=%25.target.com&output=json" | jq '.[].name_value' | sort -u

# 合并去重 + 存活探测
cat subdomains.txt amass_results.txt | sort -u > all_subs.txt
httpx -l all_subs.txt -status-code -title -tech-detect -o alive.txt

实战要点(直接来自红队经验):

□ 子公司关联域名:企查查/天眼查扩攻击面(大公司攻小公司再横向)
□ 优先关注: 测试环境(test./dev./staging.)和新上线系统(防护最弱)
□ 证书透明度(crt.sh)是隐藏域名的金矿
□ 历史 DNS(SecurityTrails/微步)可能找到已下线但仍在解析的子域

端口与服务发现

# 全端口快速扫描
naabu -l all_subs.txt -top-ports 1000 -o ports.txt
# 深度扫描(存活的端口)
nmap -sV -sC -iL targets.txt -oA nmap_results
# 大规模快速(全端口 UDP/TCP 用 masscan)
masscan -p1-65535 --rate=10000 -iL targets.txt

技术栈识别(决定后续攻击面)

httpx -tech-detect -l alive.txt          # 一键识别框架
# 或手工: 响应头/页面特征/报错信息
# 识别结果决定打什么:
#   Spring Boot → actuator 泄露点(第 58 章信息泄露)
#   ThinkPHP/Struts → 历史 RCE
#   WordPress → 插件枚举(wpscan)
#   Vue/React SPA → 找 API 层(逆向前端 JS)

57.3 敏感信息泄露狩猎(最高性价比)

GitHub 搜索(内部代码泄露)

# 语法: org:<公司> <关键词>
org:Company filename:.env password
org:Company filename:config.yml secret
org:Company "jdbc:mysql" password
org:Company "mongodb://" connection
org:Company filename:.npmrc _authToken
org:Company "BEGIN RSA PRIVATE KEY"

Google Dork(公开索引)

site:target.com filetype:sql
site:target.com inurl:admin
site:target.com ext:conf|cfg|ini
site:target.com intitle:"index of" /uploads
site:target.com intext:"api_key"

JS 文件中的密钥(前端逆向衔接)

# 从 JS 文件提取 API Key/密钥(第 13 章前端逆向的入口)
cat js_urls.txt | while read url; do
  curl -s "$url" | grep -oP '(api[_-]?key|secret|token|password)\s*[:=]\s*["\047][^"\047]+'
done

高价值目标(找到什么最值钱)

□ 云服务 AK/SK(阿里云/AWS/Azure)—— 直接接管云资源
□ 数据库连接字符串 —— 直连数据库
□ JWT 密钥 —— 伪造任意用户身份
□ 内部 API 文档 —— 完整攻击面图纸
□ VPN/堡垒机凭据 —— 直达内网

57.4 目录与接口枚举(找隐藏入口)

目录爆破

ffuf -u https://target.com/FUZZ -w /path/to/SecLists/Discovery/Web-Content/common.txt
# 大字典(慢但全)
ffuf -u https://target.com/FUZZ -w SecLists/Discovery/Web-Content/raft-large-directories.txt
# 过滤响应大小(-fs 0 = 排除空响应)

参数发现(隐藏功能入口)

# 常见参数名爆破(debug/admin/test/url/redirect...)
ffuf -u "https://target.com/api?FUZZ=test" -w SecLists/.../burp-parameter-names.txt -fs 0

虚拟主机发现(多站点共享 IP)

ffuf -u https://target.com -H "Host: FUZZ.target.com" -w subdomains.txt -fs 0

57.5 常用枚举工具链

工具 用途 一句话
subfinder / amass 子域被动收集 三条数据源合并
httpx 存活/技术栈/标题 一键过滤
nmap / masscan / naabu 端口扫描 快慢搭配
ffuf / gobuster / dirb 目录/参数/子域爆破 ffuf 最快
nuclei 漏洞扫描 模板化验证(第 57.6)
wpscan WordPress 专项 插件/主题/用户枚举
Shodan / FOFA / Censys 互联网资产测绘 历史端口/设备指纹

57.6 Nuclei 模板扫描(一键验证已知漏洞)

# 全量模板扫描
nuclei -u https://target.com -o results.txt
# 按类型
nuclei -u https://target.com -t cves/ -t exposures/configs/
# 批量目标 + 速率控制
nuclei -l targets.txt -rate-limit 50
# 输出: 命中模板=已验证的漏洞(比手工判断可靠)

使用原则:nuclei 是"已知漏洞验证器",不是"未知漏洞发现器"。跑完 nuclei 没结果 ≠ 安全——它只覆盖已入模板的漏洞。

57.7 Burp Suite 使用基础(Web 渗透主力工具)

核心模块:
  Proxy: 拦截/修改请求(所有测试的入口)
  Repeater: 手工修改重放请求(精确测试)
  Intruder: 自动爆破(参数枚举/密码爆破)
  Scanner: 自动扫描(辅助,别全信)
  Collaborator: 带外检测(OOB/盲注检测)

基础工作流:
  1. 浏览器代理指向 Burp
  2. Proxy 观察所有请求 → 目标清单
  3. 可疑请求 → Repeater 手工测试
  4. 需要枚举 → Intruder 配置 payload
  5. 盲测 → Collaborator 验证带外回调

57.8 信息收集检查清单

□ 主域+全部子域(被动+证书日志)
□ 存活与端口服务清单
□ 技术栈识别(框架/语言/中间件)
□ GitHub/Google 敏感信息
□ JS 文件密钥提取
□ 目录/参数/虚拟主机枚举
□ 已知漏洞模板扫描(nuclei)
□ 备份/调试/文档泄露点检查(第 58 章信息泄露)
□ 所有发现归档(URL/端口/版本/凭证)——后续每一章都要用

动手练习

  1. 对一个你授权的测试目标(或 DVWA/bwapp 本地靶场)跑完整的子域+目录枚举流程。
  2. 用 crt.sh 查一个域名的证书日志,找出 3 个"看起来不该存在"的子域。
  3. 用 ffuf 做目录+参数双枚举,把结果按"高价值/普通/噪音"分类。
  4. 搭一个 DVWA 靶场,跑一遍 nuclei 模板扫描,对比扫描结果与手工验证。

深入阅读

  • 仓库:skills/pentest-tools/SKILL.md(渗透工具链总纲)
  • 仓库:skills/pentest-tools/references/web-attack-cheatsheet.md(Web 漏洞速查)
  • 仓库:skills/attack-chain/SKILL.md(信息收集阶段:资产测绘/泄露狩猎/员工画像)
  • 仓库:skills/pentest-tools/references/awesome-pentest-digest.md(工具资源清单)