21 KiB
8009 - Apache JServ Protocol (AJP) का पेंटेस्टिंग
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- क्या आप किसी साइबर सुरक्षा कंपनी में काम करते हैं? क्या आप अपनी कंपनी को HackTricks में विज्ञापित देखना चाहते हैं? या क्या आपको PEASS की नवीनतम संस्करण या HackTricks को PDF में डाउनलोड करने का उपयोग करने की इच्छा है? सदस्यता योजनाएं की जांच करें!
- खोजें The PEASS Family, हमारा विशेष संग्रह NFTs
- प्राप्त करें आधिकारिक PEASS & HackTricks swag
- शामिल हों 💬 Discord समूह या टेलीग्राम समूह में या मुझे Twitter पर फ़ॉलो करें 🐦@carlospolopm.
- अपने हैकिंग ट्रिक्स साझा करें और PRs सबमिट करके hacktricks repo और hacktricks-cloud repo को hacktricks-cloud repo में साझा करें।
HackenProof में सभी क्रिप्टो बग बाउंटी होती है।
देरी के बिना पुरस्कार प्राप्त करें
HackenProof बाउंटी तब शुरू होती हैं जब उनके ग्राहक इनाम बजट जमा करते हैं। बग सत्यापित होने के बाद आपको इनाम मिलेगा।
वेब3 पेंटेस्टिंग में अनुभव प्राप्त करें
ब्लॉकचेन प्रोटोकॉल और स्मार्ट कॉन्ट्रैक्ट्स नई इंटरनेट हैं! उनके उभरते दिनों में वेब3 सुरक्षा को मास्टर करें।
वेब3 हैकर लीजेंड बनें
प्रत्येक सत्यापित बग के साथ प्रतिष्ठा अंक प्राप्त करें और साप्ताहिक लीडरबोर्ड के शीर्ष पर विजयी बनें।
HackenProof पर साइन अप करें और अपने हैक्स से कमाई करें!
{% embed url="https://hackenproof.com/register" %}
मूलभूत जानकारी
स्रोत: https://diablohorn.com/2011/10/19/8009-the-forgotten-tomcat-port/
AJP एक तार प्रोटोकॉल है। यह एक HTTP प्रोटोकॉल का अनुकूलित संस्करण है जो एक स्वतंत्र वेब सर्वर जैसे Apache को Tomcat से बातचीत करने की अनुमति देता है। ऐतिहासिक रूप से, Apache स्टेटिक सामग्री को सेवा करने में Tomcat से बहुत तेज रहा है। विचार यह है कि Apache को संभव होने पर स्टेटिक सामग्री की सेवा करने दें, लेकिन Tomcat संबंधित सामग्री के लिए अनुरोध को Tomcat के प्रति प्रॉक्सी करें।
इसके अलावा रोचक है:
ajp13 प्रोटोकॉल पैकेट-आधारित है। प्रदर्शन के कारण, एक बाइनरी प्रारूप को सुपोषित किया गया था जो पठनीय सादा पाठ के बजाय चुना गया। वेब सर्वर TCP कनेक्शन के माध्यम से सर्वलेट कंटेनर के साथ संवाद करता है। सॉकेट निर्माण की महंगी प्रक्रिया कम करने के लिए, वेब सर्वर सर्वलेट कंटेनर के साथ स्थायी TCP कनेक्शन बनाए रखने का प्रयास करेगा, और एक कनेक्शन को एकाधिक अनुरोध / प्रतिक्रिया चक्र के लिए पुनः उपयोग करने का प्रयास करेगा।
डिफ़ॉल्ट पोर्ट: 8009
PORT STATE SERVICE
8009/tcp open ajp13
CVE-2020-1938 'Ghostcat'
यदि AJP पोर्ट उजागर है, तो टॉमकैट घोस्टकैट संकटग्रस्तता के प्रति संवेदनशील हो सकता है। यहां एक शोध है जो इस समस्या के साथ काम करता है।
घोस्टकैट एक LFI संकटग्रस्तता है, लेकिन कुछ हद तक प्रतिबंधित है: केवल एक निश्चित पथ से फ़ाइलें खींची जा सकती हैं। फिर भी, इसमें WEB-INF/web.xml
जैसी फ़ाइलें शामिल हो सकती हैं जो सर्वर सेटअप पर निर्भर करता है, जिसमें टॉमकैट इंटरफ़ेस के लिए प्रमाणपत्र जैसी महत्वपूर्ण जानकारी लीक हो सकती है।
इस समस्या को ठीक करने के लिए 9.0.31, 8.5.51 और 7.0.100 या उच्चतर संस्करणों को पैच किया गया है।
जाँच
स्वचालित
nmap -sV --script ajp-auth,ajp-headers,ajp-methods,ajp-request -n -p 8009 <IP>
ब्रूट फोर्स
AJP प्रॉक्सी
अपाचे AJP प्रॉक्सी
यह अद्भुत बात नहीं है कि आप पोर्ट 8009 खोलते हैं और कोई अन्य वेब पोर्ट नहीं खोलते हैं। इस मामले में, यह अच्छा होगा कि आप मेटास्प्लोइट जैसे मौजूदा उपकरण का उपयोग करें और इसे प्राप्त करें। एक उद्धरण में कहा गया है कि आप (अवश्य) अपाचे का उपयोग करके अनुरोधों को टॉमकैट पोर्ट 8009 पर प्रॉक्सी कर सकते हैं। संदर्भों में आपको इसे कैसे करना है इसके बारे में एक अच्छा मार्गदर्शिका मिलेगी (पहले इसे पढ़ें), जो निम्नलिखित मेरी खुद की मशीन पर उपयोग किए गए कमांडों की एक संक्षेप मात्रा है। मैंने कुछ मूल निर्देशों को छोड़ दिया है क्योंकि वे आवश्यक नहीं लगे।
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 पर पॉइंट कर सकते हैं और उस सिस्टम को अधिकार में ले सकते हैं। यहां मेटास्प्लोइट की आउटपुट भी है:
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 पोर्ट को इंगित करने वाली एक कॉन्फ़िगरेशन फ़ाइल बनाएं
# 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
में जोड़ें।
upstream tomcats {
server <TARGET_SERVER>:8009;
keepalive 10;
}
server {
listen 80;
location / {
ajp_keep_conn on;
ajp_pass tomcats;
}
}
एनजिनक्स को शुरू करें और सब कुछ सही काम कर रहा है यह सुनिश्चित करने के लिए अपने स्थानीय होस्ट पर एक 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>
डॉकराइज़्ड-संस्करण
यदि आप डॉकराइज़्ड संस्करण का उपयोग करना चाहते हैं, तो आपको एक डॉकर इमेज बनानी होगी जिसमें आपके पास आवश्यक सभी आवश्यकताएं होंगी। निम्नलिखित निर्देशों का पालन करें:
- एक नया डॉकर फ़ाइल बनाएं और उसे
Dockerfile
नाम दें। - निम्नलिखित कोड को
Dockerfile
में जोड़ें:
FROM tomcat:latest
COPY your_app.war /usr/local/tomcat/webapps/
CMD ["catalina.sh", "run"]
your_app.war
को अपने अनुप्रयोग के वास्तविक नाम से बदलें।- डॉकर इमेज बनाने के लिए निम्नलिखित कमांड का उपयोग करें:
docker build -t your_image_name .
- डॉकर इमेज को चलाने के लिए निम्नलिखित कमांड का उपयोग करें:
docker run -p 8080:8080 your_image_name
- अब आपका डॉकराइज़्ड अनुप्रयोग
localhost:8080
पर उपलब्ध होगा।
ध्यान दें कि यह निर्देश टॉमकैट वेब सर्वर के लिए है, लेकिन आप अपने अनुप्रयोग के लिए अन्य वेब सर्वर भी चुन सकते हैं।
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
संदर्भ
HackenProof क्रिप्टो बग बाउंटी के लिए घर है।
देरी के बिना पुरस्कार प्राप्त करें
HackenProof बाउंटी केवल तब शुरू होती हैं जब उनके ग्राहक पुरस्कार बजट जमा करते हैं। आपको बग सत्यापित होने के बाद पुरस्कार मिलेगा।
वेब3 पेंटेस्टिंग में अनुभव प्राप्त करें
ब्लॉकचेन प्रोटोकॉल और स्मार्ट कॉन्ट्रैक्ट्स नई इंटरनेट हैं! उनके उभरते दिनों में वेब3 सुरक्षा को मास्टर करें।
वेब3 हैकर लीजेंड बनें
प्रत्येक सत्यापित बग के साथ प्रतिष्ठा अंक प्राप्त करें और साप्ताहिक लीडरबोर्ड के शीर्ष पर विजयी बनें।
HackenProof पर साइन अप करें और अपने हैक्स से कमाई करें!
{% embed url="https://hackenproof.com/register" %}
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- क्या आप किसी साइबर सुरक्षा कंपनी में काम करते हैं? क्या आप अपनी कंपनी को HackTricks में विज्ञापित देखना चाहते हैं? या क्या आपको PEASS की नवीनतम संस्करण या HackTricks को PDF में डाउनलोड करने का उपयोग करने की आवश्यकता है? सदस्यता योजनाएं की जांच करें!
- The PEASS Family की खोज करें, हमारा विशेष NFT संग्रह
- आधिकारिक PEASS & HackTricks स्वैग प्राप्त करें
- 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या मुझे Twitter 🐦@carlospolopm** का पालन करें।**
- अपने हैकिंग ट्रिक्स को हमें PR के माध्यम से साझा करें hacktricks repo और hacktricks-cloud repo को सबमिट करके।