Esta vulnerabilidad no valida correctamente las entradas del usuario permitiendo a un atacante acceder a sitios y archivos locales del servidor no permitidos.
La manera básica es yendo hacia atrás en el listado de directorios para salirnos de la ruta en la que estamos e intentar leer archivos.
Por ejemplo, en el siguiente laboratorio tenemos que encontrar la flag, así que vamos a la raíz e intentamos leer el archivo flag.txt.
http://localhost:9005/?file=../../../../../../flag.txt
Vemos que no conseguimos nada, esto es porque la sanitización elimina las barras y los puntos, aunque esto tiene otras variantes. Vamos a intentarlo insertando un null byte, que dependiendo de la versión de PHP nos permitirá visualizar el archivo. Así que seguimos con el Path Traversal.
http://localhost:9005/?file=../../../../../../flag.txt%00
Vemos que tampoco nos sirve, así que la sanitización elimina (solo en la primera pasada) las barras y los puntos, por lo que probaremos doblando las mismas.
http://localhost:9005/?file=....//....//....//....//flag.txtY vemos que ahora sí que funciona y leemos el contenido de la flag.
