mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-22 20:53:37 +00:00
215 lines
11 KiB
Markdown
215 lines
11 KiB
Markdown
# 8009 - Pentesting Apache JServ Protocol (AJP)
|
||
|
||
<details>
|
||
|
||
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||
|
||
HackTricksをサポートする他の方法:
|
||
|
||
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||
* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する
|
||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを見つける
|
||
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)をフォローする
|
||
* **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有する
|
||
|
||
</details>
|
||
|
||
<figure><img src="../../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||
|
||
[**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy)サーバーに参加して、経験豊富なハッカーやバグバウンティハンターとコミュニケーションを取りましょう!
|
||
|
||
**ハッキングの洞察**\
|
||
ハッキングのスリルと挑戦に深く入り込むコンテンツに参加する
|
||
|
||
**リアルタイムハックニュース**\
|
||
リアルタイムのニュースと洞察を通じて、迅速なハッキングワールドに最新情報を提供する
|
||
|
||
**最新のアナウンス**\
|
||
最新のバグバウンティの開始や重要なプラットフォームのアップデートに関する情報を提供する
|
||
|
||
**[Discord](https://discord.com/invite/N3FrSbmwdy)**に参加して、今日からトップハッカーと協力を始めましょう!
|
||
|
||
## 基本情報
|
||
|
||
出典: [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サーバーはサーブレットコンテナへの費用のかかるソケット作成プロセスを削減し、複数のリクエスト/レスポンスサイクルで接続を再利用しようとします
|
||
|
||
**デフォルトポート:** 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以上のパッチ済みバージョンで修正されています。
|
||
|
||
## 列挙
|
||
|
||
### 自動
|
||
```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プロキシ
|
||
|
||
### Nginxリバースプロキシ&AJP
|
||
|
||
[Docker化されたバージョンをチェック](#Dockerized-version)
|
||
|
||
オープンな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
|
||
```
|
||
```diff
|
||
- server {
|
||
- listen 80 default_server;
|
||
- server_name _;
|
||
- return 444;
|
||
- }
|
||
+ location / {
|
||
+ proxy_pass http://127.0.0.1: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;
|
||
+ }
|
||
```
|
||
```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のDocker化バージョン
|
||
```bash
|
||
git clone https://github.com/ScribblerCoder/nginx-ajp-docker
|
||
cd nginx-ajp-docker
|
||
```
|
||
`nginx.conf` ファイル内の `TARGET-IP` を AJP IP に置き換えてビルドして実行します。
|
||
``` bash
|
||
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**にリダイレクトすることができます。
|
||
```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
|
||
```
|
||
このセットアップは、AJPプロトコルのバイナリ性質により侵入検知および防止システム(IDS/IPS)をバイパスする可能性を提供しますが、この機能は検証されていません。`127.0.0.1:80`に通常のMetasploit Tomcatエクスプロイトを向けることで、対象システムを効果的に制御することができます。
|
||
```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 (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||
|
||
[**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) サーバーに参加して、経験豊富なハッカーやバグバウンティハンターとコミュニケーションを取りましょう!
|
||
|
||
**ハッキングの洞察**\
|
||
ハッキングのスリルとチャレンジに深く入り込むコンテンツに参加しましょう
|
||
|
||
**リアルタイムハックニュース**\
|
||
リアルタイムのニュースと洞察を通じて、ハッキングの世界を追いかけましょう
|
||
|
||
**最新の発表**\
|
||
最新のバグバウンティの開始や重要なプラットフォームの更新情報を把握しましょう
|
||
|
||
[**Discord**](https://discord.com/invite/N3FrSbmwdy) に参加して、今日からトップハッカーと協力しましょう!
|
||
|
||
<details>
|
||
|
||
<summary><strong>**htARTE (HackTricks AWS Red Team Expert)** でAWSハッキングをゼロからヒーローまで学びましょう!</strong></summary>
|
||
|
||
HackTricks をサポートする他の方法:
|
||
|
||
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
|
||
* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手する
|
||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) コレクションを見つける
|
||
* 💬 [**Discord グループ**](https://discord.gg/hRep4RUj7f) または [**telegram グループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live) をフォローする
|
||
* **HackTricks** と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) の GitHub リポジトリに PR を提出して、あなたのハッキングトリックを共有する
|
||
|
||
</details>
|