Стан гонитви / контрабанда запитів
Цей розділ надає два спеціалізовані інструменти для часових атак і атак на рівні протоколу HTTP.
Стани гонитви
Вкладка гонитви одночасно надсилає кілька копій запиту до однієї кінцевої точки й дає змогу порівняти відповіді та час паралельних виконань.
Коли використовувати
- TOCTOU (time-of-check/time-of-use) — перевіряйте, чи паралельні запити можуть втрутитися між перевіркою й операцією зміни стану.
- Маніпуляції з обліковим записом — надсилайте паралельні зміни балансу, погашення купонів або операції з лімітами для перевірки подвійного витрачання чи перевищення кількості погашень.
- Обхід обмежень голосування або частоти — перевіряйте атомарність дотримання лімітів для користувача.
Запуск тесту гонитви
- Створіть або надішліть цільовий запит до вкладки гонитви.
- Задайте паралельність — скільки паралельних копій надсилати.
- Натисніть кнопку надсилання вказаної кількості запитів. Усі копії надсилаються якомога ближче до одночасного виконання.
- Перевірте таблицю відповідей: код статусу, тіло й тривалість кожної копії.
- Відмінності відповідей (різні коди статусу, різні тіла, несподіваний успіх копій 2+) вказують на вікно гонитви.
Гонитва одним пакетом HTTP/2
Якщо ціль підтримує HTTP/2, виберіть H2 — одним пакетом. HTTP/2 мультиплексує всі паралельні запити через одне з’єднання, що усуває мережеві коливання затримки й робить одночасне надходження на сервер надійнішим.
Контрабанда HTTP-запитів
Вкладка контрабанди перевіряє, як сервер опрацьовує неоднозначні заголовки Content-Length і Transfer-Encoding, щоб виявити розсинхронізацію між фронтендом і бекендом.
Передумови
Якщо зворотний проксі й сервер бекенда по-різному визначають, де закінчується один запит і починається наступний, прихований префікс запиту A може бути додано перед запитом B. Вплив варіюється від отруєння кешу до обходу автентифікації й ін’єкції довільних запитів.
Варіанти розсинхронізації
| Варіант | Опис |
|---|---|
| CL.TE | Фронтенд використовує Content-Length; бекенд — Transfer-Encoding |
| TE.CL | Фронтенд використовує Transfer-Encoding; бекенд — Content-Length |
| TE.TE | Обидва використовують Transfer-Encoding, але по-різному реагують на обфускований заголовок |
Запуск проби контрабанди
- Виберіть цільову кінцеву точку на вкладці контрабанди.
- Виберіть варіант розсинхронізації для перевірки.
- Натисніть Запустити перевірку контрабанди запитів. Інструмент надсилає спеціально сформований запит і вимірює відповідь.
- Тайм-аут або несподівана відповідь на другий запит послідовності вказує на потенційну розсинхронізацію.
- Підтвердьте вручну перед створенням знахідки: хибні спрацювання можливі, коли мережеві умови спричиняють тайм-аут, не пов’язаний із пробою.