侦察实战指南 — 漏洞赏金猎人实用手册(2025)
侦察环节贡献了80%的实际价值。优秀的侦察能发现其他猎人错过的有趣攻击面:隐藏的API、管理员端点、JS暴露的功能、子域名孤岛和配置错误。本指南将带你从心态建设 → 被动OSINT → 主动枚举 → 验证 → 结果整理 → 可执行的后续步骤。
心态与目标
目标:绘制攻击面,发现有趣端点,创建用于手动测试的优先级目标列表。
- 质量优于数量:一个有上下文的高质量目标胜过数百个嘈杂结果
- 有条不紊:遵循可重复步骤并记录所有内容(时间戳+命令+输出)
- 保持合法:仅测试范围内的资产并遵守项目规则
阶段概述
- 被动OSINT(无交互)
- 资产发现(子域名、主机、IP)
- 内容发现(端点、JS、API)
- 主动枚举(探测、模糊测试)
- 验证与可利用性检查
- 分类与优先级排序
- 报告就绪的成果物
1) 被动OSINT — 低风险金矿
目的:在不接触目标的情况下收集名称、域名、邮箱格式、技术栈提示、公开的S3/存储泄漏和第三方服务。
检查事项:
- 公司域名和拥有的域名(企业、开发、预发布、营销)
- 公共GitHub/GitLab仓库中的密钥、配置或端点
- 证书透明性(CT)日志中的子域名
- 招聘信息(技术栈提示、内部工具)
- 通过已知桶枚举模式的公共云资产(S3、GCS、Azure blob)
- 来自公共源的DNS记录(TXT、SPF、DMARC、CNAME链)
- 第三方服务:CDN、分析、错误报告服务(Sentry)和身份提供商
输出: 维护CSV/Markdown表格:域名、资产类型、证据链接、备注、是否在范围内(是/否)
2) 资产发现 — 子域名和主机
目的:枚举公司拥有(或看似相关)的每个域名和主机。
常用方法(组合多个来源):
- 被动来源:CT日志、DNS历史、公共SSL证书、公共档案
- 字典暴力破解(谨慎):子域名字典、排列组合、通配符检查
- 区域传输(罕见但需检查)
- 第三方索引:Shodan、Censys(如果在范围内/允许)
必备工具和示例用法:
subfinder— 快速被动发现amass— 被动+主动枚举和图形化- 示例:
amass enum -passive -d example.com assetfinder— 快速被动列表crt.sh或API查询证书透明性(脚本或Web UI)获取证书子域名dig/host/dnsenum用于DNS查找- 如果范围允许,谨慎使用
gobuster/subbrute暴力破解子域名
提示:尽早过滤通配符记录(通过随机子域名检查检测)以避免噪音
3) 端口和服务枚举(非破坏性)
目的:查找服务、管理面板、SSH/SMB暴露、配置错误的HTTP端口。
方法:
- 使用masscan(非常快,但保守使用)或naabu进行轻量级端口扫描
- 对识别的开放端口使用nmap进行服务/版本检测:
- 示例:
nmap -sV -p- --min-rate 1000 -T4 target.com(仅当允许时) - 横幅抓取和快速指纹识别(服务器、Web框架、版本)
始终尊重项目规则:许多漏洞赏金项目禁止激进扫描 — 默认使用安全速率,不确定时询问。
4) 内容发现 — 查找隐藏端点和API
目的:查找JavaScript暴露的端点、API端点、管理员路径和Web资产中引用的端点。
技术和工具:
- JS发现:收集所有.js文件(来自爬取+站点地图+assetlinks+robots+CT日志),然后解析它们以获取端点、端点模式、密钥、API主机和功能标志。
- 工具:httpx用于检查,linkfinder,getJS脚本,或gau(获取所有URL)
- 爬取和蜘蛛:使用waybackurls、gau、hakrawler、Burp爬虫或scrapy收集端点和参数
- 站点地图和robots:始终检查/sitemap.xml和robots.txt以获取有趣路径
- GraphQL/Swagger/OpenAPI:搜索模式定义、API文档或开发者门户
- JS源代码分析:搜索硬编码端点、密钥或揭示管理员端点的逻辑
示例轻量命令:
|
|
5) API指纹识别和映射
目的:映射所有API路由、认证方法、速率限制、参数类型和有趣参数(ID、令牌)。
步骤:
- 通过收集的JS和爬取结果枚举端点
- 使用httpx/ffuf检查端点的状态码和行为
- 对于REST API:识别JWT、cookie与令牌认证、常见头部要求
- 对于GraphQL:如果允许,运行内省,列出查询/变更
- 记录典型参数名称(id、userId、accountId、admin、token)。这些指导IDOR和基于参数的测试
命令:
|
|
6) 密钥发现和泄露凭据
目的:查找意外提交的密钥或配置错误。
查找位置:
- 公共GitHub仓库(搜索ENV、AWS、TOKEN、API_KEY、DB_HOST)
- JS文件中的API密钥或端点
- Wayback/Archive.org中的旧配置文件
- 具有公共列表或已知命名模式的S3/GCS桶(appname-assets、company-backups)
工具:
- GitLeaks/truffleHog用于扫描仓库快照(被动)
- 对公共仓库克隆使用gitleaks(尊重范围和法律)
7) 模糊测试和端点发现(受控主动)
目的:查找隐藏参数、文件和端点 — 谨慎使用。
技术:
- 使用ffuf和大/更智能字典(为目标定制)进行目录模糊测试
- 使用burp intruder或ffuf参数模式进行参数模糊测试以发现未知参数
- 从发现的路径进行端点排列(添加/删除尾部斜杠、扩展名)
示例:
|
|
注意:激进的模糊测试可能触发WAF或超出范围。
8) 数据丰富和指纹识别
目的:为每个资产添加上下文,以便快速分类和有效手动测试。
每个资产收集内容:
- URL/端点
- 方法(GET/POST)
- 状态码/行为
- 参数(和样本值)
- 观察到的认证(无、cookie、令牌)
- 技术栈(服务器、框架)
- 要测试的潜在问题类型(IDOR、XSS、SSRF、RCE、逻辑)
- 证据(请求/响应转储、JS片段)
- 优先级分数(1-10)
将其保存在电子表格或小型数据库(CSV、Notion或Obsidian)中。包括指向存储的请求/响应捕获的链接。
9) 验证和快速检查(为手动测试做准备)
在投入手动时间之前,运行快速验证测试以确定优先级:
- 检查端点是否接受任意ID或对象引用(IDOR候选)
- 在参数或头部尝试简单的反射XSS载荷
- 使用小载荷测试上传端点以检查验证
- 对于受认证保护的API,如果你有低权限用户令牌,则测试基于角色的端点
- 对于云资产,测试公共可列表性(无破坏性访问)
记录所有内容:精确的curl命令、样本响应以及此端点为何看起来有趣。
10) 组织结果 — 你的侦察驾驶舱
良好的侦察输出是可操作的。使用:
- CSV/电子表格的列:id、域名、url、方法、状态、参数、认证、技术、证据链接、优先级、备注、已测试(是/否)
组织工具:
- Notion/Obsidian用于链接笔记和发现
- Git仓库(私有)存储PoC和日志
- 简单的SQLite/CSV用于快速查询和导出到报告
11) 自动化和可重复性
使侦察成为可重复的工作流:
创建脚本:运行子域名发现 → 过滤通配符 → 获取JS → 解析端点 → 去重 → 运行httpx检查 → 输出结构化CSV。
对范围内资产安排每日/每周侦察运行以捕获新端点。
自动化低风险检查(状态码更改、新JS文件),但始终手动验证有趣发现。
示例简单流水线(概念性):
|
|
12) 优先级评分标准(如何选择手动测试内容)
对每个发现评分:
- 可利用性(E):可利用的可能性?(1-5)
- 影响(I):可能的损害?(1-5)
- 难易度(A):验证速度?(1-3)
- 新颖性(N):是否已知/过度搜索?(-1到+1)
简单优先级 = (E * I * A) + N。首先关注高分项。
13) 捕获报告成果物
对于要报告的任何内容,捕获:
- 完整HTTP请求(curl或Burp原始)
- 带头的完整HTTP响应
- 显示影响的截图或短屏录制
- 重现问题的短PoC脚本或curl命令
- 测试使用的时间和环境(IP、用户代理)
这些使分类快速并增加奖励机会。
14) 常见陷阱及避免方法
- 过于嘈杂:如果项目禁止,不要在面向公众的资产上运行大型扫描
- 通配符噪音:尽早检测通配符DNS
- 超出范围测试:保持清晰的范围内域名列表
- 无上下文:不要提交原始输出 — 丰富其重要性说明
- 笔记不佳:始终时间戳并保存使用的命令
15) 道德和法律检查清单
- 开始前确认范围
- 尊重速率限制和DoS保护
- 不要公开外泄或暴露用户数据
- 遵循披露规则和时间表
快速侦察检查清单(可打印)
- 添加目标到跟踪器(域名、范围)
- 被动:CT日志、GitHub、Wayback、招聘帖子、社交
- 子域名枚举:subfinder、amass、crt.sh
- 存活检查:httpx/naabu
- JS收集:gau/wayback/爬取
- 端点解析:linkfinder/自定义正则
- API指纹识别:识别认证+速率限制
- 目录模糊测试(保守):ffuf
- 快速验证:IDOR检查、简单XSS、SSRF探测
- 优先级排序和安排手动测试
- 保存PoC成果物并写初始笔记
示例侦察输出片段(CSV)
|
|
最终想法 — 精准操作,而非散弹枪
良好的侦察是耐心+模式识别。构建自动化流水线来处理无聊的聚合,但始终手动阅读JS并遵循应用逻辑。最高价值的漏洞来自理解应用各部分如何组合 — 而不是用嘈杂的扫描器轰炸它。
作者:Monu Jangra 安全研究员 | 渗透测试员 | 漏洞赏金猎人
漏洞赏金不是运气。它是耐心、模式识别和坚持。每个人都从零知识开始 — 唯一的区别是谁坚持到底。
所以,从小开始,每日学习,庆祝每一份报告 — 即使是重复的。因为当你找到第一个有效漏洞并看到"已奖励"状态的那一天…那种感觉是无与伦比的。🏆