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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2017-10271 — CVE-2017-10271(WebLogic XMLDecoder逆シリアル化RCE)を悪用するためのステップバイステップのラボガイド。手動ペイロード構築、ブラインドRCEバイパス、特権検証やデータ流出などの攻撃後テクニックを含みます。 | Kitploit
ツール/GitHubGitHub/dungsocool/cve-2017-10271
特権昇格脆弱性分析エクスプロイトウェブアプリケーション悪用データ流出ポストエクスプロイトペネトレーションテスト学習と教育バイナリエクスプロイトラボと実践
GitHubdungsocool/cve-2017-10271
124ヶ月前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有

CVE-2017-10271

CVE-2017-10271(WebLogic XMLDecoder逆シリアル化RCE)を悪用するためのステップバイステップのラボガイド。手動ペイロード構築、ブラインドRCEバイパス、特権検証やデータ流出などの攻撃後テクニックを含みます。

リポジトリを見る

LAB 2 - CVE-2017-10271: WebLogic XMLDecoder 逆シリアル化(Deserialization)Writeup

I. システム分析

システムログ分析

image.png

  • 検出されたサービス: Oracle WebLogic Server(Development Mode で稼働中の base_domain に属する AdminServer)。
  • 接続ポート: 7001。
  • サポート対象プロトコル: http、t3、iiop、ldap、snmp。
  • 攻撃対象領域の評価:
    • 当該サービスは 7001 ポートで t3 プロトコルを公開しています。このデフォルト構成は、WebLogic のバージョンが RMI(Remote Method Invocation)を介した Java オブジェクト逆シリアル化に関連する脆弱性に対してパッチ適用されていない場合、高いリスクを伴います。
    • Web 管理コンソールのインターフェースは 7001 ポートの http プロトコル上で動作しており、/console/login/LoginForm.jsp などの機密エンドポイントを狙ったディレクトリスキャンの影響を受けやすくなっています。

ターゲットの開放ポートが特定されたら、nmap を使用してポートをスキャンし、稼働中のサービスを特定します。

image.png

したがって、ターゲットは Oracle WebLogic Server 10.3.6.0 というバージョンの HTTP サービスを稼働させています。これは、一連の重大な CVE(逆シリアル化、認証バイパスなど)で有名なエンタープライズ向け Java アプリケーションサーバーです。しかし、この情報だけでは、システムがどの特定の脆弱性に対して脆弱であるかを結論付けるには不十分です。付随する Web サービスコンポーネントをより深くスキャンする必要があります。

ここで、dirsearch ツールを使用して機密エンドポイントの特定を進めます。WebLogic は Java プラットフォーム上で動作するため、.jsp および .xml ファイルが最も機密性の高いターゲットとなります。HTTP 200 ステータスコードを返すエンドポイントに焦点を当てます。

dirsearch -u http://192.168.3.137:7001/ -e jsp,xml,html

image.png

  • /console/login/LoginForm.jsp: WebLogic Admin Console の Web インターフェースへのログインポータルです。デフォルト認証情報のブルートフォース攻撃や認証バイパス脆弱性(CVE-2020-14882 など)の重要なターゲットとなります。
  • /bea_wls_internal/: WebLogic Server のデフォルトの内部 Web アプリケーションディレクトリです。このコンポーネントは、静的システムファイルへのアクセスおよび操作を可能にします。
  • /wls-wsat/CoordinatorPortType: これが最も重要な発見です。このパスが 200 OK ステータスコードを返すことは、Web Services Atomic Transactions(wls-wsat) コンポーネントが有効化され、データを受信できる状態にあることを確認します。
  • /uddiexplorer および /uddi/uddilistener: これは WebLogic Server にデフォルトで統合されている、Web サービスの管理および登録を行うための UDDI Explorer(Universal Description, Discovery, and Integration)コンポーネントです。このコンポーネントは SSRF(Server-Side Request Forgery)- CVE-2014-4210 脆弱性で非常に有名です。攻撃者は /uddiexplorer/SearchPublicRegistries.jsp エンドポイントにある UDDI のパブリックレジストリ検索インターフェースを利用して、WebLogic サーバーに任意の HTTP リクエストをバックエンドの内部ネットワークへ送信させることができます。

⇒ 考察: /wls-wsat(XMLDecoder を介した RCE リスク)と /uddiexplorer(SSRF リスク)の共存は、この WebLogic サーバーの攻撃対象領域が極めて広いことを示しています。

WebLogic 10.3.6.0 サーバー上に 2 つの独立した攻撃対象領域が共存していることを特定した後、次の 2 つの方向性を分析します。

  1. /uddiexplorer における SSRF 脆弱性(CVE-2014-4210):
    • 影響度: 中: サーバーから間接的な HTTP リクエストを送信して、LAN 内のポートスキャンや内部サービス(Redis など)とのやり取りを可能にします。
    • 制限事項: オペレーティングシステムレベル(OS レベル)の制御を直接付与するものではありません。SSRF から RCE への昇格は、内部ネットワークに他の設定ミスされたサービスが存在するかどうかに大きく依存します。
  2. /wls-wsat における XMLDecoder 逆シリアル化脆弱性(CVE-2017-10271):
    • 影響度: 重大: 稼働中プロセスの権限で、サーバー上で任意のリモートコード実行(RCE)を直接可能にします。

⇒ 決定: Cyber Attack Chain モデルにおいて、RCE は常に最終目標です。なぜなら、システムの直接的かつ完全な制御(Full System Compromise)を提供するからです。RCE の実行能力を獲得した時点で、UDDI アプリケーションを介した SSRF の悪用は冗長になります。これは、RCE シェルからは、UDDI インターフェースのパラメータに制限されることなく、システムコマンド(curl、wget など)を使用して、直接的、柔軟的、かつより強力に内部ネットワークの調査を積極的に実行できるためです。

したがって、エクスプロイトの優先順位の論理において、二次的な経路(/uddiexplorer での SSRF)を除外し、/wls-wsat/CoordinatorPortType における XMLDecoder 逆シリアル化脆弱性を介したリモートコード実行(RCE)の調査に完全に集中することを決定します。

脆弱性メカニズムの分析と検証

CVE-2017-10271 の根本的な脆弱性は、WebLogic の WorkContextXmlInputAdapter クラスが java.beans.XMLDecoder オブジェクトを使用して <work:WorkContext> タグ内のデータを解析することに起因します。デフォルトでは、この XMLDecoder クラスは XML タグ形式で定義された任意の Java クラスを自動的にインスタンス化します。ここから、段階的なシステムの動作的相互作用に基づく検証を実行します。

このサーブレットの実際の稼働状態を迅速に確認するため、通常の HTTP GET プローブリクエストを送信します:

curl -i -s http://192.168.3.137:7001/wls-wsat/CoordinatorPortType

レスポンスは HTTP/1.1 200 OK と実装クラス CoordinatorPortTypePortImpl を返し、サーブレットが JVM メモリに正常にロードされたことを確認します。

POST データ処理の検証

Web Services サーブレットは POST メソッドで SOAP XML データを処理するように設計されているため、システムのデータ処理パイプラインを実証するために、2 つの POST リクエストによる比較テストを実行します。

1. 標準的な SOAP POST リクエスト

パーサーの通常の解析能力をテストするために、標準的な SOAP XML エンベロープ(完全な名前空間を含むが実行コンテンツは含まない)を送信します。

curl -i -s -X POST "http://192.168.3.137:7001/wls-wsat/CoordinatorPortType" \
-H "Content-Type: text/xml;charset=UTF-8" \
-d "<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'>soapenv:Header/soapenv:Body/</soapenv:Envelope>"

image.png

  • 結果: システムはパーサーを問題なく通過し、バックエンドサービスのロジック層でのみエラー(Cannot find dispatch method)を示します。

分析:

サーバーは POST ポートに十分に機能する XML リーダーを備えており、ユーザーが送信した XML ツリー構造全体を受信してデコードする準備ができています。これは、クライアントから WebLogic メモリ内部に至るデータパイプラインが完全に動作していることを確認します。

2. 不正な XML 構造の POST リクエスト

次に、XML 構造を意図的に破壊して(例: 名前空間の欠落)、パーサーの例外処理メカニズムを観察します。

curl -i -s -X POST "http://192.168.3.137:7001/wls-wsat/CoordinatorPortType" \
-H "Content-Type: text/xml;charset=UTF-8" \
-d "soapenv:Envelopesoapenv:Headerwork:WorkContextinvalid_xml_structure</work:WorkContext></soapenv:Header></soapenv:Envelope>"

image.png

  • 結果: 例外 com.ctc.wstx.exc.WstxParsingException: Undeclared namespace prefix "soapenv" が返されます。

分析:

  1. POST パケットの Body 内のすべての文字、すべての XML タグは、JVM 内部の最下層の Java XML パーサー(com.ctc.wstx)に直接渡されて解析されます。
  2. システムは、入力データをフィルタリングするためのチェックポイント、フィルタ、または Web Application Firewall(WAF)を中間に一切持っていません。フィルタが存在する場合、パケットは Java パーサー層の奥深くまで侵入してこのようなシステムエラーを発生させるのではなく、最初からブロックされていたはずです。

結論

実際の実験結果とシステムアーキテクチャ分析の組み合わせ — wls-wsat サーブレットが POST ポートを介して生のパケットを受信し、パーサー層に WAF/サニティフィルタが存在せず、生の Java XML リーダーエラーを直接スローすること — は、サーバーが CVE-2017-10271(XMLDecoder 逆シリアル化)の影響範囲に直接該当する、極めて脆弱なサービス構造を動作させていることを確認します。

XMLDecoder のデフォルトの解析メカニズムにはクラス制御フィルタが一切ないため、サーバーがサニタイズなしで生の POST データを受信することは、次のステップで Java システム実行オブジェクトを直接呼び出すペイロードを設計するための完璧な入口となります。

II. エクスプロイト

手動ペイロード構築の考察

WebLogic 10.3.6.0 サーバーは古い Java 環境上で動作し、XMLDecoder に対して厳格なクラス制御フィルタを適用していないため、攻撃者は実行可能な Java オブジェクトを直接注入できます。

Java でコマンドを実行するための標準クラスは java.lang.ProcessBuilder です。この Java オブジェクトの初期化ロジックを XMLDecoder 互換の XML 形式にマッピングします:

  • クラス初期化の宣言: <void class="java.lang.ProcessBuilder">
  • 実行するコマンドを含むパラメータの文字列配列を定義: <array class="java.lang.String" length="3">
  • 実行メソッドをトリガー: <void method="start"/>

ブラインド RCE の回避

ProcessBuilder を介してシステムコマンドが実行されると、WebLogic サーバーは OS 上でコマンドをバックグラウンド実行し、HTTP 500 エラーコードのみを返します(コマンドの出力を HTTP レスポンス画面に直接出力することはありません)。この仕組みは Web Application Mapping と呼ばれ、すべての Web サーバーはこのように動作します。war/ ディレクトリはそのアプリケーションの**ドキュメントルート(Document Root)**です。war/ 内に配置された任意のファイルは、短い URL でアクセスできます。

⇒ ブラインド RCE を回避するには、物理パスを見つける必要があります。id > ... コマンドはオペレーティングシステム上で実行されるため、実際のパスが必要です。

/war ディレクトリを特定するためのホワイトボックス分析

コンテナ内でロードされている bea_wls_internal アプリケーションの実際の物理パスを特定するため、ホストマシンから直接システム検索クエリを実行します:

image.png

結果

  • /root/Oracle/Middleware/wlserver_10.3/server/lib/bea_wls_internal.war(元のアーカイブライブラリファイル)。
  • /root/Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/bea_wls_internal(AdminServer の一時パーティション _WL_internal 内に展開されたアクティブなアプリケーションディレクトリ)。このアクティブディレクトリの奥に進むと、静的ファイルを含むサブディレクトリ /9j4dqk/war/ が見つかります。これはアプリケーションの絶対 Web ルートディレクトリであり、攻撃者は RCE 実行結果を表示するための静的ファイルを書き込む権限を持っています。

考察: id の出力を上記ディレクトリ内の静的ファイル rce.txt にリダイレクトするコマンドを設計します: id > /root/Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/bea_wls_internal/9j4dqk/war/rce.txt

XMLDecoder エクスプロイトペイロードの作成

ツールをダウンロード