mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/pentesting-web/ssrf-server-side-request-forgery/url-for
This commit is contained in:
parent
6b12ed4b17
commit
d705d09d2b
@ -154,11 +154,11 @@ https://metadata/expected/path/..%2f..%2f/vulnerable/path
|
|||||||
```
|
```
|
||||||
### Fuzzing
|
### Fuzzing
|
||||||
|
|
||||||
Інструмент [**recollapse**](https://github.com/0xacb/recollapse) може генерувати варіації з даного вводу, щоб спробувати обійти використаний regex. Перегляньте [**цей пост**](https://0xacb.com/2022/11/21/recollapse/) також для отримання додаткової інформації.
|
Інструмент [**recollapse**](https://github.com/0xacb/recollapse) може генерувати варіації з даного вводу, щоб спробувати обійти використаний regex. Перегляньте [**цей пост**](https://0xacb.com/2022/11/21/recollapse/) для отримання додаткової інформації.
|
||||||
|
|
||||||
### Automatic Custom Wordlists
|
### Automatic Custom Wordlists
|
||||||
|
|
||||||
Перегляньте [**URL validation bypass cheat sheet** webapp](https://portswigger.net/web-security/ssrf/url-validation-bypass-cheat-sheet) від portswigger, де ви можете ввести дозволений хост і хост атакуючого, і він згенерує список URL-адрес для вас. Він також враховує, чи можете ви використовувати URL в параметрі, в заголовку Host або в заголовку CORS.
|
Перегляньте [**URL validation bypass cheat sheet** webapp](https://portswigger.net/web-security/ssrf/url-validation-bypass-cheat-sheet) від portswigger, де ви можете ввести дозволений хост і хост атакуючого, і він згенерує список URL-адрес для спроби. Він також враховує, чи можете ви використовувати URL в параметрі, в заголовку Host або в заголовку CORS.
|
||||||
|
|
||||||
{{#ref}}
|
{{#ref}}
|
||||||
https://portswigger.net/web-security/ssrf/url-validation-bypass-cheat-sheet
|
https://portswigger.net/web-security/ssrf/url-validation-bypass-cheat-sheet
|
||||||
@ -166,9 +166,9 @@ https://portswigger.net/web-security/ssrf/url-validation-bypass-cheat-sheet
|
|||||||
|
|
||||||
### Bypass via redirect
|
### Bypass via redirect
|
||||||
|
|
||||||
Можливо, що сервер **фільтрує оригінальний запит** SSRF **але не** можливу **відповідь на перенаправлення** на цей запит.\
|
Можливо, що сервер **фільтрує оригінальний запит** SSRF **але не** можливу **перенаправлену** відповідь на цей запит.\
|
||||||
Наприклад, сервер, вразливий до SSRF через: `url=https://www.google.com/`, може **фільтрувати параметр url**. Але якщо ви використовуєте [python сервер для відповіді з 302](https://pastebin.com/raw/ywAUhFrv) на місце, куди ви хочете перенаправити, ви можете отримати **доступ до відфільтрованих IP-адрес** таких як 127.0.0.1 або навіть відфільтрованих **протоколів** таких як gopher.\
|
Наприклад, сервер, вразливий до SSRF через: `url=https://www.google.com/`, може **фільтрувати параметр url**. Але якщо ви використовуєте [python сервер для відповіді з 302](https://pastebin.com/raw/ywAUhFrv) на місце, куди ви хочете перенаправити, ви можете отримати **доступ до відфільтрованих IP-адрес** таких як 127.0.0.1 або навіть відфільтрованих **протоколів** таких як gopher.\
|
||||||
[Check out this report.](https://sirleeroyjenkins.medium.com/just-gopher-it-escalating-a-blind-ssrf-to-rce-for-15k-f5329a974530)
|
[Перегляньте цей звіт.](https://sirleeroyjenkins.medium.com/just-gopher-it-escalating-a-blind-ssrf-to-rce-for-15k-f5329a974530)
|
||||||
```python
|
```python
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
@ -207,10 +207,42 @@ _Трюк з зворотним слешем_ використовує різн
|
|||||||
|
|
||||||
зображення з [https://claroty.com/2022/01/10/blog-research-exploiting-url-parsing-confusion/](https://claroty.com/2022/01/10/blog-research-exploiting-url-parsing-confusion/)
|
зображення з [https://claroty.com/2022/01/10/blog-research-exploiting-url-parsing-confusion/](https://claroty.com/2022/01/10/blog-research-exploiting-url-parsing-confusion/)
|
||||||
|
|
||||||
|
### Трюк з ідентифікатором зони IPv6 (%25)
|
||||||
|
|
||||||
|
Сучасні парсери URL, які підтримують RFC 6874, дозволяють *link-local* IPv6 адресам включати **ідентифікатор зони** після знака відсотка. Деякі фільтри безпеки не знають про цей синтаксис і будуть видаляти лише IPv6 літерали в квадратних дужках, дозволяючи наступному навантаженню досягти внутрішнього інтерфейсу:
|
||||||
|
```text
|
||||||
|
http://[fe80::1%25eth0]/ # %25 = encoded '%', interpreted as fe80::1%eth0
|
||||||
|
http://[fe80::a9ff:fe00:1%25en0]/ # Another example (macOS style)
|
||||||
|
```
|
||||||
|
Якщо цільовий додаток перевіряє, що хост *не* є `fe80::1`, але зупиняє парсинг на `%`, він може неправильно трактувати запит як зовнішній. Завжди нормалізуйте адресу **перед** будь-яким рішенням щодо безпеки або повністю видаліть необов'язковий ідентифікатор зони.
|
||||||
|
|
||||||
|
### Останні CVE для парсингу бібліотек (2022–2025)
|
||||||
|
|
||||||
|
Кілька основних фреймворків зазнали проблем з невідповідністю імені хоста, які можуть бути використані для SSRF, як тільки валідація URL була обійдена за допомогою трюків, наведених вище:
|
||||||
|
|
||||||
|
| Рік | CVE | Компонент | Синопсис помилки | Мінімальний PoC |
|
||||||
|
|------|-----|-----------|--------------|-------------|
|
||||||
|
| 2024 | CVE-2024-22243 / ‑22262 | Spring `UriComponentsBuilder` | `[` не дозволено в секції *userinfo*, тому `https://example.com\[@internal` розбирається як хост `example.com` Spring, але як `internal` браузерами, що дозволяє відкриті перенаправлення та SSRF, коли використовуються списки дозволених хостів. Оновіть до Spring 5.3.34 / 6.0.19 / 6.1.6+. |
|
||||||
|
| 2023 | CVE-2023-27592 | **urllib3** <1.26.15 | Плутанина з зворотним слешем дозволила `http://example.com\\@169.254.169.254/` обійти фільтри хостів, які розділяються на `@`. |
|
||||||
|
| 2022 | CVE-2022-3602 | OpenSSL | Перевірка імені хоста пропускалася, коли ім'я закінчувалося на `.` (плутанина бездоменного домену). |
|
||||||
|
|
||||||
|
Коли ви залежите від парсерів URL третьої сторони, **порівнюйте канонізований хост, повернутий бібліотекою, якій ви довіряєте, з сирим рядком, наданим користувачем**, щоб виявити ці класи проблем.
|
||||||
|
|
||||||
|
### Допоміжні засоби для генерації payload (2024+)
|
||||||
|
|
||||||
|
Створення великих кастомних списків слів вручну є обтяжливим. Відкритий інструмент **SSRF-PayloadMaker** (Python 3) тепер може автоматично генерувати *80 тис.+* комбінацій зміни хостів, включаючи змішані кодування, примусове зниження HTTP та варіанти зі зворотним слешем:
|
||||||
|
```bash
|
||||||
|
# Generate every known bypass that transforms the allowed host example.com to attacker.com
|
||||||
|
python3 ssrf_maker.py --allowed example.com --attacker attacker.com -A -o payloads.txt
|
||||||
|
```
|
||||||
|
Список, що отримується, можна безпосередньо використовувати в Burp Intruder або `ffuf`.
|
||||||
|
|
||||||
## Посилання
|
## Посилання
|
||||||
|
|
||||||
- [https://as745591.medium.com/albussec-penetration-list-08-server-side-request-forgery-ssrf-sample-90267f095d25](https://as745591.medium.com/albussec-penetration-list-08-server-side-request-forgery-ssrf-sample-90267f095d25)
|
- [https://as745591.medium.com/albussec-penetration-list-08-server-side-request-forgery-ssrf-sample-90267f095d25](https://as745591.medium.com/albussec-penetration-list-08-server-side-request-forgery-ssrf-sample-90267f095d25)
|
||||||
- [https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Server%20Side%20Request%20Forgery/README.md](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Server%20Side%20Request%20Forgery/README.md)
|
- [https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Server%20Side%20Request%20Forgery/README.md](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Server%20Side%20Request%20Forgery/README.md)
|
||||||
- [https://portswigger.net/research/new-crazy-payloads-in-the-url-validation-bypass-cheat-sheet](https://portswigger.net/research/new-crazy-payloads-in-the-url-validation-bypass-cheat-sheet)
|
- [https://portswigger.net/research/new-crazy-payloads-in-the-url-validation-bypass-cheat-sheet](https://portswigger.net/research/new-crazy-payloads-in-the-url-validation-bypass-cheat-sheet)
|
||||||
|
- [https://nvd.nist.gov/vuln/detail/CVE-2024-22243](https://nvd.nist.gov/vuln/detail/CVE-2024-22243)
|
||||||
|
- [https://github.com/hsynuzm/SSRF-PayloadMaker](https://github.com/hsynuzm/SSRF-PayloadMaker)
|
||||||
|
|
||||||
{{#include ../../banners/hacktricks-training.md}}
|
{{#include ../../banners/hacktricks-training.md}}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user