官网:http://securitytech.cc/
高级狩猎 | 在 2025 年仍然有效的 7 种漏洞赏金实战技巧

大多数猎手会扫描端点并运行自动化的侦察。资深猎手会绘制数据流、滥用服务间微小的信任假设,并写出能教会别人的复现步骤。这就是为什么有的报告只值 50 美元,而有的能拿到 5k+ 美元的差别。
下面我把七种高级技巧浓缩出来——每种都带有简短的、在实验室安全的示例、最小可复现流程(你可以在自己环境重现)和可直接复制进报告的缓解建议。用这些技巧提升你的狩猎能力和报告质量。
1. 把小的信任缺口串起来 → 产生大的影响
核心思想: 各个服务往往以不同方式验证输入。如果你把数据流(上传 → 处理器 → webhook → 内部服务)绘出来,每一段的小假设会串联成严重的安全问题。
实验室示例: 图片上传端点存储文件,后台任务抓取并规范化它们,然后 webhook 通知内部索引服务,索引服务会去抓取这些文件。
实验室可复现(已消毒):
- 上传包含 SVG polyglot 有 payload 的
avatar.svg到/api/upload。 -
- 触发处理:
POST /api/process?id=<file-id>。
- 触发处理:
-
- 观察你控制的 OOB(out-of-band)服务器收到来自内部 webhook 的请求,内部服务在抓取上传的文件。
影响: 可能导致 SSRF、HTML 注入或内部请求执行,从而触及敏感端点。
缓解建议: 在每一段把上传内容当作不可信数据处理。尽早进行规范化/消毒,并在任何消费者处理或抓取远程资源前重新校验。对内部抓取使用签名 URL,拒绝危险协议(如 file://、gopher://)和已知的元数据 IP。
2. 让盲/异步流程“变响亮”(为盲漏洞做 OOB 检测)
核心思想: 如果生产者写入的数据是消费者稍后读取并执行的,你通常需要 OOB 来检测影响。让这个流程在实验室里变得“响亮”和可观测。
实验室示例: 一个队列消费者从数据库读 URL 并发起 HTTP 请求。
实验室可复现(已消毒):
- 在数据库插入一条记录,
callbackUrl = https://<unique-id>.collab-domain.com/p?x=1(通过允许的端点)。 -
- 触发消费者,或等其计划运行。
-
- 在你的 collaborator 的 DNS/HTTP 日志中观察访问和请求头。
为何可行: 生产者接受用户输入,但消费者以不同权限执行且不做重新校验。
缓解建议: 在消费者执行前对 URL 做签名或溯源校验。使用允许列表并要求内部调用带认证令牌。
3. Token 编排 — 要像系统在思考
核心思想: 令牌不是孤立存在的。刷新令牌、访问令牌、cookie 和内部令牌交换端点之间的相互作用会产生机会。这不是暴力破解,而是关于重放、重用或内部/外部令牌流程混淆。
实验室示例: 刷新令牌存放在 cookie;内部的令牌交换端点信任该刷新令牌来铸造会话。
实验室可复现(已消毒):
- 在实验环境捕获一个刷新令牌。
-
- 将其重放到后台服务使用的令牌交换端点(如果在你的实验环境可访问)。
-
- 观察是否被铸造出新的访问令牌,或在没有额外客户端检查的情况下恢复会话。
影响: 会话接管、权限升级。
缓解建议: 将令牌绑定到客户端属性(指纹)、audience 声明或短 TTL;在刷新操作上实现服务端检查;维护刷新令牌撤销列表。
4. GraphQL 解析器与批处理 — 权限混合问题
核心思想: 批量端点和隔离不充分的解析器可能导致低权限操作触发高权限副作用或数据泄露。
实验室示例: POST /graphql/batch 接受一组操作并在共享上下文中执行。
实验室可复现(已消毒):
- 构造一个包含公共查询与依赖服务器端缓存上下文的受保护解析器的批次。
-
- 用非特权账户发送该批次,观察是否泄露受保护数据或发生副作用。
缓解建议: 对每个操作单独强制认证,限制批处理大小,避免解析器之间共享可变状态。谨慎缓存上下文并隔离解析器执行环境。
5. 序列化与模板上下文攻击
核心思想: 结构化数据解析器和模板引擎会被滥用,尤其当代码路径重用解析器或在提升权限的上下文渲染用户提供的模板时。
实验室示例: 应用接受 YAML 来配置仪表盘,并且对管理员模板使用相同的解析器。
实验室可复现(已消毒):
- 提交带别名/锚点的 YAML,改变对象形状。
-
- 在安全渲染器提交像
{{this.constructor.prototype}}的用户模板,并观察当管理员模板解析相同输入时的差异。
- 在安全渲染器提交像
影响: 逻辑变化、数据泄露,或在某些解析器/渲染器上导致远程代码执行(RCE)。
缓解建议: 使用严格的 schema 验证,为管理员数据和用户数据使用不同解析器,沙箱化模板。避免 eval 式行为,限制解析器功能(如果不需要就禁用 anchors/aliases)。
6. HTTP 不一致 / 代理与源站解析差异
核心思想: CDN、代理和源站可能以不同方式解析请求。这种不一致会导致缓存中毒、认证绕过或路由错误。
实验室示例: 代理在存在重复头时,和源站对头做了不同的规范化处理。
实验室可复现(已消毒):
- 在受控实验中发送带重复头、混合
Transfer-Encoding/Content-Length或经编码的 CRLF(%0d%0a)的请求。 -
- 比对边缘(edge)日志与源站日志看到的内容。
缓解建议: 在边缘对请求做规范化与归一化;拒绝歧义请求。确保整套系统中解析行为一致。
7. Fuzz “无害” 标志与 UX 参数
核心思想: 为了 UX 或开发便利新增的参数(如 next、redirect、debug、as_user)在组合或被滥用时经常会翻转逻辑。
实验室示例: ?next=/admin&as_user=true 导致本应只给管理员的逻辑路径被触发。
实验室可复现(已消毒):
- 找出 UX 标志并 fuzz 其组合,观察可能改变代码路径的情况。
-
- 自动化简单排列组合,查找逻辑翻转或未授权路径。
缓解建议: 把 UX 标志当作不安全输入;在服务端强制执行不变量,不允许用户控制的标志来决定权限检查。
可直接粘贴到报告的复现模板
把下面精简且可教学的模板放进你的报告里,加速 triage 并突出影响:
- (已消毒)复现步骤:
- 上传
malicious.svg到/api/upload(作为avatar.svg)。 -
- 触发
/api/process?id=<file-id>(后台 worker 抓取)。
- 触发
-
- 观察到:
GET http://169.254.169.254/latest/meta-data/被请求到你的 OOB 域。
- 观察到:
- 观测到的行为: 内部 worker 通过我们的 collaborator 域请求了实例元数据。
-
- 影响: 可能导致云元数据泄露 → 凭证访问。
-
- 建议修复: 让坚固(hardened)的 worker 处理上传并使用签名 URL;拒绝对元数据 IP 与高风险协议的抓取;在每一跳做消毒/校验。