用途
该技能用于检测和利用 Web 应用中的竞态条件(Race Condition)漏洞,特别是 TOCTOU(Time-of-Check-to-Time-of-Use,检查时与使用时)类型的缺陷。它面向授权安全测试与教育目的,帮助安全测试人员在具有状态变更操作的系统中发现逻辑漏洞。
主要能力
- 识别竞态条件攻击面,包括优惠券/折扣码兑换、账户余额转账、库存购买、限流操作(登录尝试、短信验证)、多步骤工作流(邮箱修改+密码重置)、文件上传与处理流水线等。
- 使用 Burp Suite 的 Turbo Intruder 扩展配置单包攻击(single-packet attack),将多个 HTTP/2 请求放入一个 TCP 包中同时发送,实现精确同步。
- 执行限制超限(Limit Overrun)攻击,例如并发发送多个优惠券兑换请求以绕过一次性使用限制。
- 利用多端点竞态条件,例如同时修改邮箱和触发密码重置。
- 提供 Python threading 替代方案,通过屏障(Barrier)同步线程启动并发请求。
- 分析结果并确认利用是否成功,包括按状态码排序、比较响应长度、验证后端状态(余额、库存、优惠券计数)等。
使用方式
- 在 Burp Suite 中捕获目标请求,发送至 Turbo Intruder。
- 编写 Turbo Intruder 脚本,使用 RequestEngine 和 gate 机制排队并同时释放请求。示例脚本中设置 concurrentConnections=1、engine=Engine.BURP2,并通过 engine.queue(target.req, gate='race1') 和 engine.openGate('race1') 实现同步。
- 对于多端点竞态,可分别构造两个请求(如修改邮箱和触发密码重置),使用同一 gate 同时释放。
- 也可使用 Python threading 与 requests 库,通过 threading.Barrier 同步多个线程并发发送请求。
- 在 Turbo Intruder 结果中分析状态码和响应长度,确认是否有多个请求成功,并验证后端状态。
适用场景
- 测试具有交易功能的应用(支付、转账、优惠券)。
- 评估限流或尝试限制机制。
- 测试多步骤工作流(注册、密码重置、MFA)。
- 在漏洞赏金中寻找状态变更操作的逻辑缺陷。
- 评估具有库存或余额管理系统的应用。
前提条件
- 安装有 Turbo Intruder 扩展的 Burp Suite Professional。
- 理解 HTTP/2 单包攻击技术。
- 具备编写自定义 Turbo Intruder 脚本的 Python 能力。
- 了解 TOCTOU 漏洞。
- 目标应用具有状态变更操作(购买、投票、转账)。
- 多个用户账户用于测试跨用户竞态条件。
关键概念
- TOCTOU:状态在验证与操作之间发生变化的缺陷。
- 单包攻击:在一个 TCP 包中发送多个 HTTP/2 请求以实现精确同步。
- 最后字节同步(Last-Byte Sync):HTTP/1.1 技术,保留多个请求的最后一个字节然后同时释放。
- 限制超限:利用验证逻辑中的竞态窗口超过一次性使用限制。
- 隐藏状态机:利用多步骤应用工作流中的过渡状态。
- Gate 机制:Turbo Intruder 功能,保持请求直到全部排队后同时释放。
- 连接预热:预先建立连接以减少竞态条件攻击中的网络抖动。
工具与系统
- Turbo Intruder:Burp Suite 扩展,用于高速竞态条件利用。
- Burp Suite Repeater:分组发送功能用于基本竞态条件测试。
- Nuclei:基于模板的扫描器,带有竞态条件检测模板。
- Python threading:自定义多线程竞态条件脚本。
- racepwn:专用竞态条件测试框架。
- asyncio/aiohttp:Python 异步 HTTP 用于并发请求发送。
常见场景
- 优惠券双花:在服务器标记优惠券已使用之前,并发发送兑换请求多次使用一次性优惠券。
- 余额透支:通过同时发送多个转账请求,每个都通过余额检查,从而转移超过可用余额的资金。
- MFA 绕过:同时提交多个 MFA 码以绕过验证尝试的限流。
- 库存操纵:利用库存递减逻辑中的竞态条件购买超过可用库存的商品。
- 账户注册绕过:通过并发提交注册请求,使用同一邮箱创建多个账户。
输出格式
该技能提供竞态条件评估报告模板,包含目标、技术、并发请求数、成功利用次数、发现表格(端点、操作、预期、实际、严重性)、竞态窗口分析(如 HTTP/2 单包攻击可靠利用时间小于 30 秒,成功率约 20%,竞态窗口估计 50-100ms)以及修复建议(数据库级锁定 SELECT FOR UPDATE、乐观并发控制与版本号、幂等键、分布式锁)。
限制
- 仅限授权安全测试和教育用途。未经授权对不拥有或未获书面许可的系统使用是违法的,可能违反计算机欺诈法律。
- 需要 Burp Suite Professional 和 Turbo Intruder 扩展。
- 需要目标应用具有状态变更操作和多个用户账户。
- 基于线程的方法可靠性较低,竞态窗口时间因目标而异。