En la reciente prueba de lápiz de caja negra de una aplicación web alojada en CentOS, encontré una vulnerabilidad que me permitió capturar el contenido de los archivos (tipo de inclusión de archivos) ubicados dentro de la ruta principal de Tomcat .
En el escenario clásico, intenté leer /etc/passwd
pero no pude recuperar el contenido. Parece que Apache Tomcat prohíbe que el servidor web lea fuera de la ruta de la aplicación web. El parámetro vulnerable ubicado en la solicitud GET y en la aplicación agrega .jsp
a eso e intenta leerlo.
Por ejemplo , si navegamos a http://site.com/abc.jsp?param=en
, la aplicación intentará cargar el archivo /some/folder/somefile_en.jsp
desde el sistema de archivos. Si falla, devuelve HTTP status code 500
con java.io.IOException
stack-trace.
Para omitir la restricción .jsp
, agregué ?
al final del parámetro vulnerable como este http://site.com/abc.jsp?param=asdasd_asdasd/../../../../META-INF/MANIFEST.MF?
. Solo pude leer estos archivos:
-
/META-INF/context.xml
-
/META-INF/MANIFEST.MF
-
/WEB-INF/web.xml
No sé qué otros archivos puedo leer (porque no tengo una lista fuzz para aplicaciones java).
P: ¿Podría darme una lista fuzz para encontrar otros archivos confidenciales en el sistema de archivos o podría sugerirme otros vectores de ataque?
P.S. Podría enumerar los nombres de archivos y directorios en función de la respuesta HTTP. Si el archivo no existe, aparece este tipo de mensaje de error: