【漏洞复现】帝国CMS(EmpireCMS) v7.5后台getshell分析(CVE-2018-18086)


一、漏洞描述

EmpireCMS 7.5版本及之前版本在后台备份数据库时,未对数据库表名做验证,通过修改数据库表名可以实现任意代码执行。EmpireCMS7.5版本中的/e/class/moddofun.php文件的”LoadInMod”函数存在安全漏洞,攻击者可利用该漏洞上传任意文件。

二、影响版本

EmpireCMS<=7.5

三、环境搭建

1、官方下载EmpireCMS V7.5 下载地址:http://www.phome.net/download/

2、把下载的文件中的upload下的所有目录和文件放入到网站根目录下

3、修改php.ini配置文件, PHP环境中必须开启短标签,不然安装会提示无法安装

【漏洞复现】帝国CMS(EmpireCMS) v7.5后台getshell分析(CVE-2018-18086) 第1张

4、设置php.inishort_open_tag = On,重启phpstudy

【漏洞复现】帝国CMS(EmpireCMS) v7.5后台getshell分析(CVE-2018-18086) 第2张

四、漏洞复现

1、查看/e/admin/ecmsmod.php代码

【漏洞复现】帝国CMS(EmpireCMS) v7.5后台getshell分析(CVE-2018-18086) 第3张

2、跟随LoadInMod函数来到/e/class/moddofun.php,可以看到上传文件处使用make_password(10)对时间进行加密然后拼接成为上传的文件名,这样就无法得到用户名

【漏洞复现】帝国CMS(EmpireCMS) v7.5后台getshell分析(CVE-2018-18086) 第4张

3、继续浏览代码,在下面发现@include($path),直接包含了这个上传的文件,这时如果在上传文件中添加可以创建文件的代码就可以绕过找不到文件名这个限制了。

【漏洞复现】帝国CMS(EmpireCMS) v7.5后台getshell分析(CVE-2018-18086) 第5张

4、我们可以构造如下payload:<?php file_put_contents(“shell.php”,”<?php phpinfo(); ?>”); ?>

5、登录后台

【漏洞复现】帝国CMS(EmpireCMS) v7.5后台getshell分析(CVE-2018-18086) 第6张

6.点击系统 然后点击数据表与系统模型

【漏洞复现】帝国CMS(EmpireCMS) v7.5后台getshell分析(CVE-2018-18086) 第7张

【漏洞复现】帝国CMS(EmpireCMS) v7.5后台getshell分析(CVE-2018-18086) 第8张

7. 点击导入系统模型

【漏洞复现】帝国CMS(EmpireCMS) v7.5后台getshell分析(CVE-2018-18086) 第9张

8. 编辑一个mod文件

【漏洞复现】帝国CMS(EmpireCMS) v7.5后台getshell分析(CVE-2018-18086) 第10张

9. 导入

【漏洞复现】帝国CMS(EmpireCMS) v7.5后台getshell分析(CVE-2018-18086) 第11张

10. 导入成功 使用菜刀连接

【漏洞复现】帝国CMS(EmpireCMS) v7.5后台getshell分析(CVE-2018-18086) 第12张

【漏洞复现】帝国CMS(EmpireCMS) v7.5后台getshell分析(CVE-2018-18086) 第13张