漏洞挖掘方法论
漏洞挖掘不是漫无目的地乱试工具,而是一套"扩大攻击面 → 系统性测试 → 验证上报"的方法论。这篇先讲清楚漏洞挖掘的整体思路、攻击面如何展开、黑白盒的区别,以及 SRC/众测中合法挖洞与负责任披露的规矩,为后面的 Fuzzing、SQLMap、CVE 复现提供框架。
只在授权范围(厂商 SRC / 众测平台明确列出的资产)或自建靶场内挖洞。越权测试、拖库、利用漏洞获利均属违法。挖到漏洞应走负责任披露流程,而不是公开或售卖。
漏洞挖掘的本质
挖洞的核心逻辑可以概括成一句话:找到所有"用户输入能影响程序行为"的地方,逐一验证程序是否做了正确处理。 任何一处"信任了不该信任的输入",就是潜在漏洞。
整个过程是漏斗形的:
### 扩大攻击面(Recon)
资产越多,洞越多。枚举子域名、IP 段、API、历史接口、JS 文件里的隐藏端点、第三方组件版本。攻击面收集得越全,命中率越高。
### 识别输入点
对每个资产,找出所有可控输入:URL 参数、POST 体、Header、Cookie、文件上传、WebSocket、GraphQL 查询等。
### 按漏洞类型系统测试
针对每个输入点,逐类验证:注入(SQL/命令/SSTI)、XSS、SSRF、越权(IDOR)、文件上传、反序列化、逻辑漏洞等。
### 验证与利用
构造最小可复现的 PoC,确认漏洞真实存在、评估影响(能读什么、改什么、拿到什么权限)。
### 报告与披露
写清复现步骤、影响和修复建议,通过官方渠道上报。
攻击面:从一个域名展开
拿到一个目标域名,信息收集决定了后续天花板:
| 方向 | 手段/工具 | 产出 |
|---|---|---|
| 子域名枚举 | subfinder、amass、证书透明度 crt.sh | 更多站点 |
| 端口/服务 | Nmap(见 Kali 章节) | 暴露的服务 |
| 目录/接口 | ffuf、feroxbuster(见下一篇) | 隐藏路径、备份文件 |
| 指纹识别 | Wappalyzer、whatweb | CMS、框架、组件版本 |
| JS 分析 | LinkFinder、手工读 JS | 隐藏 API、密钥泄露 |
| 历史资产 | Wayback Machine、Google Hacking | 废弃但仍可访问的旧接口 |
经验法则:老旧、被遗忘、非主营的资产(测试环境、旧版后台、子公司站点)往往防护最弱,是高产区域。
黑盒 vs 白盒 vs 灰盒
| 方式 | 信息掌握 | 特点 |
|---|---|---|
| 黑盒 | 只有外部访问权限 | 贴近真实攻击者视角,靠请求/响应推断;多数 SRC 众测是黑盒 |
| 白盒 | 有源代码 | 可做代码审计,从 source(输入)追到 sink(危险函数),覆盖最全 |
| 灰盒 | 部分信息(如有账号、有文档) | 结合两者,效率高 |
白盒代码审计的核心是 污点分析:追踪用户可控数据(source)是否未经充分过滤就流入危险操作(sink,如 SQL 拼接、命令执行、文件读写)。
常见漏洞类型速览
挖洞时心里要有这张"清单",对每个输入点逐项过:
- 注入类:SQL 注入、命令注入、SSTI 模板注入、LDAP/XPath 注入。
- XSS:反射型、存储型、DOM 型(见《常见 Web 漏洞》)。
- SSRF:服务端请求伪造,让服务器去访问内网/元数据接口。
- 越权(IDOR / 逻辑漏洞):改 ID 越权访问他人数据、改价、绕过支付——自动化扫不出来,最值钱。
- 文件类:上传、包含、任意文件读取/下载。
- 反序列化:Java/PHP/Python 反序列化导致 RCE。
- 信息泄露:源码备份、
.git泄露、密钥硬编码、调试接口暴露。
扫描器擅长找"注入、XSS"这类有固定特征的技术漏洞;而越权和业务逻辑漏洞需要理解业务流程、靠人工测试,恰恰是赏金最高、最难被自动化替代的部分。挖洞高手的差距主要体现在这里。
合法挖洞与负责任披露
技术之外,规矩同样重要:
- 守住授权边界:只测平台/厂商**明确列入范围(in-scope)**的资产,范围外的一律不碰。
- 点到为止:证明漏洞存在即可,不要拖库、不破坏数据、不做横向扩散、不影响线上业务。
- 负责任披露(Responsible Disclosure):私下报告给厂商,给予合理修复期后再考虑公开;不抢跑、不公开 0day、不售卖。
- 保留证据但不滥用:截图/请求包用于报告,不泄露涉及的真实用户数据。
国内可通过各厂商 SRC(如腾讯、阿里、字节)和补天、漏洞盒子等众测平台合法提交;国际上有 HackerOne、Bugcrowd。走正规平台既合法又有奖励。
最后更新于