Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/bogdanticu88/ratrace
漏洞扫描器漏洞利用脚本与自动化API安全测试Web安全模糊测试渗透测试DevSecOps
GitHubbogdanticu88/ratrace

RatRace

一个用于系统检测和利用 Web 应用程序、API 及现代服务中竞争条件的轻量级 CLI 工具。

查看仓库
104个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

RatRace

RatRace - 竞争条件测试工具包

一款轻量级CLI工具,用于系统性地检测和利用Web应用、API及现代服务中的竞争条件漏洞。



Go Version License Status Platform Security Build


解决的问题

竞争条件是现代应用中最具破坏性的安全漏洞之一,然而自动化扫描器对此类问题的覆盖依然不足。Nuclei、ffuf、sqlmap等工具擅长发现静态漏洞,但从根本上无法识别基于并发的安全问题。

渗透测试人员面临两难选择:要么为每次测试手动编写一次性脚本,要么完全跳过竞争条件测试。这两种方案都不可扩展,也不够专业。

RatRace 通过提供一个精致且可重复的竞争条件测试工作流解决了这一难题——将以往临时拼凑的脚本过程转变为系统化的流程,可与CI/CD流水线集成,并生成专业报告。

真实世界的影响

竞争条件漏洞经常出现在高影响领域:

  • 电子商务: 重复下单、库存超卖、折扣叠加
  • 金融科技: 双倍转账、基于竞争的权限提升、交易重放
  • 身份验证: Token耗尽、会话固定、并发密码重置
  • 速率限制: 通过并发请求绕过、分布式滥用

这些漏洞在漏洞赏金项目中通常获得最高赏金,因为它们直接威胁到企业收入和客户信任。


核心能力

模板驱动测试

用YAML定义竞争场景一次,即可在多个项目中复用。格式仿照Nuclei模板,便于上手:

root@kitploit:~
id: checkout-race
info:
  name: 下单重复竞争
  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

多种攻击模式

爆发模式 — 基于goroutine的并行请求,精确同步(稳定,生产就绪)

  • 启动N个goroutine,以微秒级精度同步
  • 适用于大多数竞争窗口>5ms的应用程序

最后字节同步 — HTTP/1.1 TCP层攻击(实现就绪,测试阶段)

  • 将所有连接保持在请求体的最后一个字节
  • 通过close()广播释放,适用于亚毫秒级窗口
  • 对负载均衡和速率限制的目标有效

单包模式 — 基于HTTP/2帧的攻击(实现就绪,测试阶段)

  • 将所有请求在一个TCP段中发送
  • 利用多路复用实现几乎同时到达服务器
  • 绕过某些速率限制机制

智能验证

RatRace自动执行:

  • 根据状态码+响应体哈希对响应进行指纹识别,检测异常
  • 聚类结果,识别具有统计显著性的差异
  • 基于异常频率和幅度计算置信度得分
  • 执行后续请求确认状态变更(例如,“商品真的被购买了两次吗?”)
  • 支持带有运算符的条件验证:equals、not_equals、greater_than、contains

工作流集成

导入现有请求:

root@kitploit:~
# 从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自动化:

root@kitploit:~
ratrace race -u $TARGET -t template.yaml --silent
echo $?  # 退出码10=发现竞争,0=未发现

专业报告生成:

root@kitploit:~
# JSON格式用于自动化
ratrace race -u $TARGET -t template.yaml -o results/

# HTML报告(计划V2)
ratrace report --input results.json --format html

安装

从源码安装

root@kitploit:~
git clone https://github.com/bogdanticu88/ratrace.git
cd ratrace
go build ./cmd/ratrace
./ratrace --help

要求: Go 1.24+

Docker

root@kitploit:~
docker build -t ratrace:latest .
docker run --rm -it ratrace:latest race -u https://api.example.com -t template.yaml

使用方法

快速开始:执行一次竞争测试

root@kitploit:~
# 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. 查看发现结果
# 输出显示:
# 🔴 [严重] 下单重复竞争
#     异常率: 91.7%
#     置信度:   84%

示例:电子商务下单竞争

root@kitploit:~
ratrace race \
  -u https://shop.example.com \
  -t examples/templates/checkout-race.yaml \
  -m burst \
  -c 25 \
  --output results/

示例:静默模式(用于CI/CD)

root@kitploit:~
# 运行时不输出详细日志,以语义退出码退出
ratrace race -u https://api.example.com -t template.yaml --silent

# 检查退出码
if [ $? -eq 10 ]; then
  echo "发现竞争条件!"
  exit 1
fi

命令参考

race — 执行竞争攻击

root@kitploit:~
ratrace race -u <url> -t <template> [options]

选项:
  -m, --mode string          burst|lastbyte|singlepacket(默认使用模板中的设置)
  -c, --concurrency int      Goroutine数量(默认20)
  -H, --header strings       自定义请求头(可重复)
  -x, --proxy string         请求使用的代理URL
  -o, --output string        结果输出目录
  --timeout duration         请求超时(默认10s)
  --insecure                 跳过TLS证书验证
  --dry-run                  解析模板后退出
  --silent                   抑制日志,仅显示发现结果

import — 将请求转换为模板

root@kitploit:~
ratrace import [--curl <command> | --har <file>] -o <output.yaml>

将现有请求(curl命令或HAR导出)转换为RatRace模板。
适用于与现有工作流集成。

report — 生成报告

root@kitploit:~
ratrace report --input results.json --format [html|json] --output report.html

从竞争测试结果生成人类可读的报告。

ratelimit — 测试速率限制绕过

root@kitploit:~
ratrace ratelimit -u <url> -c <concurrency>

测试端点是否容易受到并发速率限制绕过攻击。

模板格式

模板是定义竞争场景的YAML文件。完整参考:

root@kitploit:~
id: unique-identifier
info:
  name: "人类可读的名称"
  severity: critical|high|medium|low|info
  tags: [tag1, tag2]

race:
  mode: burst|lastbyte|singlepacket
  concurrency: 20
  request:
    method: POST|GET|PUT|DELETE|PATCH
    path: /api/endpoint
    headers:
      Authorization: "Bearer {{token}}"
      Custom-Header: "value"
    body: '{"json": "body", "user": "{{user_id}}"}'

validate:
  follow_up:
    method: GET
    path: /api/orders?user={{user_id}}
  expect:
    json_field: "orders.length"
    condition: equals|greater_than|contains|not_equals
    value: 1

变量(使用 {{name}} 占位符):

  • 通过命令行请求头替换或在模板中硬编码
  • 示例:ratrace race ... -H "Authorization: Bearer {{session_token}}"

输出

终端输出

清晰、颜色编码的日志显示测试进度:

root@kitploit:~
[INF] 加载模板  path=checkout-race.yaml
[INF] 模板已加载  id=checkout-race  mode=burst
[RUN] 发起爆发攻击  concurrency=20
[INF] 所有请求完成  total=20
[RUN] 聚类响应  baseline=17  anomalous=3
[RACE] 检测到竞争条件  anomaly_rate=15%  confidence=94%
[CONF] 验证通过  field=orders.length  expected=1
[INF] 竞争测试完成  findings=1

Templates: 1  Requests: 20  Time: 3.2s

🔴 [严重] 下单重复竞争
    异常率:  15.0%
    置信度:    94%
    状态差异:   201 → 200
    字段差异:   order_id (100 → 101)

JSON结果

完整结果保存到 results_<timestamp>.json,用于自动化和存档:

root@kitploit:~
{
  "TemplateID": "checkout-race",
  "Target": "https://api.example.com/api/v1/checkout",
  "Mode": "burst",
  "Concurrency": 20,
  "TotalRequests": 20,
  "Duration": 3200000000,
  "Findings": [
    {
      "TemplateName": "下单重复竞争",
      "Severity": "critical",
      "AnomalyRate": 0.15,
      "Confidence": 0.94,
      "Diff": {
        "StatusChanged": true,
        "BaselineStatus": 201,
        "AnomalousStatus": 200
      }
    }
  ]
}

退出码

用于CI/CD集成和自动化:


开发

构建

root@kitploit:~
make build              # 编译二进制文件

测试

root@kitploit:~
make test              # 全部测试
make test-unit         # 仅单元测试
make test-int          # 集成测试
make coverage          # 覆盖率报告(HTML)

代码检查与质量

root@kitploit:~
make lint              # 运行代码检查器

示例

root@kitploit:~
make run-race          # 构建并运行示例

架构

root@kitploit:~
cmd/ratrace/
  └── main.go          入口点,CLI定义

internal/
  ├── cmd/              子命令实现
  ├── engine/           竞争攻击模式(burst, lastbyte, singlepacket)
  ├── validator/        响应聚类、差异对比、后续检查
  ├── importer/         HAR和curl解析器
  ├── reporter/         JSON和HTML输出
  ├── template/         YAML解析与模板引擎
  ├── log/              结构化彩色日志
  └── models/           共享数据类型

状态与路线图

V1(当前版本)

  • ✅ 带有goroutine同步的爆发模式
  • ✅ 响应聚类与异常检测
  • ✅ 置信度评分
  • ✅ 带条件的后续验证
  • ✅ HAR/curl导入
  • ✅ JSON输出
  • ✅ CI/CD静默模式
  • ⏳ 最后字节同步模式(实现就绪,需要测试)
  • ⏳ 单包模式(实现就绪,需要测试)

V2(计划)

  • HTML报告生成
  • PoC脚本生成
  • 速率限制绕过专用功能
  • Burp Suite XML导入
  • gRPC竞争测试
  • WebSocket竞争测试
  • 模板注册库与社区模板
  • Nuclei集成

贡献

欢迎提交Issue、PR和模板贡献。请确保:

  • 代码遵循代码库中的现有模式
  • 测试通过:make test
  • 代码检查通过:make lint

许可证

MIT


免责声明

RatRace专为授权安全测试、漏洞赏金计划和渗透测试设计。仅在你拥有或已获得明确书面许可的系统上使用。 未经授权测试他人系统属违法行为。


作者

Bogdan Ticu — 安全研究与工程

如有问题、疑问或安全报告,请访问:GitHub Issues

下载工具
码含义
0成功 — 未发现竞争条件
3数据错误 — 模板未找到、解析错误
4执行错误 — 网络故障、引擎错误
10发现竞争条件 — 需要处理
11确认速率限制绕过
12检测到异常但验证无结论