Así que soy un pentestro, y he descubierto la "característica" en un servidor que me permite, esencialmente, recorrer ciegamente los archivos de un servidor web (sin ejecutarlos ni leerlos). El problema es que no puedo encontrar una manera de demostrar esto como una vulnerabilidad. La pregunta general es: ¿qué archivos, por su naturaleza de saber su nombre, representan una vulnerabilidad (si existe)?
En mi situación específica, el sistema operativo es Windows y puedo realizar una solicitud como esta.
http://example.com?site=file://C:\Users\Administrator
El servidor devolverá una página que indica que no puede cargar este archivo, mientras que si hago una solicitud como esta:
http://example.com?site=file://C:\Users\namethatwouldneverexist
, me dirá que no se puede encontrar el archivo.
Esencialmente, el servidor comprueba si el archivo existe antes de verificar si tengo permisos para leerlo.
Aquí hay algunas cosas que probé:
-
../../../
(etc.) Esto solo resulta en un directorio válido, lo que significa que me dirá que está prohibido. No es útil. -
%appdata%
Esto produce un tipo de error diferente, a la aplicación no le gustan los signos de porcentaje en la ruta, por lo que no la amplía para mí. -
C:\Windows\system32\ping.exe 8.8.8.8
Esto dará como resultado un error "no encontrado", ya que no pasa parámetros (o ejecuta el archivo). -
file://x
esto me expondrá el pwd, pero esto no es particularmente interesante en mi escenario.
Pude enumerar qué unidades de red están asignadas, pero esto no es particularmente útil. Básicamente, también puedo escanear puertos en el servidor desde la red local para exponer los puertos privados, pero por el momento estoy más interesado en el sistema de archivos.
Esencialmente, mi pregunta se reduce a: ¿la capacidad de identificar positivamente que un archivo existe en un servidor constituye una vulnerabilidad y, de ser así, cómo? Obviamente, si tienes una idea para convertir esto en RCE, ¡eso también está bien!