环境搭建
将网站源码解压后拖入web根目录下

通过服务器ip进入网站,完成安装

漏洞复现
漏洞描述:
MetInfo 是一个专业的企业级CMS建站系统,它5.0.4 版本存文件包含漏洞
漏洞等级
高危
影响版本
metInfo5.04
代码审计
seay源码审计系统工具发现可疑漏洞点,接下来进行代码审计

可以看到这个 /about/index.php 文件里包含 "../include/module.php" 和 $mouble 这个变量,进行跟踪

打开 ../include/module.php,module.php里还包含着 "common.inc.php"

我们先对module.php进行代码审计,可以看到当fmodule这个变量不等于7时,它就会对$module进行验证
if($fmodule!=7){
点击查看代码
if($fmodule!=7){
if($mdle==100)$mdle=3;
if($mdle==101)$mdle=5;
$module = $modulefname[$mdle][$mdtp];
if($module==NULL){okinfo('../404.html');exit();}
if($mdle==2||$mdle==3||$mdle==4||$mdle==5||$mdle==6){
if($fmodule==$mdle){
$module = $modulefname[$mdle][$mdtp];
}
else{
okinfo('../404.html');exit();
}
}
else{
if($list){
okinfo('../404.html');exit();
}
else{
$module = $modulefname[$mdle][$mdtp];
}
}
if($mdle==8){
if(!$id)$id=$class1;
$module = '../feedback/index.php';
}
}
接着对"common.inc.php"进行跟踪,发现common.inc.php的这段代码有漏洞点,这段代码意思是将GPC传过来的参数和值注册为变量,存在变量覆盖
点击查看代码
//common.inc.php
foreach(array('_COOKIE', '_POST', '_GET') as $_request) {
foreach($$_request as $_key => $_value) {
$_key{0} != '_' && $$_key = daddslashes($_value);
}
}
更改一下"about/index.php"的代码,对$module这个变量输出

发现输出了show.php

我们要让fmodule=7,绕过对$module的验证
http://192.168.133.138/metinfo5.0.4/about/index.php?fmodule=7&module=77777

执行PHP 命令
利用条件:
利用php://input 执行PHP 命令;
远程文件包含开启。
用bp抓包,发现可以执行php文件
浙公网安备 33010602011771号