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-джерела може допомогти уникнути обмеження швидкості на основі 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
|
```bash
|
||||||
X-Originating-IP: 127.0.0.1
|
X-Originating-IP: 127.0.0.1
|
||||||
X-Forwarded-For: 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
|
### Використання поведінки 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}}
|
{{#include ../banners/hacktricks-training.md}}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user