Перейти к содержимому

Состояния гонки и контрабанда запросов ​

Race / Smuggling предоставляет два специализированных инструмента для атак на HTTP, зависящих от времени и особенностей протокола.

Состояния гонки ​

Вкладка Race одновременно отправляет несколько копий запроса одной конечной точке и позволяет сравнить ответы и время параллельных выполнений.

Когда использовать ​

  • TOCTOU (time-of-check/time-of-use) — проверьте, можно ли разделить проверку и изменение состояния параллельными запросами.
  • Манипуляции с учётной записью — отправляйте параллельные изменения баланса, погашения купонов или ограниченные операции для проверки двойного расходования или превышения числа использований.
  • Обход ограничений голосования или частоты — проверьте атомарность ограничений на пользователя.

Запуск теста гонки ​

  1. Создайте или передайте целевой запрос во вкладку Race.
  2. Задайте параллельность — число одновременных копий.
  3. Нажмите Отправить гонку. Копии отправляются максимально одновременно.
  4. Изучите таблицу ответов: статус, тело и время каждой копии.
  5. Различия (разные статусы, тела, неожиданный успех второй и последующих копий) указывают на окно гонки.

Гонка одним пакетом HTTP/2 ​

Если цель поддерживает HTTP/2, включите Режим HTTP/2. Он мультиплексирует все параллельные запросы в одном соединении, устраняя сетевой джиттер и повышая надёжность одновременного поступления на сервер.

Контрабанда HTTP-запросов ​

Вкладка Smuggling проверяет обработку неоднозначных заголовков Content-Length и Transfer-Encoding для обнаружения рассинхронизации внешнего и внутреннего серверов.

Основы ​

Если обратный прокси и сервер приложения по-разному определяют конец одного запроса и начало следующего, скрытый префикс запроса A может добавиться к запросу B. Последствия варьируются от отравления кеша до обхода аутентификации и внедрения произвольных запросов.

Варианты рассинхронизации ​

ВариантОписание
CL.TEВнешний сервер использует Content-Length, внутренний — Transfer-Encoding
TE.CLВнешний сервер использует Transfer-Encoding, внутренний — Content-Length
TE.TEОба используют Transfer-Encoding, но по-разному обрабатывают замаскированный заголовок

Запуск пробы контрабанды ​

  1. Выберите конечную точку во вкладке Smuggling.
  2. Выберите вариант рассинхронизации.
  3. Нажмите Отправить пробу. Инструмент отправит специально сформированный запрос и измерит ответ.
  4. Тайм-аут или неожиданный ответ на второй запрос последовательности указывает на возможную рассинхронизацию.
  5. Подтвердите вручную перед созданием результата: сетевые тайм-ауты, не связанные с пробой, дают ложные срабатывания.

Проприетарное ПО. Все права защищены.