Basic Tomcat Info

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

Support HackTricks

रूट के साथ चलाने से बचें

टॉमकैट को रूट के साथ न चलाने के लिए एक बहुत सामान्य कॉन्फ़िगरेशन यह है कि पोर्ट 80/443 पर एक अपाचे सर्वर सेट किया जाए और, यदि अनुरोधित पथ एक नियमित अभिव्यक्ति से मेल खाता है, तो अनुरोध को एक अलग पोर्ट पर चल रहे टॉमकैट को भेजा जाता है।

डिफ़ॉल्ट संरचना

├── bin
├── conf
│   ├── catalina.policy
│   ├── catalina.properties
│   ├── context.xml
│   ├── tomcat-users.xml
│   ├── tomcat-users.xsd
│   └── web.xml
├── lib
├── logs
├── temp
├── webapps
│   ├── manager
│   │   ├── images
│   │   ├── META-INF
│   │   └── WEB-INF
|   |       └── web.xml
│   └── ROOT
│       └── WEB-INF
└── work
└── Catalina
└── localhost
  • bin फ़ोल्डर उन स्क्रिप्ट और बाइनरीज़ को स्टोर करता है जो Tomcat सर्वर को शुरू और चलाने के लिए आवश्यक हैं।

  • conf फ़ोल्डर Tomcat द्वारा उपयोग किए जाने वाले विभिन्न कॉन्फ़िगरेशन फ़ाइलों को स्टोर करता है।

  • tomcat-users.xml फ़ाइल उपयोगकर्ता क्रेडेंशियल और उनके असाइन किए गए भूमिकाओं को स्टोर करती है।

  • lib फ़ोल्डर Tomcat के सही कार्य के लिए आवश्यक विभिन्न JAR फ़ाइलों को रखता है।

  • logs और temp फ़ोल्डर अस्थायी लॉग फ़ाइलों को स्टोर करते हैं।

  • webapps फ़ोल्डर Tomcat का डिफ़ॉल्ट वेब रूट है और सभी अनुप्रयोगों को होस्ट करता है। work फ़ोल्डर एक कैश के रूप में कार्य करता है और रनटाइम के दौरान डेटा को स्टोर करने के लिए उपयोग किया जाता है।

webapps के अंदर प्रत्येक फ़ोल्डर से अपेक्षित है कि उसकी निम्नलिखित संरचना हो।

webapps/customapp
├── images
├── index.jsp
├── META-INF
│   └── context.xml
├── status.xsd
└── WEB-INF
├── jsp
|   └── admin.jsp
└── web.xml
└── lib
|    └── jdbc_drivers.jar
└── classes
└── AdminServlet.class

सबसे महत्वपूर्ण फ़ाइल इनमें से WEB-INF/web.xml है, जिसे डिप्लॉयमेंट डिस्क्रिप्टर के रूप में जाना जाता है। यह फ़ाइल ऐप्लिकेशन द्वारा उपयोग किए जाने वाले रूट्स और इन रूट्स को संभालने वाली कक्षाओं के बारे में जानकारी संग्रहीत करती है। ऐप्लिकेशन द्वारा उपयोग की जाने वाली सभी संकलित कक्षाएँ WEB-INF/classes फ़ोल्डर में संग्रहीत होनी चाहिए। इन कक्षाओं में महत्वपूर्ण व्यावसायिक तर्क और संवेदनशील जानकारी हो सकती है। इन फ़ाइलों में कोई भी भेद्यता वेबसाइट के पूर्ण समझौते की ओर ले जा सकती है। lib फ़ोल्डर उस विशेष ऐप्लिकेशन के लिए आवश्यक पुस्तकालयों को संग्रहीत करता है। jsp फ़ोल्डर Jakarta Server Pages (JSP) को संग्रहीत करता है, जिसे पहले JavaServer Pages के रूप में जाना जाता था, जिसे Apache सर्वर पर PHP फ़ाइलों के साथ तुलना की जा सकती है।

यहाँ एक उदाहरण web.xml फ़ाइल है।

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
<servlet>
<servlet-name>AdminServlet</servlet-name>
<servlet-class>com.inlanefreight.api.AdminServlet</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>AdminServlet</servlet-name>
<url-pattern>/admin</url-pattern>
</servlet-mapping>
</web-app>

The web.xml कॉन्फ़िगरेशन ऊपर एक नया सर्वलेट नाम AdminServlet परिभाषित करता है जो क्लास com.inlanefreight.api.AdminServlet से मैप किया गया है। जावा डॉट नोटेशन का उपयोग पैकेज नाम बनाने के लिए करता है, जिसका अर्थ है कि ऊपर परिभाषित क्लास के लिए डिस्क पर पथ होगा:

  • classes/com/inlanefreight/api/AdminServlet.class

इसके बाद, एक नया सर्वलेट मैपिंग बनाया गया है ताकि /admin के लिए अनुरोधों को AdminServlet से मैप किया जा सके। यह कॉन्फ़िगरेशन /admin के लिए प्राप्त किसी भी अनुरोध को AdminServlet.class क्लास के लिए प्रोसेसिंग के लिए भेजेगा। web.xml विवरण में बहुत सारी संवेदनशील जानकारी होती है और यह एक महत्वपूर्ण फ़ाइल है जिसे स्थानीय फ़ाइल समावेशन (LFI) भेद्यता का लाभ उठाते समय जांचना चाहिए।

tomcat-users

tomcat-users.xml फ़ाइल का उपयोग /manager और host-manager प्रशासनिक पृष्ठों तक पहुँच को अनुमति देने या अस्वीकार करने के लिए किया जाता है।

<?xml version="1.0" encoding="UTF-8"?>

<SNIP>

<tomcat-users xmlns="http://tomcat.apache.org/xml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
version="1.0">
<!--
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

The users below are wrapped in a comment and are therefore ignored. If you
wish to configure one or more of these users for use with the manager web
application, do not forget to remove the <!.. ..> that surrounds them. You
will also need to set the passwords to something appropriate.
-->


<SNIP>

!-- user manager can access only manager section -->
<role rolename="manager-gui" />
<user username="tomcat" password="tomcat" roles="manager-gui" />

<!-- user admin can access manager and admin section both -->
<role rolename="admin-gui" />
<user username="admin" password="admin" roles="manager-gui,admin-gui" />


</tomcat-users>

The file shows us what each of the roles manager-gui, manager-script, manager-jmx, and manager-status provide access to. In this example, we can see that a user tomcat with the password tomcat has the manager-gui role, and a second weak password admin is set for the user account admin

References

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

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

Last updated