用途
hunt-race-condition 是一个专注于竞态条件漏洞的狩猎技能,来源于 elementalsouls/claude-bughunter。它由 12 份公开漏洞赏金报告构建,涵盖现代 HTTP/2 单包攻击案例。竞态条件被认为是高严重性发现,因为它打破金融、访问控制和完整性假设,而这些假设通常很少被防守方进行压力测试。
主要能力
- 提供两种攻击触发形态:
- 相同副本竞态:一次性并发触发同一请求的 N 份相同副本(限制溢出,如优惠券/礼品卡双花、突破每用户配额)。成功条件为 N 个请求中至少 2 个返回 2xx。
- 不同请求竞态(部分构造):在一个同步窗口内触发一组不同请求,多轮重复。适用于先注册后确认 / TOCTOU 竞态,即对象在创建中途处于可用状态的场景。示例为邮箱验证绕过:注册任意邮箱,然后在构造窗口期内用空白令牌确认。
- 给出高价值目标类别(Crown Jewel Targets):货币/信用系统、投票/声誉操纵、账户限制绕过、权限提升、删除绕过、支付流程。
- 列出最佳付款资产类型:金融科技应用、具有信用/订阅模式的 SaaS 平台、具有声誉系统的社交平台、电商结账流程、OAuth/SSO 令牌端点。
使用方式
技能内容包括可参考的攻击面信号:
- URL 模式(如 /vote、/redeem、/purchase、/transfer、/invite、/upgrade、/delete 等)
- 响应头信号(X-RateLimit-*、X-Request-Id、缺少 Cache-Control)
- JavaScript 模式 grep(客户端禁用按钮、乐观 UI 更新、无锁的顺序异步调用)
- 技术栈信号(Rails 无 with_lock、Node.js 异步链、PHP 无 SELECT ... FOR UPDATE、微服务、Redis 计数器、消息队列)
并给出逐步狩猎方法论:枚举一次性/限量动作、理解状态机、捕获干净基线请求、架设并行请求工具、执行竞态、分析响应、验证效果、确定可利用窗口、跨账户类型测试、记录可复现性。
信号内容包括工具示例:Turbo Intruder(engine=Engine.BURP2,单包)、curl 后台并行、Python asyncio 竞态脚本;源码审计 grep 模式;HTTP/2 单包检查命令。
适用场景
适用于授权安全测试与漏洞赏金场景中,对一次性、限量或扣减余额类动作进行竞态条件验证,覆盖投票、兑换、支付、注册确认、配额与权限等流程。
限制
原文指出竞态需要请求在同一狭窄窗口内到达,顺序发送永远不行,且报告前需满足 Gate 0 验证:能证明同一一次性动作成功多次、有可量化损害、能在 10 分钟内从零复现(至少 3/5 次)。若需要无法可靠控制的完美时序,则可利用性主张较弱。