Перейти до вмісту

Стан гонитви / контрабанда запитів ​

Цей розділ надає два спеціалізовані інструменти для часових атак і атак на рівні протоколу HTTP.

Стани гонитви ​

Вкладка гонитви одночасно надсилає кілька копій запиту до однієї кінцевої точки й дає змогу порівняти відповіді та час паралельних виконань.

Коли використовувати ​

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

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

  1. Створіть або надішліть цільовий запит до вкладки гонитви.
  2. Задайте паралельність — скільки паралельних копій надсилати.
  3. Натисніть кнопку надсилання вказаної кількості запитів. Усі копії надсилаються якомога ближче до одночасного виконання.
  4. Перевірте таблицю відповідей: код статусу, тіло й тривалість кожної копії.
  5. Відмінності відповідей (різні коди статусу, різні тіла, несподіваний успіх копій 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, але по-різному реагують на обфускований заголовок

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

  1. Виберіть цільову кінцеву точку на вкладці контрабанди.
  2. Виберіть варіант розсинхронізації для перевірки.
  3. Натисніть Запустити перевірку контрабанди запитів. Інструмент надсилає спеціально сформований запит і вимірює відповідь.
  4. Тайм-аут або несподівана відповідь на другий запит послідовності вказує на потенційну розсинхронізацію.
  5. Підтвердьте вручну перед створенням знахідки: хибні спрацювання можливі, коли мережеві умови спричиняють тайм-аут, не пов’язаний із пробою.

Пропрієтарне програмне забезпечення. Усі права захищено.