【自动批量】phpcms v9全系列 利用篡改模板路径生成任意文件的漏洞【重要】
<?php
$files = `find . -name 'global.func.php'`;
$files = explode("\n", $files);
$files = array_filter($files);
foreach($files as $file) {
$body = file_get_contents($file);
if (!strpos($body, "function template(")) continue;
if (strpos($body, "illegality.")) continue;
echo "fixing $file\n";
$new = preg_replace("/(function template\(.*\n)/", "\\1\n\tif(strpos(\$template, '..') !== false) {showmessage('Template filename illegality.');}\n\n", $body);
file_put_contents($file, $new);
}
将上文保存到 php 文件里,执行该文件,仅支持 linux 系统。
Windows 下请使用手工修复方法:
phpcms\libs\functions\global.func.php
在template方法开始(约481行)加入以下代码:
if(strpos($template, '..') !== false) {
showmessage('Template filename illegality.');
}