mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-30 00:20:59 +00:00
242 lines
21 KiB
Markdown
242 lines
21 KiB
Markdown
# 8009 - Apache JServ Protocol (AJP) का पेंटेस्टिंग
|
|
|
|
<details>
|
|
|
|
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
|
|
|
* क्या आप किसी **साइबर सुरक्षा कंपनी** में काम करते हैं? क्या आप अपनी **कंपनी को HackTricks में विज्ञापित** देखना चाहते हैं? या क्या आपको **PEASS की नवीनतम संस्करण या HackTricks को PDF में डाउनलोड करने का उपयोग** करने की इच्छा है? [**सदस्यता योजनाएं**](https://github.com/sponsors/carlospolop) की जांच करें!
|
|
* खोजें [**The PEASS Family**](https://opensea.io/collection/the-peass-family), हमारा विशेष संग्रह [**NFTs**](https://opensea.io/collection/the-peass-family)
|
|
* प्राप्त करें [**आधिकारिक PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
|
* **शामिल हों** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में या मुझे **Twitter** पर **फ़ॉलो** करें [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
|
* **अपने हैकिंग ट्रिक्स साझा करें और PRs सबमिट करके** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **और** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **को** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **में साझा करें।**
|
|
|
|
</details>
|
|
|
|
<figure><img src="../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
**HackenProof में सभी क्रिप्टो बग बाउंटी होती है।**
|
|
|
|
**देरी के बिना पुरस्कार प्राप्त करें**\
|
|
HackenProof बाउंटी तब शुरू होती हैं जब उनके ग्राहक इनाम बजट जमा करते हैं। बग सत्यापित होने के बाद आपको इनाम मिलेगा।
|
|
|
|
**वेब3 पेंटेस्टिंग में अनुभव प्राप्त करें**\
|
|
ब्लॉकचेन प्रोटोकॉल और स्मार्ट कॉन्ट्रैक्ट्स नई इंटरनेट हैं! उनके उभरते दिनों में वेब3 सुरक्षा को मास्टर करें।
|
|
|
|
**वेब3 हैकर लीजेंड बनें**\
|
|
प्रत्येक सत्यापित बग के साथ प्रतिष्ठा अंक प्राप्त करें और साप्ताहिक लीडरबोर्ड के शीर्ष पर विजयी बनें।
|
|
|
|
[**HackenProof पर साइन अप करें**](https://hackenproof.com/register) और अपने हैक्स से कमाई करें!
|
|
|
|
{% embed url="https://hackenproof.com/register" %}
|
|
|
|
## मूलभूत जानकारी
|
|
|
|
स्रोत: [https://diablohorn.com/2011/10/19/8009-the-forgotten-tomcat-port/](https://diablohorn.com/2011/10/19/8009-the-forgotten-tomcat-port/)
|
|
|
|
> AJP एक तार प्रोटोकॉल है। यह एक HTTP प्रोटोकॉल का अनुकूलित संस्करण है जो एक स्वतंत्र वेब सर्वर जैसे [Apache](http://httpd.apache.org/) को Tomcat से बातचीत करने की अनुमति देता है। ऐतिहासिक रूप से, Apache स्टेटिक सामग्री को सेवा करने में Tomcat से बहुत तेज रहा है। विचार यह है कि Apache को संभव होने पर स्टेटिक सामग्री की सेवा करने दें, लेकिन Tomcat संबंधित सामग्री के लिए अनुरोध को Tomcat के प्रति प्रॉक्सी करें।
|
|
|
|
इसके अलावा रोचक है:
|
|
|
|
> ajp13 प्रोटोकॉल पैकेट-आधारित है। प्रदर्शन के कारण, एक बाइनरी प्रारूप को सुपोषित किया गया था जो पठनीय सादा पाठ के बजाय चुना गया। वेब सर्वर TCP कनेक्शन के माध्यम से सर्वलेट कंटेनर के साथ संवाद करता है। सॉकेट निर्माण की महंगी प्रक्रिया कम करने के लिए, वेब सर्वर सर्वलेट कंटेनर के साथ स्थायी TCP कनेक्शन बनाए रखने का प्रयास करेगा, और एक कनेक्शन को एकाधिक अनुरोध / प्रतिक्रिया चक्र के लिए पुनः उपयोग करने का प्रयास करेगा।
|
|
|
|
**डिफ़ॉल्ट पोर्ट:** 8009
|
|
```
|
|
PORT STATE SERVICE
|
|
8009/tcp open ajp13
|
|
```
|
|
## CVE-2020-1938 ['Ghostcat'](https://www.chaitin.cn/en/ghostcat)
|
|
|
|
यदि AJP पोर्ट उजागर है, तो टॉमकैट घोस्टकैट संकटग्रस्तता के प्रति संवेदनशील हो सकता है। यहां एक [शोध](https://www.exploit-db.com/exploits/48143) है जो इस समस्या के साथ काम करता है।
|
|
|
|
घोस्टकैट एक LFI संकटग्रस्तता है, लेकिन कुछ हद तक प्रतिबंधित है: केवल एक निश्चित पथ से फ़ाइलें खींची जा सकती हैं। फिर भी, इसमें `WEB-INF/web.xml` जैसी फ़ाइलें शामिल हो सकती हैं जो सर्वर सेटअप पर निर्भर करता है, जिसमें टॉमकैट इंटरफ़ेस के लिए प्रमाणपत्र जैसी महत्वपूर्ण जानकारी लीक हो सकती है।
|
|
|
|
इस समस्या को ठीक करने के लिए 9.0.31, 8.5.51 और 7.0.100 या उच्चतर संस्करणों को पैच किया गया है।
|
|
|
|
## जाँच
|
|
|
|
### स्वचालित
|
|
```bash
|
|
nmap -sV --script ajp-auth,ajp-headers,ajp-methods,ajp-request -n -p 8009 <IP>
|
|
```
|
|
### [**ब्रूट फोर्स**](../generic-methodologies-and-resources/brute-force.md#ajp)
|
|
|
|
## AJP प्रॉक्सी
|
|
|
|
### अपाचे AJP प्रॉक्सी
|
|
|
|
यह अद्भुत बात नहीं है कि आप पोर्ट 8009 खोलते हैं और कोई अन्य वेब पोर्ट नहीं खोलते हैं। इस मामले में, यह अच्छा होगा कि आप मेटास्प्लोइट जैसे मौजूदा उपकरण का उपयोग करें और इसे प्राप्त करें। एक उद्धरण में कहा गया है कि आप (अवश्य) अपाचे का उपयोग करके अनुरोधों को टॉमकैट पोर्ट 8009 पर प्रॉक्सी कर सकते हैं। संदर्भों में आपको इसे कैसे करना है इसके बारे में एक अच्छा मार्गदर्शिका मिलेगी (पहले इसे पढ़ें), जो निम्नलिखित मेरी खुद की मशीन पर उपयोग किए गए कमांडों की एक संक्षेप मात्रा है। मैंने कुछ मूल निर्देशों को छोड़ दिया है क्योंकि वे आवश्यक नहीं लगे।
|
|
```bash
|
|
sudo apt-get install libapache2-mod-jk
|
|
sudo vim /etc/apache2/apache2.conf # append the following line to the config
|
|
Include ajp.conf
|
|
sudo vim /etc/apache2/ajp.conf # create the following file, change HOST to the target address
|
|
ProxyRequests Off
|
|
<Proxy *>
|
|
Order deny,allow
|
|
Deny from all
|
|
Allow from localhost
|
|
</Proxy>
|
|
ProxyPass / ajp://HOST:8009/
|
|
ProxyPassReverse / ajp://HOST:8009/
|
|
sudo a2enmod proxy_http
|
|
sudo a2enmod proxy_ajp
|
|
sudo systemctl restart apache2
|
|
```
|
|
इस सेटअप का एक अच्छा फायदा यह है कि आप IDS/IPS सिस्टम को रोक सकते हैं क्योंकि AJP प्रोटोकॉल कुछ हद तक बाइनरी होता है, लेकिन मैंने इसे सत्यापित नहीं किया है। अब आप अपने नियमित मेटास्प्लोइट टॉमकैट अभिक्रिया को 127.0.0.1:80 पर पॉइंट कर सकते हैं और उस सिस्टम को अधिकार में ले सकते हैं। यहां मेटास्प्लोइट की आउटपुट भी है:
|
|
```bash
|
|
msf exploit(tomcat_mgr_deploy) > show options
|
|
|
|
Module options (exploit/multi/http/tomcat_mgr_deploy):
|
|
|
|
Name Current Setting Required Description
|
|
---- --------------- -------- -----------
|
|
PASSWORD tomcat no The password for the specified username
|
|
PATH /manager yes The URI path of the manager app (/deploy and /undeploy will be used)
|
|
Proxies no Use a proxy chain
|
|
RHOST localhost yes The target address
|
|
RPORT 80 yes The target port
|
|
USERNAME tomcat no The username to authenticate as
|
|
VHOST no HTTP server virtual host
|
|
```
|
|
### Nginx रिवर्स प्रॉक्सी और AJP
|
|
|
|
[AJP के डॉकराइज़्ड संस्करण की जांच करें](#डॉकराइज़्ड-संस्करण)
|
|
|
|
जब हमें एक खुला AJP प्रॉक्सी पोर्ट (8009 TCP) मिलता है, तो हम Nginx का उपयोग `ajp_module` के साथ करके "छिपा हुआ" Tomcat प्रबंधक तक पहुंच सकते हैं। इसे निम्नलिखित तरीके से कर सकते हैं:
|
|
|
|
* Nginx स्रोत को डाउनलोड करें
|
|
* आवश्यक मॉड्यूल को डाउनलोड करें
|
|
* `ajp_module` के साथ Nginx स्रोत को कंपाइल करें।
|
|
* AJP पोर्ट को इंगित करने वाली एक कॉन्फ़िगरेशन फ़ाइल बनाएं
|
|
```bash
|
|
# Download Nginx code
|
|
wget https://nginx.org/download/nginx-1.21.3.tar.gz
|
|
tar -xzvf nginx-1.21.3.tar.gz
|
|
|
|
# Compile Nginx source code with the ajp module
|
|
git clone https://github.com/dvershinin/nginx_ajp_module.git
|
|
cd nginx-1.21.3
|
|
sudo apt install libpcre3-dev
|
|
./configure --add-module=`pwd`/../nginx_ajp_module --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules
|
|
make
|
|
sudo make install
|
|
nginx -V
|
|
```
|
|
एक्सटर्नल आईपी एड्रेस के लिए निम्नलिखित लाइनों को `http` ब्लॉक के अंदर `/etc/nginx/conf/nginx.conf` में जोड़ें। एक्सटर्नल आईपी एड्रेस के लिए निम्नलिखित लाइनों को `http` ब्लॉक के अंदर `/etc/nginx/conf/nginx.conf` में जोड़ें।
|
|
```shell-session
|
|
upstream tomcats {
|
|
server <TARGET_SERVER>:8009;
|
|
keepalive 10;
|
|
}
|
|
server {
|
|
listen 80;
|
|
location / {
|
|
ajp_keep_conn on;
|
|
ajp_pass tomcats;
|
|
}
|
|
}
|
|
```
|
|
एनजिनक्स को शुरू करें और सब कुछ सही काम कर रहा है यह सुनिश्चित करने के लिए अपने स्थानीय होस्ट पर एक cURL अनुरोध जारी करके जांचें।
|
|
```html
|
|
sudo nginx
|
|
curl http://127.0.0.1:80
|
|
|
|
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8" />
|
|
<title>Apache Tomcat/X.X.XX</title>
|
|
<link href="favicon.ico" rel="icon" type="image/x-icon" />
|
|
<link href="favicon.ico" rel="shortcut icon" type="image/x-icon" />
|
|
<link href="tomcat.css" rel="stylesheet" type="text/css" />
|
|
</headas
|
|
<body>
|
|
<div id="wrapper">
|
|
<div id="navigation" class="curved container">
|
|
<span id="nav-home"><a href="https://tomcat.apache.org/">Home</a></span>
|
|
<span id="nav-hosts"><a href="/docs/">Documentation</a></span>
|
|
<span id="nav-config"><a href="/docs/config/">Configuration</a></span>
|
|
<span id="nav-examples"><a href="/examples/">Examples</a></span>
|
|
<span id="nav-wiki"><a href="https://wiki.apache.org/tomcat/FrontPage">Wiki</a></span>
|
|
<span id="nav-lists"><a href="https://tomcat.apache.org/lists.html">Mailing Lists</a></span>
|
|
<span id="nav-help"><a href="https://tomcat.apache.org/findhelp.html">Find Help</a></span>
|
|
<br class="separator" />
|
|
</div>
|
|
<div id="asf-box">
|
|
<h1>Apache Tomcat/X.X.XX</h1>
|
|
</div>
|
|
<div id="upper" class="curved container">
|
|
<div id="congrats" class="curved container">
|
|
<h2>If you're seeing this, you've successfully installed Tomcat. Congratulations!</h2>
|
|
<SNIP>
|
|
```
|
|
### डॉकराइज़्ड-संस्करण
|
|
|
|
यदि आप डॉकराइज़्ड संस्करण का उपयोग करना चाहते हैं, तो आपको एक डॉकर इमेज बनानी होगी जिसमें आपके पास आवश्यक सभी आवश्यकताएं होंगी। निम्नलिखित निर्देशों का पालन करें:
|
|
|
|
1. एक नया डॉकर फ़ाइल बनाएं और उसे `Dockerfile` नाम दें।
|
|
2. निम्नलिखित कोड को `Dockerfile` में जोड़ें:
|
|
|
|
```docker
|
|
FROM tomcat:latest
|
|
COPY your_app.war /usr/local/tomcat/webapps/
|
|
CMD ["catalina.sh", "run"]
|
|
```
|
|
|
|
3. `your_app.war` को अपने अनुप्रयोग के वास्तविक नाम से बदलें।
|
|
4. डॉकर इमेज बनाने के लिए निम्नलिखित कमांड का उपयोग करें:
|
|
|
|
```bash
|
|
docker build -t your_image_name .
|
|
```
|
|
|
|
5. डॉकर इमेज को चलाने के लिए निम्नलिखित कमांड का उपयोग करें:
|
|
|
|
```bash
|
|
docker run -p 8080:8080 your_image_name
|
|
```
|
|
|
|
6. अब आपका डॉकराइज़्ड अनुप्रयोग `localhost:8080` पर उपलब्ध होगा।
|
|
|
|
ध्यान दें कि यह निर्देश टॉमकैट वेब सर्वर के लिए है, लेकिन आप अपने अनुप्रयोग के लिए अन्य वेब सर्वर भी चुन सकते हैं।
|
|
```bash
|
|
git clone https://github.com/ScribblerCoder/nginx-ajp-docker
|
|
cd nginx-ajp-docker
|
|
```
|
|
अपने `nginx.conf` फ़ाइल में `TARGET-IP` को AJP IP के साथ बदलें और फिर उसे बिल्ड और चलाएं।
|
|
``` bash
|
|
docker build . -t nginx-ajp-proxy
|
|
docker run -it --rm -p 80:80 nginx-ajp-proxy
|
|
```
|
|
## संदर्भ
|
|
|
|
* [https://academy.hackthebox.com/module/145/section/1295](https://academy.hackthebox.com/module/145/section/1295)
|
|
|
|
<figure><img src="../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
**HackenProof क्रिप्टो बग बाउंटी के लिए घर है।**
|
|
|
|
**देरी के बिना पुरस्कार प्राप्त करें**\
|
|
HackenProof बाउंटी केवल तब शुरू होती हैं जब उनके ग्राहक पुरस्कार बजट जमा करते हैं। आपको बग सत्यापित होने के बाद पुरस्कार मिलेगा।
|
|
|
|
**वेब3 पेंटेस्टिंग में अनुभव प्राप्त करें**\
|
|
ब्लॉकचेन प्रोटोकॉल और स्मार्ट कॉन्ट्रैक्ट्स नई इंटरनेट हैं! उनके उभरते दिनों में वेब3 सुरक्षा को मास्टर करें।
|
|
|
|
**वेब3 हैकर लीजेंड बनें**\
|
|
प्रत्येक सत्यापित बग के साथ प्रतिष्ठा अंक प्राप्त करें और साप्ताहिक लीडरबोर्ड के शीर्ष पर विजयी बनें।
|
|
|
|
[**HackenProof पर साइन अप करें**](https://hackenproof.com/register) और अपने हैक्स से कमाई करें!
|
|
|
|
{% embed url="https://hackenproof.com/register" %}
|
|
|
|
<details>
|
|
|
|
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
|
|
|
* क्या आप किसी **साइबर सुरक्षा कंपनी** में काम करते हैं? क्या आप अपनी कंपनी को **HackTricks में विज्ञापित** देखना चाहते हैं? या क्या आपको **PEASS की नवीनतम संस्करण या HackTricks को PDF में डाउनलोड करने का उपयोग** करने की आवश्यकता है? [**सदस्यता योजनाएं**](https://github.com/sponsors/carlospolop) की जांच करें!
|
|
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा विशेष [**NFT**](https://opensea.io/collection/the-peass-family) संग्रह
|
|
* [**आधिकारिक PEASS & HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें
|
|
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में **शामिल** हों या मुझे **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)** का पालन करें।**
|
|
* **अपने हैकिंग ट्रिक्स को हमें PR के माध्यम से साझा करें** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **और** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **को सबमिट करके।**
|
|
|
|
</details>
|