# 8009 - Pentesting Apache JServ Protocol (AJP)
{% hint style="success" %}
Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %}
Join [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) 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**](https://discord.com/invite/N3FrSbmwdy) and start collaborating with top hackers today!
## 基本情報
From: [https://diablohorn.com/2011/10/19/8009-the-forgotten-tomcat-port/](https://diablohorn.com/2011/10/19/8009-the-forgotten-tomcat-port/)
> AJPはワイヤープロトコルです。これは、[Apache](http://httpd.apache.org/)のようなスタンドアロンのウェブサーバーがTomcatと通信できるようにするために最適化されたHTTPプロトコルのバージョンです。歴史的に、Apacheは静的コンテンツを提供する際にTomcatよりもはるかに高速でした。アイデアは、可能な限りApacheが静的コンテンツを提供し、Tomcat関連のコンテンツについてはTomcatにリクエストをプロキシすることです。
Also interesting:
> ajp13プロトコルはパケット指向です。パフォーマンスの理由から、より読みやすいプレーンテキストよりもバイナリ形式が選ばれたと思われます。ウェブサーバーはTCP接続を介してサーブレットコンテナと通信します。ソケット作成の高コストなプロセスを削減するために、ウェブサーバーはサーブレットコンテナへの持続的なTCP接続を維持し、複数のリクエスト/レスポンスサイクルのために接続を再利用しようとします。
**デフォルトポート:** 8009
```
PORT STATE SERVICE
8009/tcp open ajp13
```
## CVE-2020-1938 ['Ghostcat'](https://www.chaitin.cn/en/ghostcat)
AJPポートが公開されている場合、TomcatはGhostcat脆弱性に対して脆弱である可能性があります。この問題に対処する[エクスプロイト](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
```
### [**ブルートフォース**](../generic-methodologies-and-resources/brute-force.md#ajp)
## AJPプロキシ
### NginxリバースプロキシとAJP
[Docker化されたバージョンをチェックアウト](8009-pentesting-apache-jserv-protocol-ajp.md#Dockerized-version)
オープンなAJPプロキシポート(8009 TCP)に遭遇した場合、`ajp_module`を使用してNginxを利用し、「隠れた」Tomcat Managerにアクセスできます。これは、Nginxのソースコードをコンパイルし、必要なモジュールを追加することで行えます。以下の手順に従います:
* Nginxのソースコードをダウンロード
* 必要なモジュールをダウンロード
* `ajp_module`を使用してNginxのソースコードをコンパイル
* 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`ブロック全体をコメントアウトし、`/etc/nginx/conf/nginx.conf`の`http`ブロック内に以下の行を追加します。
```shell-session
upstream tomcats {
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
Apache Tomcat/X.X.XX