# 8009 - Apache JServ Protocol (AJP)のペンテスト
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 * [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 * [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** * **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
**HackenProofはすべての暗号バグバウンティの場所です。** **遅延なしで報酬を受け取る**\ HackenProofのバウンティは、顧客が報酬予算を入金した後に開始されます。バグが検証された後に報酬を受け取ることができます。 **Web3ペンテストの経験を積む**\ ブロックチェーンプロトコルとスマートコントラクトは新しいインターネットです!上昇期のWeb3セキュリティをマスターしましょう。 **Web3ハッカーレジェンドになる**\ 各検証済みのバグで評判ポイントを獲得し、週間リーダーボードのトップを制覇しましょう。 [**HackenProofでサインアップ**](https://hackenproof.com/register)してハッキングから報酬を得ましょう! {% embed url="https://hackenproof.com/register" %} ## 基本情報 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/)などのスタンドアロンのWebサーバーがTomcatと通信するためのHTTPプロトコルの最適化バージョンです。歴史的に、Apacheは静的コンテンツの提供においてTomcatよりもはるかに高速でした。アイデアは、可能な限りApacheが静的コンテンツを提供し、Tomcat関連のコンテンツに対してはリクエストをTomcatにプロキシすることです。 また興味深いのは: > ajp13プロトコルはパケット指向です。パフォーマンスの理由から、より読みやすいプレーンテキストではなく、バイナリ形式が選択されたと思われます。WebサーバーはTCP接続を介してサーブレットコンテナと通信します。ソケットの作成にかかる高価なプロセスを削減するために、Webサーバーはサーブレットコンテナへの持続的な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(Local File Inclusion)の脆弱性ですが、ある特定のパスからのみファイルを取得できます。それでも、これには`WEB-INF/web.xml`などの重要な情報(Tomcatインターフェースの資格情報など)を漏洩させる可能性があります。ただし、サーバーのセットアップによって異なります。 修正済みバージョンは9.0.31以上、8.5.51、および7.0.100です。 ## 列挙 ### 自動化 ```bash nmap -sV --script ajp-auth,ajp-headers,ajp-methods,ajp-request -n -p 8009 ``` ### [**ブルートフォース**](../generic-methodologies-and-resources/brute-force.md#ajp) ## AJPプロキシ ### Apache AJPプロキシ 通常、ポート8009が開いていて他のウェブポートが開いていないことはめったにありません。その場合、既存のツール(例:Metasploit)を使用して侵入することができれば便利です。引用の一つによれば、Apacheを使用してリクエストを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 Order deny,allow Deny from all Allow from localhost ProxyPass / ajp://HOST:8009/ ProxyPassReverse / ajp://HOST:8009/ sudo a2enmod proxy_http sudo a2enmod proxy_ajp sudo systemctl restart apache2 ``` このセットアップを使用することの良い副作用は、AJPプロトコルがいくぶんバイナリであるため、設置されているIDS/IPSシステムを阻止する可能性があることですが、これは確認していません。これで、通常のメタスプロイトのトムキャットの脆弱性を127.0.0.1:80に向けるだけで、そのシステムを乗っ取ることができます。以下はメタスプロイトの出力です。 ```bash msf exploit(tomcat_mgr_deploy) > show options Module options (exploit/multi/http/tomcat_mgr_deploy): Name Current Setting Required Description ---- --------------- -------- ----------- PASSWORD tomcat no The password for the specified username PATH /manager yes The URI path of the manager app (/deploy and /undeploy will be used) Proxies no Use a proxy chain RHOST localhost yes The target address RPORT 80 yes The target port USERNAME tomcat no The username to authenticate as VHOST no HTTP server virtual host ``` ### Nginxリバースプロキシ&AJP オープンなAJPプロキシポート(8009 TCP)に遭遇した場合、Nginxを`ajp_module`と共に使用して「隠れた」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 ``` 次の行を`/etc/nginx/conf/nginx.conf`の`http`ブロック内に追加し、`server`ブロック全体をコメントアウトしてください。 ```shell-session upstream tomcats { server :8009; keepalive 10; } server { listen 80; location / { ajp_keep_conn on; ajp_pass tomcats; } } ``` ローカルホストに対してcURLリクエストを発行して、Nginxが正常に動作しているか確認してください。 ```html sudo nginx curl http://127.0.0.1:80 Apache Tomcat/X.X.XX

Apache Tomcat/X.X.XX

If you're seeing this, you've successfully installed Tomcat. Congratulations!

``` ## 参考文献 * [https://academy.hackthebox.com/module/145/section/1295](https://academy.hackthebox.com/module/145/section/1295)
**HackenProofはすべての暗号バグ報奨金の場所です。** **遅延なしで報酬を受け取る**\ HackenProofの報奨金は、顧客が報奨金予算を入金した後にのみ開始されます。バグが検証された後に報酬を受け取ることができます。 **Web3ペントテストの経験を積む**\ ブロックチェーンプロトコルとスマートコントラクトは新しいインターネットです!その成長期におけるWeb3セキュリティをマスターしましょう。 **Web3ハッカーレジェンドになる**\ 各検証済みのバグごとに評判ポイントを獲得し、週間リーダーボードのトップを制覇しましょう。 [**HackenProofにサインアップ**](https://hackenproof.com/register)して、ハッキングから報酬を得ましょう! {% embed url="https://hackenproof.com/register" %}
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝したいですか**?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロードしたり**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 * [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 * [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** * **ハッキングのトリックを共有するために、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**