8009 - Pentesting Apache JServ Protocol (AJP)
Reading time: 6 minutes
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
基本情報
From https://diablohorn.com/2011/10/19/8009-the-forgotten-tomcat-port/
AJPはワイヤプロトコルです。これは、ApacheのようなスタンドアロンのウェブサーバーがTomcatと通信できるようにするために最適化されたHTTPプロトコルのバージョンです。歴史的に、Apacheは静的コンテンツを提供する際にTomcatよりもはるかに高速でした。アイデアは、可能な限りApacheに静的コンテンツを提供させ、Tomcat関連のコンテンツについてはTomcatにリクエストをプロキシすることです。
また興味深い点:
ajp13プロトコルはパケット指向です。パフォーマンスの理由から、より読みやすいプレーンテキストよりもバイナリ形式が選ばれたと推測されます。ウェブサーバーはTCP接続を介してサーブレットコンテナと通信します。ソケット作成の高コストなプロセスを削減するために、ウェブサーバーはサーブレットコンテナへの持続的なTCP接続を維持し、複数のリクエスト/レスポンスサイクルのために接続を再利用しようとします。
デフォルトポート: 8009
PORT STATE SERVICE
8009/tcp open ajp13
CVE-2020-1938 'Ghostcat'
これは、認証情報を含む WEB-INF/web.xml
のようなファイルを取得できるLFI脆弱性です。これは、脆弱性を悪用するためのエクスプロイトであり、AJPが公開しているポートはこれに対して脆弱である可能性があります。
パッチが適用されたバージョンは、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プロキシ
Nginxリバースプロキシ + AJP
オープンなAJPプロキシポート(8009 TCP)と通信することが可能で、Nginxのajp_module
Apacheモジュールを使用してこのポートからTomcatマネージャーにアクセスでき、最終的には脆弱なサーバーでのRCEにつながる可能性があります。
- https://nginx.org/en/download.html からNginxのダウンロードを開始し、ajpモジュールでコンパイルします:
# 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
ブロックをコメントアウトし、/etc/nginx/conf/nginx.conf
のhttp
ブロックに以下を追加します。
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のDocker化バージョン
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
Apache AJP プロキシ
Nginx の代わりにそのポートにアクセスするために Apache AJP プロキシ を使用することも可能です。
参考文献
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。