# Proxy / WAF Protections Bypass
Aprende hacking en AWS de cero a h茅roe conhtARTE (HackTricks AWS Red Team Expert)!
Otras formas de apoyar a HackTricks:
* Si quieres ver a tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF**, consulta los [**PLANES DE SUSCRIPCI脫N**](https://github.com/sponsors/carlospolop)!
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colecci贸n de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **脷nete al** 馃挰 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sigue**me en **Twitter** 馃惁 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de github de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
## Bypass de Reglas ACL de Nginx
Ejemplo de restricci贸n en Nginx:
```plaintext
location = /admin {
deny all;
}
location = /admin/ {
deny all;
}
```
### NodeJS
* Como Nginx incluye el car谩cter `\xa0` como parte del nombre de ruta, la regla ACL para el URI `/admin` no se activar谩. En consecuencia, Nginx reenviar谩 el mensaje HTTP al backend;
* Cuando el servidor Node.js recibe el URI `/admin\x0a`, el car谩cter `\xa0` se eliminar谩, permitiendo la recuperaci贸n exitosa del endpoint `/admin`.
| Versi贸n de Nginx | **Caracteres de Bypass de 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
Flask elimina los caracteres `\x85`, `\xA0`, `\x1F`, `\x1E`, `\x1D`, `\x1C`, `\x0C`, `\x0B` y `\x09` del camino de la URL, pero NGINX no.
| Versi贸n de Nginx | **Caracteres de Bypass de 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
A continuaci贸n, encontrar谩s una demostraci贸n de c贸mo se puede eludir la protecci贸n ACL agregando el car谩cter `\x09` o al final del nombre de ruta:
| Versi贸n de Nginx | **Caracteres de Bypass de Spring Boot** |
| ---------------- | --------------------------------------- |
| 1.22.0 | `;` |
| 1.21.6 | `;` |
| 1.20.2 | `\x09`, `;` |
| 1.18.0 | `\x09`, `;` |
| 1.16.1 | `\x09`, `;` |
### PHP-FPM
Consideremos la siguiente configuraci贸n de Nginx FPM:
```plaintext
location = /admin.php {
deny all;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
}
```
Es posible eludirlo accediendo a `/admin.php/index.php`:
### C贸mo prevenir
Para prevenir estos problemas, debes usar la expresi贸n `~` en lugar de la expresi贸n `=` en las reglas ACL de Nginx, por ejemplo:
COPYCOPY
```plaintext
location ~* ^/admin {
deny all;
}
```
## Eludir AWS WAF ACL con Line Folding
Es posible eludir la protecci贸n de AWS WAF en un encabezado HTTP utilizando la siguiente sintaxis donde AWS WAF no entender谩 que el encabezado X-Query contiene una carga 煤til de inyecci贸n SQL mientras que el servidor node detr谩s s铆 lo har谩:
```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
```
## Referencias
* [https://rafa.hashnode.dev/exploiting-http-parsers-inconsistencies](https://rafa.hashnode.dev/exploiting-http-parsers-inconsistencies)
Aprende hacking en AWS de cero a h茅roe conhtARTE (HackTricks AWS Red Team Expert)!
Otras formas de apoyar a HackTricks:
* Si quieres ver a tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** revisa los [**PLANES DE SUSCRIPCI脫N**](https://github.com/sponsors/carlospolop)!
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colecci贸n de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **脷nete al** 馃挰 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sigue** a **Twitter** 馃惁 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).