Состояния гонки и контрабанда запросов
Race / Smuggling предоставляет два специализированных инструмента для атак на HTTP, зависящих от времени и особенностей протокола.
Состояния гонки
Вкладка Race одновременно отправляет несколько копий запроса одной конечной точке и позволяет сравнить ответы и время параллельных выполнений.
Когда использовать
- TOCTOU (time-of-check/time-of-use) — проверьте, можно ли разделить проверку и изменение состояния параллельными запросами.
- Манипуляции с учётной записью — отправляйте параллельные изменения баланса, погашения купонов или ограниченные операции для проверки двойного расходования или превышения числа использований.
- Обход ограничений голосования или частоты — проверьте атомарность ограничений на пользователя.
Запуск теста гонки
- Создайте или передайте целевой запрос во вкладку Race.
- Задайте параллельность — число одновременных копий.
- Нажмите Отправить гонку. Копии отправляются максимально одновременно.
- Изучите таблицу ответов: статус, тело и время каждой копии.
- Различия (разные статусы, тела, неожиданный успех второй и последующих копий) указывают на окно гонки.
Гонка одним пакетом 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, но по-разному обрабатывают замаскированный заголовок |
Запуск пробы контрабанды
- Выберите конечную точку во вкладке Smuggling.
- Выберите вариант рассинхронизации.
- Нажмите Отправить пробу. Инструмент отправит специально сформированный запрос и измерит ответ.
- Тайм-аут или неожиданный ответ на второй запрос последовательности указывает на возможную рассинхронизацию.
- Подтвердите вручную перед созданием результата: сетевые тайм-ауты, не связанные с пробой, дают ложные срабатывания.