mcpField
W
wordpress-cors-xmlrpc-rce-chain

wordpress-cors-xmlrpc-rce-chain

github.com/uphiagoセキュリティ1.3k41 回インストール8 週間前に更新
リポジトリ

wordpress-cors-xmlrpc-rce-chain について

WordPress のセキュリティ評価で、検証済みの CORS、XML-RPC、アカウント権限、アップロード動作が実行経路になるかを調べるスキルです。許可、無害なテストファイル、個別の証拠、後片付けを重視します。

主な機能

  1. 01認証付き CORS の影響を検証
  2. 02XML-RPC 応答を分類
  3. 03テストアカウントの権限を確認
  4. 04無害なファイルでアップロードを検証
  5. 05実行要件を個別に評価
  6. 06証拠と後片付けを記録

活用シーン

  1. 01WordPress のアップロード連鎖の評価
  2. 02CORS による非公開データ露出の検証
  3. 03確認済みのアップロードと推定上の実行を区別

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/uphiago/recon-skills --skill wordpress-cors-xmlrpc-rce-chain

インストール後、Claude Code で/wordpress-cors-xmlrpc-rce-chainを入力して読み込まれたか確認します。

詳細

WordPress CORS、XML-RPC、アップロードチェーン

このスキルでは、個別に検証された WordPress の挙動が、不正なファイル実行につながる経路を形成し得るかを評価します。CORS、XML-RPC、登録、またはアップロード方式が存在するというだけで、悪用可能だとは想定しません。

使用するタイミング

  • 認証情報付き CORS により、非公開の WordPress データが公開される場合。
  • XML-RPC がプロトコルとして有効なメソッド一覧を返す場合。
  • 承認済みのテスト用 ID に、アップロード可能な権限がある場合。
  • プラグインまたはコアのアップロード操作が、実行可能ファイルを受け入れる可能性がある場合。
  • 評価で、状態を変更するアップロードおよび実行テストが明示的に許可されている場合。

前提条件

  • 状態を変更する各手順について、明示的な許可があること。
  • 承認済みの合成アカウント、およびテストサイトまたは破棄可能なコンテンツ。
  • CORS のプリミティブを示すブラウザーの証拠。
  • プロトコルとして有効な XML-RPC の証拠。
  • 権限とアップロード先が確認済みであること。
  • 無害なテスト用アーティファクトとクリーンアップ手順。

実行方法

状態を変更するリクエストを送信する前に、証拠マトリックスを作成します。

Primitive                 State       Evidence
Credentialed CORS         observed    browser reads approved non-public data
XML-RPC method            observed    protocol-valid methodResponse
Upload-capable identity   unverified  role and capability still required
Executable storage path   unverified  handler and server behavior required
Cleanup                   planned     test artifact and account removal

前提条件に推測が残っている場合は、そこで中止します。

手順

1. 認証情報付き CORS を検証する

hunt-cors を使用して、承認済みのブラウザーセッションで、信頼されていないオリジンから非公開データを読み取れることを立証します。ヘッダーのリフレクションや公開 REST コンテンツだけでは不十分です。

このプリミティブが次の手順に提供する情報を記録します。ユーザー名、ノンス、プラグインのメタデータは、それぞれセキュリティ上の価値が異なり、認証やアップロードを可能にするとは限りません。

2. XML-RPC を分類する
TARGET="https://www.example.test"
OUTPUT_DIR="${OUTPUT_DIR:-./output/wordpress-chain}"
mkdir -p "$OUTPUT_DIR"

curl -sS --max-time 15 \
  -X POST "$TARGET/xmlrpc.php" \
  -H 'Content-Type: text/xml' \
  --data-binary \
  '<methodCall><methodName>system.listMethods</methodName></methodCall>' \
  -o "$OUTPUT_DIR/xmlrpc-methods.xml"

有効な methodResponse があることを必須とします。メソッドが存在することだけでは、現在の ID がそのメソッドを呼び出せるとは立証できません。

3. 承認済みの ID と権限を検証する

承認済みのテスト用 ID のみを使用します。その ID の現在の WordPress 権限と、候補となる操作に必要な upload_files またはプラグインの機能を確認します。通常、デフォルトの購読者登録ではアップロード権限は付与されません。

不足している前提条件を補うために、パスワードスプレーや、評価外で取得した認証情報を使用してはいけません。

4. コードを実行せずにアップロードを検証する

アップロードテストが明示的に許可されている場合:

  1. 一意の名前を付けた、実行できないテキストファイルまたは画像ファイルをアップロードします。
  2. メソッド、ID、応答、メディア ID、最終 URL を記録します。
  3. 保存されたコンテンツとコンテンツタイプを検証します。
  4. アーティファクトを削除し、クリーンアップを記録します。

これにより、実行可能コードを持ち込まずにアップロードの境界を実証できます。

5. 実行可能性を別途評価する

ファイル実行は別個の前提条件です。アップロード先ディレクトリで該当するファイルタイプが実行されるか、拡張子または MIME の検証を回避できるか、プラグイン固有のハンドラーがアーティファクトを移動するかを確認します。

テスト環境で承認された無害なマーカーを使用します。コマンドシェルを配置してはいけません。安全に実行を実証できない場合は、アップロード権限と実行を、それぞれ個別に観測された状態と推測された状態として報告します。

6. チェーンを組み立てる
CORS read
  -> information required by approved test identity
  -> authorized XML-RPC or plugin operation
  -> inert upload accepted
  -> executable handling independently confirmed
  -> benign marker observed
  -> artifact removed

矢印ごとに、前の手順が次の手順を可能にする理由を記録します。複合的な影響を割り当てる前に、cross-attack-chains と triage-validation を使用します。

注意点

  • 公開 REST ユーザーデータから、認証情報や特権 ID が得られるとは限りません。
  • XML-RPC は機能の一つです。メソッドの存在は認可の回避を意味しません。
  • 通常、購読者および顧客の権限では、任意のファイルをアップロードできません。
  • アップロードが受け入れられても、保存されたファイルが実行可能であるとは証明されません。
  • プラグインのバージョンが一致しても、脆弱なルートと前提条件が満たされるとは証明されません。
  • 中程度の確信度を示す複数の兆候を組み合わせても、確信度の高いチェーンにはなりません。

検証

  • 承認済みの非公開データを使用して、ブラウザーで CORS の影響を再現している。
  • XML-RPC の証拠に、プロトコルとして有効な応答が含まれている。
  • 正確なテスト用 ID と必要な機能が記録されている。
  • アップロードの検証で、実行できない合成アーティファクトを使用し、クリーンアップを行っている。
  • 許可された実行テストでは、破棄可能な環境で無害なマーカーを使用している。
  • チェーンの各手順を個別に確認している。不足する手順には、推測または未テストと明記している。

コメント