7.4 KiB
Bypass de Protecciones de Proxy / WAF
Aprende hacking en AWS desde cero hasta experto con htARTE (HackTricks AWS Red Team Expert)!
Otras formas de apoyar a HackTricks:
- Si quieres ver tu empresa anunciada en HackTricks o descargar HackTricks en PDF ¡Consulta los PLANES DE SUSCRIPCIÓN!
- Obtén el oficial PEASS & HackTricks swag
- Descubre The PEASS Family, nuestra colección exclusiva de NFTs
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @carlospolopm.
- Comparte tus trucos de hacking enviando PRs a los repositorios de HackTricks y HackTricks Cloud.
{% embed url="https://websec.nl/" %}
Bypass de Reglas de ACL de Nginx con Manipulación de Nombres de Ruta
Técnicas de esta investigación.
Ejemplo de regla de Nginx:
location = /admin {
deny all;
}
location = /admin/ {
deny all;
}
En orden de prevenir los bypasses, Nginx realiza una normalización de ruta antes de verificarla. Sin embargo, si el servidor backend realiza una normalización diferente (eliminando caracteres que Nginx no elimina), podría ser posible evadir esta defensa.
NodeJS - Express
Versión de Nginx | Caracteres de Evitación 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
Versión de Nginx | Caracteres de Evitación 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
Versión de Nginx | Caracteres de Evitación de Spring Boot |
---|---|
1.22.0 | ; |
1.21.6 | ; |
1.20.2 | \x09 , ; |
1.18.0 | \x09 , ; |
1.16.1 | \x09 , ; |
PHP-FPM
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;
}
Nginx está configurado para bloquear el acceso a /admin.php
pero es posible evitar esto accediendo a /admin.php/index.php
.
Cómo prevenir
location ~* ^/admin {
deny all;
}
Saltar Reglas de Mod Security
Confusión de Ruta
En esta publicación se explica que ModSecurity v3 (hasta la versión 3.0.12), implementó incorrectamente la variable REQUEST_FILENAME
que se suponía que contenía la ruta de acceso (hasta el inicio de los parámetros). Esto se debió a que realizaba un descodificación de URL para obtener la ruta.
Por lo tanto, una solicitud como http://example.com/foo%3f';alert(1);foo=
en ModSecurity supondrá que la ruta es solo /foo
porque %3f
se transforma en ?
finalizando la ruta URL, pero en realidad la ruta que recibirá el servidor será /foo%3f';alert(1);foo=
.
Las variables REQUEST_BASENAME
y PATH_INFO
también se vieron afectadas por este error.
Algo similar ocurrió en la versión 2 de Mod Security que permitía saltar una protección que impedía que el usuario accediera a archivos con extensiones específicas relacionadas con archivos de respaldo (como .bak
) simplemente enviando el punto codificado en URL en %2e
, por ejemplo: https://example.com/backup%2ebak
.
Saltar ACL de AWS WAF
Encabezado Malformado
Esta investigación menciona que era posible saltar las reglas de AWS WAF aplicadas sobre los encabezados HTTP enviando un encabezado "malformado" que no era interpretado correctamente por AWS pero sí por el servidor backend.
Por ejemplo, enviando la siguiente solicitud con una inyección SQL en el encabezado X-Query:
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
Fue posible evadir AWS WAF porque no entendía que la siguiente línea formaba parte del valor del encabezado mientras que el servidor NODEJS sí lo hacía (esto fue corregido).
Referencias
- https://rafa.hashnode.dev/exploiting-http-parsers-inconsistencies
- https://blog.sicuranext.com/modsecurity-path-confusion-bugs-bypass/
{% embed url="https://websec.nl/" %}
Aprende hacking en AWS desde cero hasta experto con htARTE (HackTricks AWS Red Team Expert)!
Otras formas de apoyar a HackTricks:
- Si deseas ver tu empresa anunciada en HackTricks o descargar HackTricks en PDF Consulta los PLANES DE SUSCRIPCIÓN!
- Obtén el oficial PEASS & HackTricks swag
- Descubre The PEASS Family, nuestra colección exclusiva de NFTs
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @carlospolopm.
- Comparte tus trucos de hacking enviando PRs a los repositorios de HackTricks y HackTricks Cloud.