ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) ! HackenProof Discord サーバーに参加して、経験豊富なハッカーやバグバウンティハンターとコミュニケーションを取りましょう!
ハッキングの洞察
ハッキングのスリルと挑戦に深く入り込むコンテンツに参加する
リアルタイムハックニュース
リアルタイムのニュースと洞察を通じて、迅速なハッキングワールドを最新情報で追いかける
最新のアナウンス
最新のバグバウンティの開始や重要なプラットフォームの更新情報を把握する
Discord に参加 して、今日からトップハッカーと協力を始めましょう!
基本情報
From: https://diablohorn.com/2011/10/19/8009-the-forgotten-tomcat-port/
AJP はワイヤープロトコルです。これは、Apache などのスタンドアロンのWebサーバーが Tomcat と通信するための HTTP プロトコルの最適化バージョンです。歴史的に、Apache は静的コンテンツの提供において Tomcat よりもはるかに高速でした。アイデアは、可能な限り Apache に静的コンテンツを提供させ、Tomcat 関連のコンテンツについてはリクエストを Tomcat にプロキシさせることです。
興味深い点:
ajp13 プロトコルはパケット指向です。パフォーマンスの理由から、より読みやすいプレーンテキストよりもバイナリ形式が選択されたと思われます。Webサーバーは、TCP接続を介してサーブレットコンテナと通信します。ソケットの作成コストを削減するために、Webサーバーはサーブレットコンテナへの持続的な TCP 接続を維持し、複数のリクエスト/レスポンスサイクルで接続を再利用しようとします。
デフォルトポート: 8009
Copy PORT STATE SERVICE
8009/tcp open ajp13
AJPポートが公開されている場合、TomcatはGhostcat脆弱性の影響を受ける可能性があります。この問題に対応するエクスプロイト があります。
GhostcatはLFI脆弱性ですが、ある特定のパスからのみファイルを取得できる制限付きです。それでも、これにはWEB-INF/web.xml
などのファイルが含まれる可能性があり、サーバーの設定によってはTomcatインターフェースの資格情報などの重要な情報が漏洩する可能性があります。
この問題は、9.0.31以上、8.5.51、および7.0.100以上のパッチ済みバージョンで修正されています。
列挙
自動
Copy nmap -sV --script ajp-auth,ajp-headers,ajp-methods,ajp-request -n -p 8009 < I P >
AJPプロキシ
Nginxリバースプロキシ&AJP
Docker化されたバージョンをチェック
オープンなAJPプロキシポート(8009 TCP)に遭遇した場合、Nginxをajp_module
と共に使用して「隠された」Tomcat Managerにアクセスできます。これは、次の手順でNginxのソースコードをコンパイルし、必要なモジュールを追加することで行うことができます:
ajp_module
を使用してNginxのソースコードをコンパイル
Copy # 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
Copy - server {
- listen 80 default_server;
- server_name example.com;
- location / {
- root /var/www/html;
- index index.html;
- }
- }
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
Copy upstream tomcats {
server <TARGET_SERVER>:8009;
keepalive 10;
}
server {
listen 80;
location / {
ajp_keep_conn on;
ajp_pass tomcats;
}
}
Nginxを起動し、すべてが正常に動作しているかを確認するために、ローカルホストにcURLリクエストを送信してください。
Copy 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のDocker化バージョン
Copy git clone https://github.com/ScribblerCoder/nginx-ajp-docker
cd nginx-ajp-docker
Copy <Target IP>をAJP IPで置き換えて、nginx.confをビルドして実行します
Copy docker build . -t nginx-ajp-proxy
docker run -it --rm -p 80 :80 nginx-ajp-proxy
Apache AJP Proxy
オープンポート8009に遭遇することは稀ですが、他のアクセス可能なWebポートがない場合もあります。それでも、Metasploit を使用して悪用することが可能です。Apache をプロキシとして活用することで、リクエストをポート8009のTomcat にリダイレクトすることができます。
Copy 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
このセットアップは、AJPプロトコルのバイナリ性 により侵入検知および防止システム(IDS/IPS)をバイパスする可能性を提供しますが、この機能は検証されていません。127.0.0.1:80
に通常のMetasploit Tomcatエクスプロイトを向けることで、対象システムを効果的に制御することができます。
Copy msf exploit ( tomcat_mgr_deploy ) > show options
参考文献
HackenProof Discord サーバーに参加して、経験豊富なハッカーやバグバウンティハンターとコミュニケーションを取りましょう!
ハッキングの洞察
ハッキングのスリルとチャレンジに深く入り込むコンテンツに参加しましょう
リアルタイムハックニュース
リアルタイムのニュースと洞察を通じて、ハッキングの世界を追いかけましょう
最新の発表
最新のバグバウンティの開始や重要なプラットフォームのアップデートについて情報を得ましょう
Discord に参加して、今日からトップハッカーと協力しましょう!
**htARTE (HackTricks AWS Red Team Expert)** でゼロからヒーローまでAWSハッキングを学びましょう!