bogdanticu88/RatRace

GitHub: bogdanticu88/RatRace

这是一个轻量级的命令行工具,用于系统化地检测和利用 Web 应用程序、API 及现代服务中的竞态条件漏洞。

Stars: 4 | Forks: 0

# RatRace
RatRace - Race Condition Testing Toolkit

A lightweight CLI tool for systematically detecting and exploiting race conditions in web applications, APIs, and modern services.

![Go Version](https://img.shields.io/badge/go-1.24.4-blue?logo=go&logoColor=white) ![License](https://img.shields.io/badge/license-MIT-green) ![Status](https://img.shields.io/badge/status-v1.0-brightgreen) ![Platform](https://img.shields.io/badge/platform-linux%20%7C%20macos%20%7C%20windows-blue) ![Security](https://img.shields.io/badge/security-pentesting-red) ![Build](https://img.shields.io/badge/build-passing-brightgreen)
## 解决的问题 竞态条件是现代应用程序中影响最大的安全漏洞之一,但自动扫描器对其的覆盖仍然不足。虽然 Nuclei、ffuf 和 sqlmap 等工具在发现静态漏洞方面表现出色,但它们根本无法发现基于并发的问题。 如今的渗透测试人员面临着一个选择:为每次项目手动编写一次性脚本,或者完全跳过竞态条件测试。这两种选择都不具备可扩展性,也不够专业。 **RatRace 解决了这个问题**,它为竞态条件测试提供了一个完善的、可重复的工作流程——将以前临时的脚本编写转变为一个系统化的过程,可以集成到 CI/CD 流水线中并生成专业的报告。 ### 现实影响 竞态条件漏洞经常出现在影响巨大的领域: - **电子商务:** 重复下单、库存超卖、折扣叠加 - **金融科技:** 双重转账、基于竞态条件的权限提升、交易重放 - **身份认证:** Token 耗尽、会话固定、并发密码重置 - **速率限制:** 通过并发请求绕过、分布式滥用 这些漏洞在漏洞赏金计划中始终能获得最高赏金,因为它们直接威胁到业务收入和客户信任。 ## 核心功能 ### 模板驱动测试 在 YAML 中定义一次竞态场景,并在项目中复用。其格式借鉴了 Nuclei 模板,以便熟悉: ``` id: checkout-race info: name: Checkout Duplicate Order Race severity: critical race: mode: burst concurrency: 20 request: method: POST path: /api/v1/checkout headers: Authorization: "Bearer {{session}}" body: '{"item_id": "SKU-001"}' validate: follow_up: method: GET path: /api/v1/orders?user={{user_id}} expect: json_field: "orders.length" condition: equals value: 1 ``` ### 多种攻击模式 **Burst 模式** — 基于 Goroutine 的并行请求,具有精确的同步功能(稳定,可用于生产环境) - 启动 N 个 Goroutine,以微秒级精度同步 - 适用于大多数竞态窗口大于 5ms 的应用程序 **Last-Byte 同步** — HTTP/1.1 TCP 级别攻击(实现就绪,测试阶段) - 将所有连接保持在请求主体的最后一个字节 - 通过 close() 广播释放,实现亚毫秒级窗口 - 对负载均衡和限速目标有效 **Single-Packet** — 基于 HTTP/2 帧的攻击(实现就绪,测试阶段) - 在单个 TCP 段中发送所有请求 - 利用多路复用实现几乎同时的服务器接收 - 绕过某些速率限制机制 ### 智能验证 RatRace 自动: - **通过状态码 + 正文哈希对响应进行指纹识别**,以检测异常 - **对结果进行聚类**,以识别具有统计学意义的差异 - **基于异常频率和幅度计算置信度分数** - **执行后续请求** 以确认状态变化(例如,“该物品是否真的被购买了两次?”) - **支持条件验证**,操作符包括:`equals`、`not_equals`、`greater_than`、`contains` ### 工作流集成 **导入现有请求:** ``` # 来自 curl 命令 ratrace import --curl 'curl -X POST https://api.example.com/checkout ...' -o template.yaml # 来自 Burp 导出的 HAR 文件 ratrace import --har session.har -o template.yaml ``` **CI/CD 自动化:** ``` ratrace race -u $TARGET -t template.yaml --silent echo $? # Exit code 10 = race found, 0 = clean ``` **专业报告:** ``` # 用于自动化的 JSON ratrace race -u $TARGET -t template.yaml -o results/ # HTML 报告(计划中的 V2) ratrace report --input results.json --format html ``` ## 安装说明 ### 从源码安装 ``` git clone https://github.com/bogdanticu88/ratrace.git cd ratrace go build ./cmd/ratrace ./ratrace --help ``` **要求:** Go 1.24+ ### Docker ``` docker build -t ratrace:latest . docker run --rm -it ratrace:latest race -u https://api.example.com -t template.yaml ``` ## 使用说明 ### 快速开始:运行竞态测试 ``` # 1. 从 curl 导入或使用现有模板 ratrace import --curl 'curl -X POST https://api.example.com/checkout ...' -o checkout.yaml # 2. 执行竞赛 ratrace race -u https://api.example.com -t checkout.yaml -m burst -c 20 # 3. 查看发现结果 # 输出显示: # 🔴 [CRITICAL] Checkout Duplicate Order Race # 异常率:91.7% # 置信度: 84% ``` ### 示例:电子商务结账竞态 ``` ratrace race \ -u https://shop.example.com \ -t examples/templates/checkout-race.yaml \ -m burst \ -c 25 \ --output results/ ``` ### 示例:静默模式(适用于 CI/CD) ``` # 在无详细日志的情况下运行,以语义代码退出 ratrace race -u https://api.example.com -t template.yaml --silent # 检查退出代码 if [ $? -eq 10 ]; then echo "Race condition found!" exit 1 fi ``` ## 命令参考 ### race — 执行竞态攻击 ``` ratrace race -u -t