mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-26 14:40:37 +00:00
136 lines
7.1 KiB
Markdown
136 lines
7.1 KiB
Markdown
# Bypass delle Protezioni Proxy / WAF
|
|
|
|
<details>
|
|
|
|
<summary><strong>Impara l'hacking su AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
Altri modi per supportare HackTricks:
|
|
|
|
* Se desideri vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
|
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
|
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
|
|
|
|
</details>
|
|
|
|
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
|
|
|
{% embed url="https://websec.nl/" %}
|
|
|
|
## Bypass delle Regole ACL di Nginx con la Manipolazione del Percorso <a href="#heading-pathname-manipulation-bypassing-reverse-proxies-and-load-balancers-security-rules" id="heading-pathname-manipulation-bypassing-reverse-proxies-and-load-balancers-security-rules"></a>
|
|
|
|
Tecniche [da questa ricerca](https://rafa.hashnode.dev/exploiting-http-parsers-inconsistencies).
|
|
|
|
Esempio di regola Nginx:
|
|
```plaintext
|
|
location = /admin {
|
|
deny all;
|
|
}
|
|
|
|
location = /admin/ {
|
|
deny all;
|
|
}
|
|
```
|
|
### **NodeJS - Express**
|
|
|
|
| Versione Nginx | **Caratteri di bypass Node.js** |
|
|
| ------------- | ----------------------------- |
|
|
| 1.22.0 | `\xA0` |
|
|
| 1.21.6 | `\xA0` |
|
|
| 1.20.2 | `\xA0`, `\x09`, `\x0C` |
|
|
| 1.18.0 | `\xA0`, `\x09`, `\x0C` |
|
|
| 1.16.1 | `\xA0`, `\x09`, `\x0C` |
|
|
|
|
### **Flask**
|
|
|
|
| Versione Nginx | **Caratteri di bypass Flask** |
|
|
| ------------- | -------------------------------------------------------------- |
|
|
| 1.22.0 | `\x85`, `\xA0` |
|
|
| 1.21.6 | `\x85`, `\xA0` |
|
|
| 1.20.2 | `\x85`, `\xA0`, `\x1F`, `\x1E`, `\x1D`, `\x1C`, `\x0C`, `\x0B` |
|
|
| 1.18.0 | `\x85`, `\xA0`, `\x1F`, `\x1E`, `\x1D`, `\x1C`, `\x0C`, `\x0B` |
|
|
| 1.16.1 | `\x85`, `\xA0`, `\x1F`, `\x1E`, `\x1D`, `\x1C`, `\x0C`, `\x0B` |
|
|
|
|
### **Spring Boot**
|
|
|
|
| Versione Nginx | **Caratteri di bypass Spring Boot** |
|
|
| ------------- | --------------------------------- |
|
|
| 1.22.0 | `;` |
|
|
| 1.21.6 | `;` |
|
|
| 1.20.2 | `\x09`, `;` |
|
|
| 1.18.0 | `\x09`, `;` |
|
|
| 1.16.1 | `\x09`, `;` |
|
|
|
|
### **PHP-FPM**
|
|
|
|
Configurazione Nginx FPM:
|
|
```plaintext
|
|
location = /admin.php {
|
|
deny all;
|
|
}
|
|
|
|
location ~ \.php$ {
|
|
include snippets/fastcgi-php.conf;
|
|
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
|
|
}
|
|
```
|
|
Nginx è configurato per bloccare l'accesso a `/admin.php` ma è possibile aggirare ciò accedendo a `/admin.php/index.php`.
|
|
|
|
### Come prevenire
|
|
```plaintext
|
|
location ~* ^/admin {
|
|
deny all;
|
|
}
|
|
```
|
|
## Ignorare le regole di Mod Security <a href="#heading-bypassing-aws-waf-acl" id="heading-bypassing-aws-waf-acl"></a>
|
|
|
|
### Confusione del percorso
|
|
|
|
[**In questo post**](https://blog.sicuranext.com/modsecurity-path-confusion-bugs-bypass/) viene spiegato che ModSecurity v3 (fino alla versione 3.0.12) **ha implementato in modo improprio la variabile `REQUEST_FILENAME`** che avrebbe dovuto contenere il percorso accesso (fino all'inizio dei parametri). Questo perché eseguiva un URL decode per ottenere il percorso.\
|
|
Pertanto, una richiesta come `http://example.com/foo%3f';alert(1);foo=` in ModSecurity supporrà che il percorso sia solo `/foo` perché `%3f` viene trasformato in `?` terminando il percorso dell'URL, ma in realtà il percorso che il server riceverà sarà `/foo%3f';alert(1);foo=`.
|
|
|
|
Anche le variabili `REQUEST_BASENAME` e `PATH_INFO` sono state interessate da questo bug.
|
|
|
|
Qualcosa di simile è accaduto nella versione 2 di Mod Security che ha permesso di ignorare una protezione che impediva agli utenti di accedere a file con estensioni specifiche relative ai file di backup (come ad esempio `.bak`) semplicemente inviando il punto URL codificato in `%2e`, ad esempio: `https://example.com/backup%2ebak`.
|
|
|
|
## Ignorare AWS WAF ACL <a href="#heading-bypassing-aws-waf-acl" id="heading-bypassing-aws-waf-acl"></a>
|
|
|
|
### Intestazione malformata
|
|
|
|
[Questa ricerca](https://rafa.hashnode.dev/exploiting-http-parsers-inconsistencies) menziona che era possibile ignorare le regole di AWS WAF applicate sugli header HTTP inviando un header "malformato" che non veniva correttamente analizzato da AWS ma sì dal server backend.
|
|
|
|
Ad esempio, inviando la seguente richiesta con un'iniezione SQL nell'header X-Query:
|
|
```http
|
|
GET / HTTP/1.1\r\n
|
|
Host: target.com\r\n
|
|
X-Query: Value\r\n
|
|
\t' or '1'='1' -- \r\n
|
|
Connection: close\r\n
|
|
\r\n
|
|
```
|
|
Era possibile aggirare AWS WAF perché non capiva che la riga successiva faceva parte del valore dell'intestazione mentre il server NODEJS lo faceva (questo è stato risolto).
|
|
|
|
## Riferimenti
|
|
|
|
* [https://rafa.hashnode.dev/exploiting-http-parsers-inconsistencies](https://rafa.hashnode.dev/exploiting-http-parsers-inconsistencies)
|
|
* [https://blog.sicuranext.com/modsecurity-path-confusion-bugs-bypass/](https://blog.sicuranext.com/modsecurity-path-confusion-bugs-bypass/)
|
|
|
|
|
|
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
|
|
|
{% embed url="https://websec.nl/" %}
|
|
|
|
<details>
|
|
|
|
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
Altri modi per supportare HackTricks:
|
|
|
|
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
|
* Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
|
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repository di Github.
|
|
|
|
</details>
|