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.