Nel recente pen-test black-box di una webapp ospitata su CentOS, ho trovato una vulnerabilità che mi permetteva di prendere il contenuto di file (tipo di inclusione di file) che si trova all'interno del percorso home di Tomcat .
Nello scenario classico, ho provato a leggere /etc/passwd
ma non sono riuscito a recuperare i contenuti. Sembra che Apache Tomcat proibisca al server Web di leggere al di fuori del percorso dell'app Web. Il parametro vulnerabile si trova nella richiesta GET e l'applicazione aggiunge .jsp
a quello e prova a leggerlo.
Ad esempio , se navighiamo a http://site.com/abc.jsp?param=en
, l'applicazione proverà a caricare /some/folder/somefile_en.jsp
file dal filesystem. Se fallisce, restituisce HTTP status code 500
con java.io.IOException
stack-trace.
Per aggirare la restrizione .jsp
, ho aggiunto ?
alla fine del parametro vulnerabile come http://site.com/abc.jsp?param=asdasd_asdasd/../../../../META-INF/MANIFEST.MF?
. Sono stato solo in grado di leggere questi file:
-
/META-INF/context.xml
-
/META-INF/MANIFEST.MF
-
/WEB-INF/web.xml
Non so quali altri file posso leggere (perché non ho una lista fuzz per le app java).
Q: Potresti fornirmi una lista fuzz per trovare altri file sensibili nel filesystem o potresti suggerirmi altri vettori di attacco?
P.S. Potrei enumerare i nomi di file e directory in base alla risposta HTTP. Se il file non esiste, viene visualizzato questo tipo di messaggio di errore: