Nuevos labs cada semana — Accede a todos desde 7,99€/mes

Labs de Path Traversal

Path Traversal / Directory Traversal

¿Qué es Path Traversal?

El Path Traversal permite acceder a archivos y directorios fuera del directorio raíz de la aplicación. Usando secuencias como ../ se puede leer archivos del sistema como /etc/passwd, configuraciones, claves privadas y código fuente.

¿Por qué practicar Path Traversal?

El Path Traversal puede dar acceso a archivos sensibles del servidor: configuraciones con credenciales, claves SSH, código fuente. Cuando se encadena con otras vulns (file upload, LFI a log → poisoning), puede llevar a ejecución remota de código (RCE) y bounties de cinco cifras.

¿Qué aprenderás con los labs de Path Traversal?

Aprenderás técnicas de bypass de filtros (URL-encoding, double encoding, null byte, alternativas a ../), targets típicos por OS (etc/passwd, web.config, .env, .git/config, ~/.ssh/id_rsa), y chains de LFI a RCE vía log poisoning, /proc/self/environ y session injection.

Tipos de Path Traversal que cubrimos

  • Path traversal puro

    ../../../etc/passwd para leer archivos. El parámetro vulnerable suele ser file/path/template/page.

  • LFI (Local File Inclusion)

    El archivo leído se interpreta como código (PHP include). Permite RCE vía log/session/proc poisoning.

  • Encoded bypass

    Filtros que stripean ../ una vez se bypassean con ....// o %2e%2e%2f o doble URL-encode %252e%252e%252f.

  • Null byte (legacy)

    ../../etc/passwd%00.png — el null byte trunca el string en C, bypassando whitelist de extensión.

¿Cómo encontrar y explotar Path Traversal?

Playbook práctico — del recon a la prueba de concepto.

  1. 1

    Localizar parámetros de fichero

    Cualquier parámetro que lea/descargue/incluya un archivo es candidato: file, path, page, template, doc, download, lang.

    GET /download?file=informe.pdf
  2. 2

    Probar el traversal básico

    Sustituye el valor por una ruta con ../ hacia ficheros conocidos del sistema. /etc/passwd en Linux, win.ini en Windows.

    ?file=../../../../../../etc/passwd
  3. 3

    Bypassear filtros de ../

    Si limpian ../ una vez, usa secuencias anidadas, URL-encoding y doble encoding para reconstruir la secuencia tras el filtro.

    ....//....//etc/passwd   ·   %2e%2e%2f   ·   %252e%252e%252f
  4. 4

    Saltar prefijos/sufijos forzados

    Si la app antepone una ruta base, traversa desde ahí; si añade una extensión, prueba el null byte (motores legacy) o wrappers.

    ?file=../../../../etc/passwd%00.png
  5. 5

    Apuntar a ficheros jugosos

    Más allá de /etc/passwd, ve a configs y secretos: variables de entorno, claves, código fuente y repos.

    .env · .git/config · /proc/self/environ · ~/.ssh/id_rsa · web.config
  6. 6

    Escalar de LFI a RCE

    Si el fichero se interpreta como código (include PHP), envenena un log o la sesión con código y vuelve a incluirlo.

    User-Agent: <?php system($_GET['c']); ?>  →  ?file=/var/log/apache2/access.log&c=id

Aprende la teoría

Academy: File Upload Vulnerabilities

Preguntas frecuentes

¿Qué es el Path Traversal?

Es una vulnerabilidad que permite acceder a ficheros fuera del directorio previsto de la aplicación usando secuencias como ../, llegando a leer /etc/passwd, ficheros de configuración con credenciales, claves SSH o código fuente.

¿Cómo se explota un Path Traversal?

Se manipula un parámetro que referencia un fichero introduciendo ../ para subir de directorio y apuntar a archivos sensibles. Si hay filtros, se bypassean con doble encoding (%252e), secuencias anidadas (....//) o null bytes en motores antiguos.

¿Cómo encontrar Path Traversal en bug bounty?

Fuzzea todos los parámetros que manejen rutas o nombres de fichero (file, page, template, download) con payloads de traversal y sus variantes codificadas. Una respuesta con el contenido de /etc/passwd confirma el bug.

¿Cómo prevenir el Path Traversal?

Evita pasar input del usuario a rutas de fichero; usa identificadores indirectos mapeados server-side, canonicaliza la ruta (realpath) y verifica que queda dentro del directorio base, y aplica allowlist de nombres/extensiones.

¿Diferencia entre Path Traversal y LFI?

El Path Traversal lee el fichero como datos (te devuelve su contenido). El LFI lo incluye y lo ejecuta como código (típico en PHP include), lo que abre la puerta a RCE vía log poisoning o wrappers. El LFI es esencialmente un Path Traversal sobre una función de inclusión de código.

Empieza con labs de Path Traversal

Practica Path Traversal / Directory Traversal con labs basados en reportes reales. En español. Desde 7,99€/mes.

Empieza con el primer lab de Path Traversal