第 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/端口/版本/凭证)——后续每一章都要用
动手练习
- 对一个你授权的测试目标(或 DVWA/bwapp 本地靶场)跑完整的子域+目录枚举流程。
- 用 crt.sh 查一个域名的证书日志,找出 3 个"看起来不该存在"的子域。
- 用 ffuf 做目录+参数双枚举,把结果按"高价值/普通/噪音"分类。
- 搭一个 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(工具资源清单)