Anular el filtro de cruce del directorio con entradas de carpetas y archivos independientes

1

Estoy intentando realizar un Path Traversal en una web muy simple solo con fines educativos.

Lo que tengo que hacer es acceder a un archivo llamado passwords.txt ubicado en \files\private\admin\passwords.txt , estoy en \files\public\ y los parámetros de la URL son los siguientes:

/download.php?folder=&file=&action=download

La ruta se construye concatenando los valores de los parámetros folder y file a la ruta \files\public\ . Ninguno de ellos es vulnerable a la inyección SQL de acuerdo con SQLMap, ni action . Así que, si pongo:

/download.php?folder=private\admin\&file=passwords.txt&action=download

La ruta resultante será \files\public\private\admin\passwords.txt

He intentado el truco más simple como poner \..\ (en texto sin formato y en forma de URL codificada) para acceder a la carpeta principal, pero no está permitido introducir .. .

Entonces, supongo que debo omitir el mecanismo de seguridad implementado en la base de datos que inyecta la ruta \files\public\ si quiero acceder a ese archivo (DBMS es MySQL).

¿Es posible eliminar la parte \public\ de la ruta usando comentarios con # u otra forma para que finalmente pueda acceder al directorio private ?

    
pregunta user3358218 23.12.2016 - 22:27
fuente

1 respuesta

1
  

Ninguno de ellos es vulnerable a la inyección SQL

¿Por qué lo harían? ¿Hay alguna razón por la que esperas que el script de descarga realice una consulta?

No debes confiar en herramientas como sqlmap . Están diseñados para facilitar las cosas, pero si desea aprender (o probar una aplicación en profundidad), debe realizar estas cosas usted mismo.

  

Es posible eliminar la parte \ public \ de la ruta usando comentarios con #

No, eso no tiene sentido. El camino está construido así:

\files\public\[INPUT_PATH]\[INPUT_FILE]

Realmente no puede comentar algo que existe antes de su entrada (la mayoría, si no todas, las API que permiten el acceso a archivos tampoco permiten comentarios en la ruta del archivo).

  ¿

u otra forma para que finalmente pueda acceder al directorio privado?

Si esto es para propósitos educativos, supongo que está destinado a ser vulnerable. Usted dice que "no está permitido introducir ...".

¿Es esta una suposición que hiciste? ¿O miraste el código fuente y es así como funciona? Si se trata de un filtro, debe comprobar cómo funciona realmente.

  • ¿Qué pasa si ingresas ....\ ? Tal vez el filtro reemplace ..\ con nada, lo que le daría ..\ .
  • ¿Está filtrando el nombre del archivo y el directorio? ¿Son los filtros iguales? ¿Puedes usar uno para atravesar, pero no el otro? ¿Puedes usar / en lugar de \ ?
  • ¿puedes ingresar . como directorio y .\private\passwords.txt como archivo? Se combinaría a \files\public\..\private\passwords.txt
respondido por el tim 23.12.2016 - 22:49
fuente

Lea otras preguntas en las etiquetas