hacktricks/src/network-services-pentesting/8009-pentesting-apache-jserv-protocol-ajp.md

88 lines
5.8 KiB
Markdown

# 8009 - Pentesting Apache JServ Protocol (AJP)
{{#include ../banners/hacktricks-training.md}}
## Basic Information
From [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 पर प्रॉक्सी करें।
Also interesting:
> AJP13 प्रोटोकॉल पैकेट-उन्मुख है। प्रदर्शन के कारणों से एक बाइनरी प्रारूप को अधिक पठनीय साधारण पाठ पर चुना गया था। वेब सर्वर TCP कनेक्शनों के माध्यम से सर्वलेट कंटेनर के साथ संवाद करता है। सॉकेट निर्माण की महंगी प्रक्रिया को कम करने के लिए, वेब सर्वर सर्वलेट कंटेनर के लिए स्थायी TCP कनेक्शन बनाए रखने का प्रयास करेगा, और कई अनुरोध/प्रतिक्रिया चक्रों के लिए एक कनेक्शन का पुन: उपयोग करेगा।
**Default port:** 8009
```
PORT STATE SERVICE
8009/tcp open ajp13
```
## CVE-2020-1938 ['Ghostcat'](https://www.chaitin.cn/en/ghostcat)
यह एक LFI कमजोरियों है जो कुछ फ़ाइलें प्राप्त करने की अनुमति देती है जैसे `WEB-INF/web.xml` जिसमें क्रेडेंशियल्स होते हैं। यह कमजोरियों का दुरुपयोग करने के लिए एक [exploit](https://www.exploit-db.com/exploits/48143) है और AJP एक्सपोज़्ड पोर्ट्स इसके प्रति संवेदनशील हो सकते हैं।
पैच किए गए संस्करण 9.0.31, 8.5.51, और 7.0.100 पर या उससे ऊपर हैं।
## Enumeration
### Automatic
```bash
nmap -sV --script ajp-auth,ajp-headers,ajp-methods,ajp-request -n -p 8009 <IP>
```
### [**ब्रूट फोर्स**](../generic-hacking/brute-force.md#ajp)
## AJP प्रॉक्सी
### Nginx रिवर्स प्रॉक्सी + AJP
([Dockerized संस्करण देखें](8009-pentesting-apache-jserv-protocol-ajp.md#Dockerized-version))
एक खुले AJP प्रॉक्सी पोर्ट (8009 TCP) के साथ संवाद करना संभव है Nginx `ajp_module` अपाचे मॉड्यूल का उपयोग करके और इस पोर्ट से टॉमेट मैनेजर तक पहुंच प्राप्त करना जो अंततः कमजोर सर्वर में RCE की ओर ले जा सकता है।
- [https://nginx.org/en/download.html](https://nginx.org/en/download.html) से Nginx डाउनलोड करना शुरू करें और फिर इसे ajp मॉड्यूल के साथ संकलित करें:
```bash
# Compile Nginx with the ajp module
git clone https://github.com/dvershinin/nginx_ajp_module.git
cd nginx-version
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
```
- फिर, `server` ब्लॉक को टिप्पणी करें और `/etc/nginx/conf/nginx.conf` में `http` ब्लॉक में निम्नलिखित जोड़ें।
```json
upstream tomcats {
server <TARGET_SERVER>:8009;
keepalive 10;
}
server {
listen 80;
location / {
ajp_keep_conn on;
ajp_pass tomcats;
}
}
```
- अंत में, nginx शुरू करें (`sudo nginx`) और जांचें कि यह काम करता है `http://127.0.0.1` पर पहुँचकर
### Nginx Dockerized-version
```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
```
### Apache AJP Proxy
इसके बजाय **Nginx** का उपयोग करने के लिए उस पोर्ट तक पहुँचने के लिए **Apache AJP proxy** का उपयोग करना भी संभव है।
## References
- [https://github.com/yaoweibin/nginx_ajp_module](https://github.com/yaoweibin/nginx_ajp_module)
{{#include ../banners/hacktricks-training.md}}