mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/pentesting-web/rate-limit-bypass.md'] to uk
This commit is contained in:
parent
b41fe8ca25
commit
8ae1399424
@ -14,7 +14,7 @@
|
||||
|
||||
### Маніпулювання IP-джерелом через заголовки
|
||||
|
||||
Модифікація заголовків для зміни сприйнятого IP-джерела може допомогти уникнути обмеження швидкості на основі IP. Заголовки, такі як `X-Originating-IP`, `X-Forwarded-For`, `X-Remote-IP`, `X-Remote-Addr`, `X-Client-IP`, `X-Host`, `X-Forwared-Host`, включаючи використання кількох екземплярів `X-Forwarded-For`, можуть бути відкориговані для симуляції запитів з різних IP.
|
||||
Модифікація заголовків для зміни сприйнятого IP-джерела може допомогти уникнути обмеження швидкості на основі IP. Заголовки, такі як `X-Originating-IP`, `X-Forwarded-For`, `X-Remote-IP`, `X-Remote-Addr`, `X-Client-IP`, `X-Host`, `X-Forwared-Host`, включаючи використання кількох екземплярів `X-Forwarded-For`, можуть бути відкориговані для імітації запитів з різних IP.
|
||||
```bash
|
||||
X-Originating-IP: 127.0.0.1
|
||||
X-Forwarded-For: 127.0.0.1
|
||||
@ -30,7 +30,7 @@ X-Forwarded-For: 127.0.0.1
|
||||
```
|
||||
### Зміна інших заголовків
|
||||
|
||||
Рекомендується змінювати інші заголовки запитів, такі як user-agent та cookies, оскільки їх також можна використовувати для ідентифікації та відстеження шаблонів запитів. Зміна цих заголовків може запобігти визнанню та відстеженню дій запитувача.
|
||||
Рекомендується змінювати інші заголовки запиту, такі як user-agent та cookies, оскільки їх також можна використовувати для ідентифікації та відстеження шаблонів запитів. Зміна цих заголовків може запобігти визнанню та відстеженню дій запитувача.
|
||||
|
||||
### Використання поведінки API Gateway
|
||||
|
||||
@ -38,11 +38,11 @@ X-Forwarded-For: 127.0.0.1
|
||||
|
||||
### Увійдіть у свій обліковий запис перед кожною спробою
|
||||
|
||||
Увійти в обліковий запис перед кожною спробою або кожним набором спроб може скинути лічильник обмеження швидкості. Це особливо корисно при тестуванні функцій входу. Використання атаки Pitchfork у таких інструментах, як Burp Suite, для ротації облікових даних кожні кілька спроб і забезпечення того, щоб перенаправлення були позначені, може ефективно перезапустити лічильники обмеження швидкості.
|
||||
Увійти в обліковий запис перед кожною спробою або кожним набором спроб може скинути лічильник обмеження швидкості. Це особливо корисно при тестуванні функціональності входу. Використання атаки Pitchfork у таких інструментах, як Burp Suite, для ротації облікових даних кожні кілька спроб і забезпечення того, щоб перенаправлення були позначені, може ефективно перезапустити лічильники обмеження швидкості.
|
||||
|
||||
### Використання мереж проксі
|
||||
### Використання проксі-мереж
|
||||
|
||||
Розгортання мережі проксі для розподілу запитів через кілька IP-адрес може ефективно обійти обмеження швидкості на основі IP. Направляючи трафік через різні проксі, кожен запит виглядає так, ніби він походить з іншого джерела, розмиваючи ефективність обмеження швидкості.
|
||||
Розгортання мережі проксі для розподілу запитів через кілька IP-адрес може ефективно обійти обмеження швидкості на основі IP. Маршрутизуючи трафік через різні проксі, кожен запит виглядає так, ніби він походить з іншого джерела, розмиваючи ефективність обмеження швидкості.
|
||||
|
||||
### Розподіл атаки між різними обліковими записами або сесіями
|
||||
|
||||
@ -50,10 +50,68 @@ X-Forwarded-For: 127.0.0.1
|
||||
|
||||
### Продовжуйте намагатися
|
||||
|
||||
Зверніть увагу, що навіть якщо обмеження швидкості встановлено, ви повинні спробувати перевірити, чи є відповідь іншою, коли надсилається дійсний OTP. У [**цьому пості**](https://mokhansec.medium.com/the-2-200-ato-most-bug-hunters-overlooked-by-closing-intruder-too-soon-505f21d56732) дослідник вразливостей виявив, що навіть якщо обмеження швидкості спрацьовує після 20 невдалих спроб, відповідаючи 401, якщо дійсний OTP був надісланий, було отримано відповідь 200.
|
||||
Зверніть увагу, що навіть якщо обмеження швидкості встановлено, ви повинні спробувати перевірити, чи є відповідь іншою, коли надсилається дійсний OTP. У [**цьому пості**](https://mokhansec.medium.com/the-2-200-ato-most-bug-hunters-overlooked-by-closing-intruder-too-soon-505f21d56732) дослідник вразливостей виявив, що навіть якщо обмеження швидкості спрацьовує після 20 невдалих спроб, відповідаючи 401, якщо дійсний OTP був надісланий, була отримана відповідь 200.
|
||||
|
||||
### Інструменти
|
||||
---
|
||||
|
||||
- [**https://github.com/Hashtag-AMIN/hashtag-fuzz**](https://github.com/Hashtag-AMIN/hashtag-fuzz): hashtag-fuzz - це інструмент для фуззингу, призначений для тестування та обходу WAF та CDN. Використовуючи розширені функції, такі як випадковий User-Agent та значення заголовка, випадкові затримки, обробка багатопоточності, вибіркове розбиття списків слів та ротація проксі Round Robin для кожного розбитого запиту, він пропонує надійне рішення для фахівців з безпеки, які прагнуть виявити вразливості в веб-додатках.
|
||||
### Зловживання мультиплексуванням HTTP/2 та конвеєризацією запитів (2023-2025)
|
||||
|
||||
Сучасні реалізації обмежувачів швидкості часто рахують **TCP з'єднання** (або навіть окремі запити HTTP/1.1) замість *кількості потоків HTTP/2*, які містить з'єднання. Коли те саме TLS з'єднання повторно використовується, зловмисник може відкрити сотні паралельних потоків, кожен з яких несе окремий запит, тоді як шлюз відраховує лише *один* запит з квоти.
|
||||
```bash
|
||||
# Send 100 POST requests in a single HTTP/2 connection with curl
|
||||
seq 1 100 | xargs -I@ -P0 curl -k --http2-prior-knowledge -X POST \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"code":"@"}' https://target/api/v2/verify &>/dev/null
|
||||
```
|
||||
Якщо обмежувач захищає лише `/verify`, але не `/api/v2/verify`, ви також можете поєднати **плутанину шляхів** з мультиплексуванням HTTP/2 для *надзвичайно* швидкого брутфорсу OTP або облікових даних.
|
||||
|
||||
> 🐾 **Порада:** PortSwigger’s [Turbo Intruder](https://portswigger.net/research/turbo-intruder) підтримує HTTP/2 і дозволяє вам точно налаштувати `maxConcurrentConnections` та `requestsPerConnection`, щоб автоматизувати цю атаку.
|
||||
|
||||
### Псевдоніми GraphQL та пакетні операції
|
||||
|
||||
GraphQL дозволяє клієнту надсилати **кілька логічно незалежних запитів або мутацій в одному запиті**, префіксуючи їх *псевдонімами*. Оскільки сервер виконує кожен псевдонім, але обмежувач швидкості часто враховує лише *один* запит, це надійний спосіб обійти обмеження на вхід до системи або скидання пароля.
|
||||
```graphql
|
||||
mutation bruteForceOTP {
|
||||
a: verify(code:"111111") { token }
|
||||
b: verify(code:"222222") { token }
|
||||
c: verify(code:"333333") { token }
|
||||
# … add up to dozens of aliases …
|
||||
}
|
||||
```
|
||||
Дивіться на відповідь: точно один псевдонім поверне 200 OK, коли буде введено правильний код, тоді як інші обмежені за швидкістю.
|
||||
|
||||
Цю техніку популяризували дослідження PortSwigger про “GraphQL batching & aliases” у 2023 році, і вона стала причиною багатьох нещодавніх виплат за вразливості.
|
||||
|
||||
### Зловживання *batch* або *bulk* REST кінцевими точками
|
||||
|
||||
Деякі API відкривають допоміжні кінцеві точки, такі як `/v2/batch`, або приймають **масив об'єктів** у тілі запиту. Якщо обмежувач розташований лише перед *старими* кінцевими точками, обгортання кількох операцій в один запит на масове оброблення може повністю обійти захист.
|
||||
```json
|
||||
[
|
||||
{"path": "/login", "method": "POST", "body": {"user":"bob","pass":"123"}},
|
||||
{"path": "/login", "method": "POST", "body": {"user":"bob","pass":"456"}}
|
||||
]
|
||||
```
|
||||
### Тайминг ковзного вікна
|
||||
|
||||
Класичний лімітатор токенів або лімітатор з витоком *скидається* на фіксованій часовій межі (наприклад, кожну хвилину). Якщо вікно відоме (наприклад, через повідомлення про помилки, такі як `X-RateLimit-Reset: 27`), надішліть максимальну дозволену кількість запитів **безпосередньо перед** скиданням кошика, а потім відразу надішліть ще один повний сплеск.
|
||||
```
|
||||
|<-- 60 s window ‑->|<-- 60 s window ‑->|
|
||||
###### ######
|
||||
```
|
||||
Ця проста оптимізація може більш ніж подвоїти вашу пропускну здатність, не торкаючись жодної іншої техніки обходу.
|
||||
|
||||
---
|
||||
|
||||
## Інструменти
|
||||
|
||||
- [**https://github.com/Hashtag-AMIN/hashtag-fuzz**](https://github.com/Hashtag-AMIN/hashtag-fuzz): Інструмент для фуззингу, який підтримує рандомізацію заголовків, розділені списки слів та ротацію проксі-серверів за принципом кругового обертання.
|
||||
- [**https://github.com/ustayready/fireprox**](https://github.com/ustayready/fireprox): Автоматично створює одноразові кінцеві точки AWS API Gateway, щоб кожен запит походив з різної IP-адреси – ідеально для подолання обмежень на основі IP.
|
||||
- **Burp Suite – IPRotate + розширення**: Використовує пул SOCKS/HTTP проксі (або AWS API Gateway) для прозорої ротації вихідної IP-адреси під час атак *Intruder* та *Turbo Intruder*.
|
||||
- **Turbo Intruder (BApp)**: Високопродуктивний атакуючий механізм, що підтримує мультиплексування HTTP/2; налаштуйте `requestsPerConnection` на 100-1000, щоб об'єднати сотні запитів в одне з'єднання.
|
||||
|
||||
## Посилання
|
||||
|
||||
- PortSwigger Research – “Обхід обмежень швидкості за допомогою GraphQL аліасів” (2023) <https://portswigger.net/research/graphql-authorization-bypass>
|
||||
- PortSwigger Research – “HTTP/2: Продовження завжди гірше” (розділ *Обмеження на основі з'єднання*) (2024) <https://portswigger.net/research/http2>
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user