Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
RatRace — Легковесный CLI-инструмент для систематического обнаружения и эксплуатации состояний гонки в веб-приложениях, API и современных сервисах. | Kitploit
Инструменты/GitHubGitHub/bogdanticu88/ratrace
Сканеры уязвимостейЭксплуатацияСкриптинг и автоматизацияТестирование безопасности APIВеб-безопасностьФаззингТестирование на ПроникновениеDevSecOps
GitHubbogdanticu88/ratrace

RatRace

Легковесный CLI-инструмент для систематического обнаружения и эксплуатации состояний гонки в веб-приложениях, API и современных сервисах.

Репозиторий
104 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

RatRace

RatRace - Набор инструментов для тестирования состояний гонки

Легковесный CLI-инструмент для систематического обнаружения и эксплуатации состояний гонки в веб-приложениях, API и современных сервисах.



Go Version License Status Platform Security Build


Какую проблему решает

Состояния гонки представляют собой одни из наиболее критичных уязвимостей безопасности в современных приложениях, однако они по-прежнему плохо покрываются автоматическими сканерами. В то время как такие инструменты, как Nuclei, ffuf и sqlmap, отлично находят статические уязвимости, они принципиально не способны выявлять проблемы, связанные с конкурентностью.

Перед пентестерами сегодня стоит выбор: вручную писать одноразовые скрипты для каждого проекта или вовсе пропустить тестирование состояний гонки. Ни один из вариантов не является масштабируемым или профессиональным.

RatRace решает эту проблему, предоставляя отлаженный, повторяемый рабочий процесс для тестирования состояний гонки — превращая то, что раньше было ad-hoc скриптингом, в систематический процесс, который интегрируется с CI/CD пайплайнами и генерирует профессиональные отчеты.

Реальное влияние

Уязвимости типа «состояние гонки» часто встречаются в критически важных областях:

  • Электронная коммерция: дублирование заказов, перепродажа товаров, наложение скидок
  • Финтех: двойные переводы, эскалация привилегий через гонку, повторное выполнение транзакций
  • Аутентификация: исчерпание токенов, фиксация сессии, одновременный сброс паролей
  • Лимитирование запросов: обход через одновременные запросы, распределенное злоупотребление

Эти ошибки стабильно приносят самые высокие вознаграждения в программах bug bounty, поскольку они напрямую угрожают доходу бизнеса и доверию клиентов.


Основные возможности

Шаблонное тестирование

Опишите сценарий гонки один раз в 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

Несколько режимов атаки

Режим Burst — параллельные запросы на основе goroutine с точной синхронизацией (стабильный, готов к использованию в продакшене)

  • Запускает N goroutine, синхронизирующихся с точностью до микросекунд
  • Идеален для большинства приложений с окном гонки >5 мс

Last-Byte Sync — атака на уровне TCP HTTP/1.1 (реализация готова, фаза тестирования)

  • Удерживает все соединения на последнем байте тела запроса
  • Освобождение через широковещательный close() для окон менее миллисекунды
  • Эффективен против балансировщиков нагрузки и целей с ограничением скорости

Single-Packet — атака на основе фреймов 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

# Из экспортированных файлов HAR из Burp
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. Просмотр результатов
# Вывод показывает:
# 🔴 [CRITICAL] Гонка дублирования заказов при оформлении
#     Уровень аномалий: 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 <команда> | --har <файл>] -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] Запуск burst атаки  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

🔴 [CRITICAL] Гонка дублирования заказов при оформлении
    Уровень аномалий:  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 (Текущий)

  • ✅ Режим Burst с синхронизацией goroutine
  • ✅ Кластеризация ответов и обнаружение аномалий
  • ✅ Оценка достоверности
  • ✅ Последующая валидация с условиями
  • ✅ Импорт HAR/curl
  • ✅ Вывод в JSON
  • ✅ Тихий режим для CI/CD
  • ⏳ Режим Last-byte sync (реализация готова, требуется тестирование)
  • ⏳ Режим Single-packet (реализация готова, требуется тестирование)

V2 (Планируется)

  • Генерация HTML-отчетов
  • Генерация PoC-скриптов
  • Специализация по обходу ограничения скорости
  • Импорт XML из Burp Suite
  • Тестирование gRPC на гонки
  • Тестирование WebSocket на гонки
  • Реестр шаблонов и шаблоны сообщества
  • Интеграция с Nuclei

Участие в разработке

Приветствуются issues, PR и вклад в шаблоны. Пожалуйста, убедитесь:

  • Код соответствует существующим паттернам в кодовой базе
  • Тесты проходят: make test
  • Линтер проходит: make lint

Лицензия

MIT


Отказ от ответственности

RatRace предназначен для авторизованного тестирования безопасности, программ bug bounty и пентестов. Используйте только на системах, которыми вы владеете или на которые имеете явное письменное разрешение на тестирование. Несанкционированное тестирование чужих систем незаконно.


Автор

Bogdan Ticu — Исследование и инженерия безопасности

По вопросам, проблемам или сообщениям о безопасности: GitHub Issues

Скачать инструмент
КодЗначение
0Успех — состояний гонки не найдено
3Ошибка данных — шаблон не найден, ошибка разбора
4Ошибка выполнения — сбой сети, ошибка движка
10Состояние гонки найдено — требуется действие
11Обход ограничения скорости подтвержден
12Аномалия обнаружена, но валидация неубедительна