8009 - Pentesting Apache JServ Protocol (AJP)

Reading time: 4 minutes

tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Μάθετε & εξασκηθείτε στο Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks

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'

Αυτή είναι μια ευπάθεια LFI που επιτρέπει την πρόσβαση σε ορισμένα αρχεία όπως το WEB-INF/web.xml που περιέχει διαπιστευτήρια. Αυτό είναι ένα exploit για την εκμετάλλευση της ευπάθειας και οι εκτεθειμένες θύρες 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>

Brute force

AJP Proxy

Nginx Reverse Proxy + AJP

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

Είναι δυνατόν να επικοινωνήσετε με μια ανοιχτή θύρα AJP proxy (8009 TCP) χρησιμοποιώντας το Nginx ajp_module apache module και να αποκτήσετε πρόσβαση στο Tomcat Manager από αυτή τη θύρα, κάτι που θα μπορούσε τελικά να οδηγήσει σε RCE στον ευάλωτο διακομιστή.

  • Ξεκινήστε να κατεβάζετε το Nginx από https://nginx.org/en/download.html και στη συνέχεια να το συντάξετε με το ajp module:
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 block και προσθέστε τα εξής στο http block στο /etc/nginx/conf/nginx.conf.
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

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

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

Apache AJP Proxy

Είναι επίσης δυνατό να χρησιμοποιήσετε έναν Apache AJP proxy για να αποκτήσετε πρόσβαση σε αυτήν την θύρα αντί για το Nginx.

References

tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Μάθετε & εξασκηθείτε στο Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks