Basic Tomcat Info

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert)!

Try Hard सुरक्षा समूह


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

रूट के साथ टॉमकैट न चलाने के लिए एक बहुत ही सामान्य कॉन्फ़िगरेशन है कि पोर्ट 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 फ़ोल्डर स्क्रिप्ट और बाइनरी को संचालित करने और चलाने के लिए आवश्यक होता है।

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

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

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

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

  • webapps फ़ोल्डर टॉमकैट का डिफ़ॉल्ट वेबरूट है और सभी एप्लिकेशनों को होस्ट करता है। 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 फ़ोल्डर जकार्ता सर्वर पेज्स (JSP) को संग्रहीत करता है, जिसे पहले JavaServer Pages के रूप में जाना जाता था, जो एक अपाचे सर्वर पर 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>

ऊपर दिया गया 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>

यह फ़ाइल हमें दिखाती है कि प्रत्येक भूमिका manager-gui, manager-script, manager-jmx, और manager-status किसको पहुंच प्रदान करती है। इस उदाहरण में, हम देख सकते हैं कि एक उपयोगकर्ता tomcat जिसका पासवर्ड tomcat है, के पास manager-gui भूमिका है, और एक दूसरा कमजोर पासवर्ड admin उपयोगकर्ता खाते admin के लिए सेट किया गया है।

Last updated