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

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

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

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

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

Категории

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

RatRace

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

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

Популярное

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

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

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

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

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

RatRace

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

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



Go Version License Status Platform Security Build


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

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

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

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

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

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

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

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


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

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

Опишите сценарий гонки один раз в YAML, используйте повторно в разных проектах. Формат повторяет шаблоны Nuclei для привычности:

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

Интеграция в рабочий процесс

Импорт существующих запросов:

# Из 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:

ratrace race -u $TARGET -t template.yaml --silent
echo $?  # Код выхода 10 = гонка найдена, 0 = чисто

Профессиональная отчетность:

# 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] Гонка дублирования заказов при оформлении
#     Уровень аномалий: 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 "Состояние гонки найдено!"
  exit 1
fi

Справка по командам

race — Выполнить атаку гонки

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 — Преобразование запросов в шаблоны

ratrace import [--curl <команда> | --har <файл>] -o <output.yaml>

Преобразует существующие запросы (curl команды или экспорт HAR) в шаблоны RatRace.
Полезно для интеграции с существующими рабочими процессами.

report — Генерация отчетов

ratrace report --input results.json --format [html|json] --output report.html

Генерирует человекочитаемые отчеты из результатов тестов гонки.

ratelimit — Тест обхода ограничения скорости

ratrace ratelimit -u <url> -c <concurrency>

Проверяет, уязвимы ли конечные точки к одновременному обходу ограничения скорости.

Формат шаблона

Шаблоны — это YAML-файлы, определяющие сценарий гонки. Полная справка:

id: unique-identifier
info:
  name: "Человекочитаемое имя"
  severity: critical|high|medium|low|info
  tags: [tag1, tag2]
Скачать инструмент