8009 - Pentesting Apache JServ Protocol (AJP)

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

Support HackTricks

Join HackenProof Discord server to communicate with experienced hackers and bug bounty hunters!

Hacking Insights Engage with content that delves into the thrill and challenges of hacking

Real-Time Hack News Keep up-to-date with fast-paced hacking world through real-time news and insights

Latest Announcements Stay informed with the newest bug bounties launching and crucial platform updates

Join us on Discord and start collaborating with top hackers today!

Basic Information

From: https://diablohorn.com/2011/10/19/8009-the-forgotten-tomcat-port/

AJP एक वायर प्रोटोकॉल है। यह HTTP प्रोटोकॉल का एक अनुकूलित संस्करण है जो एक स्वतंत्र वेब सर्वर जैसे Apache को 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'

यदि AJP पोर्ट उजागर है, तो Tomcat Ghostcat भेद्यता के प्रति संवेदनशील हो सकता है। यहाँ एक शोषण है जो इस समस्या के साथ काम करता है।

Ghostcat एक LFI भेद्यता है, लेकिन कुछ हद तक सीमित: केवल एक निश्चित पथ से फ़ाइलें खींची जा सकती हैं। फिर भी, इसमें WEB-INF/web.xml जैसी फ़ाइलें शामिल हो सकती हैं जो Tomcat इंटरफ़ेस के लिए क्रेडेंशियल्स जैसी महत्वपूर्ण जानकारी लीक कर सकती हैं, जो सर्वर सेटअप पर निर्भर करती है।

9.0.31, 8.5.51, और 7.0.100 या उससे ऊपर के पैच किए गए संस्करणों ने इस समस्या को ठीक कर दिया है।

Enumeration

Automatic

nmap -sV --script ajp-auth,ajp-headers,ajp-methods,ajp-request -n -p 8009 <IP>

AJP प्रॉक्सी

Nginx रिवर्स प्रॉक्सी और AJP

डॉकराइज्ड संस्करण देखें

जब हम एक खुले AJP प्रॉक्सी पोर्ट (8009 TCP) का सामना करते हैं, तो हम "छिपे हुए" टॉमकैट प्रबंधक तक पहुँचने के लिए Nginx का उपयोग कर सकते हैं। यह Nginx स्रोत कोड को संकलित करके और आवश्यक मॉड्यूल को जोड़कर किया जा सकता है, जैसे:

  • Nginx स्रोत कोड डाउनलोड करें

  • आवश्यक मॉड्यूल डाउनलोड करें

  • ajp_module के साथ Nginx स्रोत कोड संकलित करें।

  • AJP पोर्ट की ओर इशारा करते हुए एक कॉन्फ़िगरेशन फ़ाइल बनाएं

# 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

server ब्लॉक को टिप्पणी करें और /etc/nginx/conf/nginx.conf में http ब्लॉक के अंदर निम्नलिखित पंक्तियाँ जोड़ें।

upstream tomcats {
server <TARGET_SERVER>:8009;
keepalive 10;
}
server {
listen 80;
location / {
ajp_keep_conn on;
ajp_pass tomcats;
}
}

Nginx शुरू करें और अपने स्थानीय होस्ट पर cURL अनुरोध जारी करके जांचें कि सब कुछ सही ढंग से काम कर रहा है।

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>

Nginx Dockerized-version

git clone https://github.com/ScribblerCoder/nginx-ajp-docker
cd nginx-ajp-docker

nginx.conf में TARGET-IP को AJP IP से बदलें, फिर बनाएं और चलाएं।

docker build . -t nginx-ajp-proxy
docker run -it --rm -p 80:80 nginx-ajp-proxy

Apache AJP Proxy

खुले पोर्ट 8009 का सामना करना बिना किसी अन्य सुलभ वेब पोर्ट के दुर्लभ है। हालाँकि, इसे Metasploit का उपयोग करके शोषण करना अभी भी संभव है। Apache को प्रॉक्सी के रूप में उपयोग करके, अनुरोधों को पोर्ट 8009 पर Tomcat की ओर पुनर्निर्देशित किया जा सकता है।

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

यह सेटअप AJP प्रोटोकॉल की बाइनरी प्रकृति के कारण घुसपैठ पहचान और रोकथाम प्रणालियों (IDS/IPS) को बायपास करने की क्षमता प्रदान करता है, हालांकि इस क्षमता की पुष्टि नहीं की गई है। एक नियमित Metasploit Tomcat एक्सप्लॉइट को 127.0.0.1:80 पर निर्देशित करके, आप लक्षित प्रणाली पर प्रभावी रूप से नियंत्रण प्राप्त कर सकते हैं।

msf  exploit(tomcat_mgr_deploy) > show options

संदर्भ

Join HackenProof Discord server to communicate with experienced hackers and bug bounty hunters!

हैकिंग अंतर्दृष्टि Engage with content that delves into the thrill and challenges of hacking

वास्तविक समय हैक समाचार Keep up-to-date with fast-paced hacking world through real-time news and insights

नवीनतम घोषणाएँ Stay informed with the newest bug bounties launching and crucial platform updates

Join us on Discord and start collaborating with top hackers today!

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

Support HackTricks

Last updated