cd ~/blog

~/vulns/nginx-alias-traversal.md

Nginx Alias Traversal

webautor: Jordy Pérez Osorio aviso legal
webNginxpath-traversalfile-read

~2 min de lectura


1. Descripción técnica

Nginx Alias Traversal es una variante de path traversal causada por una combinación insegura de una ubicación por prefijo y la directiva alias. Si el límite de la URI no coincide con el límite del directorio, una solicitud puede aportar un sufijo que empiece por ../; Nginx lo combina con el alias y resuelve una ruta fuera del directorio previsto.

El problema no se deduce de utilizar alias en general. Depende de la pareja exacta entre location, alias, barras finales y normalización de la ruta.

1.1. Mecanismo

// renderizando diagrama…

2. Impacto

La variante habitual permite leer archivos con los permisos del worker de Nginx: configuraciones, historiales, claves o código fuente. No implica por sí sola ejecución de PHP ni Remote Code Execution.

3. Condiciones necesarias

  1. Existe una directiva alias asociada a una ubicación por prefijo vulnerable.
  2. La discrepancia de barras permite añadir ../ después del prefijo.
  3. Nginx normaliza la ruta fuera del directorio esperado.
  4. El worker tiene permiso de lectura sobre el destino.

4. Validación y detección

La revisión principal compara cada location con su alias en la configuración efectiva. La validación dinámica debe comenzar con un archivo inofensivo fuera del directorio publicado y confirmar que el contenido, no sólo un código HTTP, llega a la respuesta.

Una cadena ../ reflejada, un 404 distinto o una pista en robots.txt no demuestra la vulnerabilidad.

5. Explotación documentada en los writeups

5.1. 059-decode

La ruta /decode../etc/passwd atraviesa el límite del alias y devuelve /etc/passwd. La misma primitiva recupera el historial de steve y un CSR con una credencial.

6. Mitigación

  • Alinear las barras finales de location y alias.
  • Preferir ubicaciones exactas o expresiones que delimiten el prefijo.
  • Probar rutas que intenten cruzar el directorio publicado.
  • Ejecutar el worker con acceso mínimo.
  • Mantener secretos fuera del alcance de la cuenta del servidor web.

7. Clasificación

  • CWE: CWE-22, Path Traversal
  • Vector: URI manipulada contra un alias mal delimitado
  • Impacto principal: Arbitrary File Read

8. Referencias y conexiones

// relacionados