Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

الخلاصاتاتصالالخصوصية© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
moodle-enrol-database-sqli — Moodle 5.2.3 - عالي - عن بُعد - SQLi - يقوم enrol_database بدمج course idnumber في SQL | Kitploit
أدوات/GitHubGitHub/abraxas/moodle-enrol-database-sqli
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبأمن الويباختبار الاختراقأمن قواعد البياناتمختبرات وتدريب عملي
GitHubabraxas/moodle-enrol-database-sqli

moodle-enrol-database-sqli

Moodle 5.2.3 - عالي - عن بُعد - SQLi - يقوم enrol_database بدمج course idnumber في SQL

عرض المستودع
9منذ 4 أياملم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

Abraxas Labs - moodle-enrol-database-sqli

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  moodle-enrol-database-sqli

moodle-enrol-database-sqli

Moodle LMS 5.2.3 - Moodle

الفئة: SQLi الوصول: عن بُعد

enrol_database::db_get_sql لا يزال يضيف الشرطات المائلة ويدمج النصوص. قام MSA-26-0005 / MDL-88138 بتحويل auth_db إلى استعلامات مُعاملة (parameterized) بصيغة Execute($sql, [$value]). لم تنسخ هذه الإضافة ذلك النمط. الإعدادات الافتراضية: dbsybasequoting=0، localcoursefield=idnumber. نقطة الوصول (sink) هي قاعدة بيانات التسجيل الخارجية. لا يمر $DB في نواة Moodle عبر هذا المسار.

معلّم محرّر على موقع مُفعّل فيه enrol_database يضبط idnumber للمقرر. يقوم Cron بإدراجه. تعود صفوف إضافية من قاعدة بيانات التسجيل.

المعرّفلا يوجد CVE بعد
CWECWE-89
CVSSمرتفع: 8.1 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
المنتجMoodle
المتأثروسم 5.2.3 v5.2.3 (344232c15336c71b80f9aca8359ce0e0a9f3d116). يجب تفعيل الإضافة enrol_database.
المصادقةمعلّم محرّر (idnumber للمقرر، الخريطة المحلية الافتراضية)
الترخيصGNU Affero GPL v3.0
المختبر127.0.0.1 فقط

ما يمكن للمهاجم فعله

معلّم محرّر على موقع مُفعّل فيه enrol_database يحقن SQL في قاعدة بيانات التسجيل الخارجية عبر ضبط idnumber للمقرر. ثم يقوم Cron sync_enrolments بتشغيل ذلك SQL.

الصلاحيةالطريقة / نقطة الوصولالاستطلاع / السلامة / التوافرمُثبت مختبريًا أو مُستنتج
حقن جزء SQL في استعلام SELECT الخارجي للتسجيلCron sync_enrolments -> db_get_sql($table, array($coursefield=>$course->mapping), ...) -> $extdb->Execute($sql)سلامة سلسلة الاستعلاممُثبت مختبريًا. SQL المدمج هو WHERE courseid = 'LABCOURSE\'' OR 1=1 -- '
قراءة صفوف تسجيل مقررات أخرى على تلك القاعدة الخارجيةنفس SELECT بعد إغلاق السلسلةاستطلاعمُثبت مختبريًا. نظيف: صف واحد teacher-local. حقن: صفان بما في ذلك MOODLE-ENROL-DATABASE-SQLI-WITNESS
تخطي الاستعلام عند إيقاف الإضافةنفس الأداة، plugin=offلا ينطبقمُثبت مختبريًا مغلق. executed=false، SQL فارغ، 0 صفوف
الاحتفاظ بنفس الحمولة كمعامل مرتبط (bound parameter)بقايا auth_db من MSA-26-0005: Execute($sql, [$value])لا ينطبقمُثبت مختبريًا مغلق. style=param أعاد 0 صفوف، SQL يحتوي على ?
تسجيل / إلغاء تسجيل / إسناد أدوار لمستخدمي Moodle المذكورين في الصفوف الإضافيةبعد أن يطبّق Cron requestedenrolsسلامة التسجيلاتمُستنتج. يتوقف المختبر عند الصفوف الإضافية على قاعدة بيانات التسجيل
FILE / INTO OUTFILE كمستخدم قاعدة بيانات التسجيلنفس نقطة الوصول إذا كان ذلك الحساب يملك FILEسلامة / توافر مضيف تلك القاعدةمُستنتج. لم يُثبت. ليس تصعيدًا لصلاحيات نظام التشغيل
مسار يتحكم به الطالبفقط إذا ربط المدير localuserfield=email (أو ما شابه)لا ينطبقمُستنتج. المسار الافتراضي هو idnumber الخاص بالمعلّم

مغلق في هذه البقايا: $DB في نواة Moodle؛ الإضافة معطّلة (لا استعلام)؛ الوصول غير المُصادق؛ صدفة نظام التشغيل؛ الاستعلامات المكدّسة (أداة mysqli هذه أحادية العبارة). Moodle الافتراضي بدون enrol_database ليس هذه الثغرة.

بقايا نفس التثبيت: قراءة ملف Blackboard img، IDOR في ملاحظات الدرجات، عناصر الدرجات المخفية.

كيف وجدتها

ثبّتت moodle/moodle v5.2.3 بعد MSA-26-0042/0043. أغلق MSA-26-0005 ثغرة auth_db باستخدام placeholder. فتحت enrol_database لأنه يتحدث إلى نفس نوع قاعدة البيانات الخارجية ولا يزال يحتوي على db_addslashes.

القيمة الافتراضية لـ dbsybasequoting هي 0، لذا تُضاعف ' فقط. الشرطة المائلة العكسية مع علامة الاقتباس في idnumber تُغلق سلسلة MySQL.

مسارات خاطئة مسجّلة مسبقًا: اعتبار $DB في نواة Moodle نقطة الوصول (وهو ليس كذلك)؛ تسمية هذا تصعيدًا لصلاحيات نظام التشغيل لأن FILE موجود كصلاحية MySQL (لم يُثبت، وليس هذه البقايا)؛ بريد الطالب كخريطة افتراضية (على المدير تغيير localuserfield). صدفة عكسية. مسرحية.

المختبر

أداة مطابقة لمُثبّتي الإصدار، وليست تطبيق Moodle PHP كاملًا. php:8.3-cli يقدّم db_get_sql / db_addslashes / db_encode المنسوخة. mysql:8.0 يحتوي على صفّي تسجيل.

python3 moodle-enrol-database-sqli-Abraxas-Labs.py

أو

cd lab
./run.sh

استهدف فقط http://127.0.0.1:19570. مشروع Compose باسم moodle-enrol-database-sqli. تُفكّك الحزمة بعد التشغيل.

SUCCESS moodle-enrol-database-sqli how=gadget plugin-off=no-query clean-rows=1 inject-rows=2 sql-concat=yes param-rows=0 extra=yes sink=enrol-db MOODLE-ENROL-DATABASE-SQLI-WITNESS

الإصلاح

انسخ استعلامات auth_db المُعاملة (MDL-88138). مرّر قيمة المقرر / المستخدم المربوطة كـ Execute($sql, [$value]). لا تدمج db_addslashes في '$value'. أضف اختبارًا يتحقق من أن علامة اقتباس في idnumber للمقرر لا تُعيد صفوفًا من مقررات أخرى.

المراجع

  • github.com/moodle/moodle وسم v5.2.3
  • lib.php (db_get_sql، db_addslashes، sync_enrolments)
  • قريب مُرقّع (ليس هذه الإضافة): MSA-26-0005 / MDL-88138 auth_db
  • نفس التثبيت: moodle-blackboard-img · moodle-grades-feedback-idor · moodle-grades-gradeitems
  • CWE-89

الترخيص

GNU Affero GPL v3.0. راجع LICENSE. مختبر loopback فقط. دون أي ضمان.

تنزيل الأداة