Tengo una aplicación vulnerable al cruce de directorios (lo sé porque es parte de la redacción de la pregunta). La aplicación tiene dos directorios, públicos y privados, y dos archivos php:
-
A.php?folder=[public|private]
lista el contenido de ambos directorios. -
B.php?folder=public&file=test.txt&action=[view|download]
ve o descarga el archivo especificado.
Necesito ver un archivo llamado users.txt
que está asignado en el directorio privado. B.php
parece tener una restricción que solo permite la acción en el directorio público, así que si escribo B.php?folder=private&file=users.txt&action=view
, en realidad está intentando leer \public\private\admin\users.txt
(note la barra invertida, es un sistema de Windows si eso importa).
Mi siguiente paso fue saltar al árbol de directorios, pero la aplicación no permite ..
ni %2E%2E
. Devuelve un mensaje que dice que el punto char no se puede usar para la carpeta o el archivo.
No hay cookies ni datos POST.
Entonces, ¿cómo podría "romper la cárcel" del directorio público en B.php? ¿Alguna idea?
PD: habló con mi instructor y él confirma que esta es una pregunta difícil.