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

205 lines
13 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 8009 - Pentesting Apache JServ Protocol (AJP)
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Υποστήριξη HackTricks</summary>
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
<figure><img src="/.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
Εγγραφείτε στον [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server για να επικοινωνήσετε με έμπειρους hackers και κυνηγούς bug bounty!
**Ενημερώσεις Hacking**\
Συμμετάσχετε σε περιεχόμενο που εμβαθύνει στην αδρεναλίνη και τις προκλήσεις του hacking
**Ειδήσεις Hack σε Πραγματικό Χρόνο**\
Μείνετε ενημερωμένοι με τον ταχύτατο κόσμο του hacking μέσω ειδήσεων και πληροφοριών σε πραγματικό χρόνο
**Τελευταίες Ανακοινώσεις**\
Μείνετε ενημερωμένοι με τις πιο πρόσφατες bug bounties που ξεκινούν και κρίσιμες ενημερώσεις πλατφορμών
**Εγγραφείτε μαζί μας στο** [**Discord**](https://discord.com/invite/N3FrSbmwdy) και ξεκινήστε να συνεργάζεστε με κορυφαίους hackers σήμερα!
## Βασικές Πληροφορίες
Από: [https://diablohorn.com/2011/10/19/8009-the-forgotten-tomcat-port/](https://diablohorn.com/2011/10/19/8009-the-forgotten-tomcat-port/)
> Το AJP είναι ένα πρωτόκολλο καλωδίωσης. Είναι μια βελτιστοποιημένη έκδοση του πρωτοκόλλου HTTP για να επιτρέπει σε έναν αυτόνομο web server όπως ο [Apache](http://httpd.apache.org/) να επικοινωνεί με τον Tomcat. Ιστορικά, ο Apache ήταν πολύ πιο γρήγορος από τον Tomcat στην εξυπηρέτηση στατικού περιεχομένου. Η ιδέα είναι να επιτρέπεται στον Apache να εξυπηρετεί το στατικό περιεχόμενο όταν είναι δυνατόν, αλλά να προξενεί το αίτημα στον Tomcat για περιεχόμενο σχετικό με τον Tomcat.
Επίσης ενδιαφέρον:
> Το πρωτόκολλο ajp13 είναι προσανατολισμένο σε πακέτα. Ένας δυαδικός μορφότυπος επιλέχθηκε προφανώς σε σχέση με το πιο αναγνώσιμο απλό κείμενο για λόγους απόδοσης. Ο web server επικοινωνεί με το servlet container μέσω TCP συνδέσεων. Για να μειωθεί η δαπανηρή διαδικασία δημιουργίας socket, ο web server θα προσπαθήσει να διατηρήσει μόνιμες TCP συνδέσεις με το servlet container και να επαναχρησιμοποιήσει μια σύνδεση για πολλαπλούς κύκλους αιτήσεων/απαντήσεων.
**Προεπιλεγμένη θύρα:** 8009
```
PORT STATE SERVICE
8009/tcp open ajp13
```
## CVE-2020-1938 ['Ghostcat'](https://www.chaitin.cn/en/ghostcat)
Εάν η θύρα AJP είναι εκτεθειμένη, το Tomcat μπορεί να είναι ευάλωτο στην ευπάθεια Ghostcat. Εδώ είναι ένα [exploit](https://www.exploit-db.com/exploits/48143) που λειτουργεί με αυτό το ζήτημα.
Το Ghostcat είναι μια ευπάθεια LFI, αλλά κάπως περιορισμένη: μόνο αρχεία από μια συγκεκριμένη διαδρομή μπορούν να ανακτηθούν. Παρ' όλα αυτά, αυτό μπορεί να περιλαμβάνει αρχεία όπως το `WEB-INF/web.xml` που μπορεί να διαρρεύσουν σημαντικές πληροφορίες όπως διαπιστευτήρια για τη διεπαφή Tomcat, ανάλογα με τη ρύθμιση του διακομιστή.
Οι διορθωμένες εκδόσεις από 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**](../generic-methodologies-and-resources/brute-force.md#ajp)
## AJP Proxy
### Nginx Reverse Proxy & AJP
[Δείτε την εκδοχή Dockerized](8009-pentesting-apache-jserv-protocol-ajp.md#Dockerized-version)
Όταν συναντάμε μια ανοιχτή θύρα AJP proxy (8009 TCP), μπορούμε να χρησιμοποιήσουμε το Nginx με το `ajp_module` για να αποκτήσουμε πρόσβαση στον "κρυφό" Tomcat Manager. Αυτό μπορεί να γίνει με την εκτέλεση της διαδικασίας συμπίεσης του πηγαίου κώδικα του Nginx και την προσθήκη του απαιτούμενου module, ως εξής:
* Κατεβάστε τον πηγαίο κώδικα του Nginx
* Κατεβάστε το απαιτούμενο module
* Συμπιέστε τον πηγαίο κώδικα του Nginx με το `ajp_module`.
* Δημιουργήστε ένα αρχείο ρύθμισης που να δείχνει στη θύρα AJP
```bash
# 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`.
```shell-session
upstream tomcats {
server <TARGET_SERVER>:8009;
keepalive 10;
}
server {
listen 80;
location / {
ajp_keep_conn on;
ajp_pass tomcats;
}
}
```
Ξεκινήστε το Nginx και ελέγξτε αν όλα λειτουργούν σωστά εκδίδοντας ένα αίτημα cURL στον τοπικό σας υπολογιστή.
```html
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
```bash
git clone https://github.com/ScribblerCoder/nginx-ajp-docker
cd nginx-ajp-docker
```
Αντικαταστήστε το `TARGET-IP` στο `nginx.conf` με τη διεύθυνση IP AJP και στη συνέχεια κατασκευάστε και εκτελέστε.
```bash
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.
```bash
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`, μπορείτε αποτελεσματικά να αποκτήσετε έλεγχο του στοχευμένου συστήματος.
```bash
msf exploit(tomcat_mgr_deploy) > show options
```
## Αναφορές
* [https://github.com/yaoweibin/nginx\_ajp\_module](https://github.com/yaoweibin/nginx\_ajp\_module)
* [https://academy.hackthebox.com/module/145/section/1295](https://academy.hackthebox.com/module/145/section/1295)
<figure><img src="/.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
Συμμετάσχετε στον [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server για να επικοινωνήσετε με έμπειρους χάκερ και κυνηγούς bug bounty!
**Επιγνώσεις Χάκινγκ**\
Ασχοληθείτε με περιεχόμενο που εμβαθύνει στην αδρεναλίνη και τις προκλήσεις του hacking
**Νέα Χάκινγκ σε Πραγματικό Χρόνο**\
Μείνετε ενημερωμένοι με τον ταχύτατο κόσμο του hacking μέσω ειδήσεων και επιγνώσεων σε πραγματικό χρόνο
**Τελευταίες Ανακοινώσεις**\
Μείνετε ενημερωμένοι με τις πιο πρόσφατες bug bounties που ξεκινούν και κρίσιμες ενημερώσεις πλατφόρμας
**Συμμετάσχετε μαζί μας στο** [**Discord**](https://discord.com/invite/N3FrSbmwdy) και ξεκινήστε να συνεργάζεστε με κορυφαίους χάκερ σήμερα!
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Υποστηρίξτε το HackTricks</summary>
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Συμμετάσχετε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}