hacktricks/src/pentesting-web/timing-attacks.md

40 lines
5.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Тайминг-атаки
{{#include ../banners/hacktricks-training.md}}
> [!WARNING]
> Для отримання глибокого розуміння цієї техніки перегляньте оригінальний звіт з [https://portswigger.net/research/listen-to-the-whispers-web-timing-attacks-that-actually-work](https://portswigger.net/research/listen-to-the-whispers-web-timing-attacks-that-actually-work)
## Основна інформація
Основна мета тайминг-атаки полягає в тому, щоб мати можливість відповідати на складні питання або виявляти приховані функції, просто **перевіряючи різницю в часі у відповідях на подібні запити**.
Традиційно це було дуже складно через затримки та джиттер, які вводилися як мережею, так і сервером. Однак, з моменту відкриття та вдосконалення [**атаки Race Condition Single Packet**](race-condition.md#http-2-single-packet-attack-vs.-http-1.1-last-byte-synchronization), стало можливим використовувати цю техніку для усунення всіх затримок мережі з рівняння.\
Залишаючи лише **затримки сервера**, тайминг-атаки стають легшими для виявлення та зловживання.
## Відкриття
### Прихована атакувальна поверхня
У блозі коментується, як за допомогою цієї техніки вдалося знайти приховані параметри та навіть заголовки, просто перевіряючи, що коли параметр або заголовок були присутні в запиті, була **різниця в часі приблизно 5 мс**. Насправді, ця техніка відкриття була додана до **Param Miner** у Burp Suite.
Ці різниці в часі можуть бути викликані тим, що був виконаний **DNS-запит**, деякі **журнали були записані** через недійсний ввід або тому, що деякі **перевірки виконуються**, коли параметр присутній у запиті.
Щось, що потрібно пам'ятати, виконуючи такого роду атаки, це те, що через приховану природу поверхні ви можете не знати, яка насправді причина різниць у часі.
### Неправильні налаштування зворотного проксі
У тому ж дослідженні було зазначено, що техніка таймінгу була чудовою для виявлення "обмежених SSRF" (які є SSRF, що можуть отримати доступ лише до дозволених IP/доменів). Просто **перевіряючи різницю в часі, коли встановлено дозволений домен** в порівнянні з тим, коли встановлено недозволений домен, допомагає виявити відкриті проксі, навіть якщо відповідь однакова.
Як тільки відкритий проксі з обмеженнями виявлено, стало можливим знайти дійсні цілі, аналізуючи відомі піддомени цілі, і це дозволило:
- **Обійти брандмауери**, отримуючи доступ до обмежених піддоменів через **відкритий проксі** замість Інтернету
- Більше того, зловживаючи **відкритим проксі**, також можливо **виявити нові піддомени, доступні лише внутрішньо.**
- **Атаки на підробку фронтенду**: Фронтенд-сервери зазвичай додають заголовки для бекенду, такі як `X-Forwarded-For` або `X-Real-IP`. Відкриті проксі, які отримують ці заголовки, додадуть їх до запитуваного кінцевого пункту, отже, зловмисник зможе отримати доступ до ще більшої кількості внутрішніх доменів, додаючи ці заголовки з дозволеними значеннями.
## Посилання
- [https://portswigger.net/research/listen-to-the-whispers-web-timing-attacks-that-actually-work](https://portswigger.net/research/listen-to-the-whispers-web-timing-attacks-that-actually-work)
{{#include ../banners/hacktricks-training.md}}