Mcms历史漏洞分析
字数 1420 2025-08-12 11:34:37
MCMS历史漏洞分析与利用指南
0x01 环境搭建
- 前台模板注入测试版本:mcms 5.2.5
- 其他漏洞测试版本:mcms 5.2.7
0x02 前台漏洞
2.1 SQL注入漏洞
漏洞接口:
/mdiy/dict/list/mdiy/dict/listExcludeApp/cms/content/list.do
漏洞分析:
DictAction类的list()和listExcludeApp()方法存在SQL注入- 通过
orderBy参数进行注入,当值不为id、dictType、dictSort时会直接拼接SQL语句 /cms/content/list.do接口的categoryId参数也存在SQL注入
利用方法:
python sqlmap.py -u "http://127.0.0.1:8080/mdiy/dict/list.do?dictType=文章属性&orderBy=1" -p orderBy --dbs --tamper "space2comment.py" --batch
修复方式:
删除可能导致SQL语句拼接的代码
2.2 模板注入漏洞
影响版本: <5.2.6
利用流程:
- 通过前台ueditor修改配置上传模板文件
- 通过前台渲染模板接口执行命令
详细分析:
- editor接口代码分析:
@ResponseBody
@RequestMapping(value = "editor", method = {RequestMethod.GET,RequestMethod.POST})
public String editor(HttpServletRequest request, HttpServletResponse response, String jsonConfig) {
// 代码省略...
String json = (new MsUeditorActionEnter(request, rootPath, jsonConfig, BasicUtil.getRealPath(""))).exec();
// 代码省略...
}
- MsUeditorActionEnter构造函数:
- 获取ConfigManager实例中的jsonConfig对象
- 解析传入的jsonConfig参数并put到ConfigManager实例中
- 文件上传关键点:
- 通过修改配置可以控制上传文件类型和路径
- 默认配置修改示例:
{
"fileAllowFiles": [".htm"],
"filePathFormat": "/template/1/default/{time}"
}
- 模板命令执行:
<#assign ex="freemarker.template.utility.Execute"?new()>${ex("whoami")}
- 命令间不能有空格,可使用base64编码绕过
修复方式:
- 检查传入的jsonConfig是否与配置文件开头一致
- 抛出异常阻止前台文件上传模板文件
0x03 后台漏洞
3.1 任意文件上传漏洞
漏洞接口:
/ms/file/uploadTemplate.do(压缩包上传)/ms/template/unZip.do(解压压缩包)
漏洞分析:
- 上传接口检查了文件名中的
../和..\,但未检查压缩包内文件 - 虽然限制了
.exe、.sh、.jsp、.jspx文件上传,但解压时未检查压缩包内文件类型 - 文件名会被修改为时间戳
利用方法:
- 上传包含恶意JSP文件的压缩包
- 调用解压接口解压到服务器
修复建议:
- 解压时检查压缩包内文件后缀
- 对
.jsp、.jspx等危险文件抛出异常
3.2 后台模板注入
利用方法:
- 直接修改后台模板
- 通过
/mcms/search接口调用ParserUtil.rendering()方法渲染模板执行命令
3.3 SQL注入漏洞
漏洞接口: verify接口
漏洞分析:
- 调用
BaseAction#validated()方法 - 使用HashMap构造where条件时未过滤导致SQL注入
- 日志中可见注入的SQL语句
0x04 参考链接
- https://gitee.com/mingSoft/MCMS/issues/I54VLM
- https://gitee.com/mingSoft/MCMS/issues/I5OWGU
- https://gitee.com/mingSoft/MCMS/issues/I56AID
- https://gitee.com/mingSoft/MCMS/issues/I4W1S9
总结
MCMS系统存在多个高危漏洞,包括前台SQL注入、模板注入,后台文件上传、模板注入等。攻击者可利用这些漏洞获取系统权限,执行任意代码。建议用户及时升级到最新版本,修复这些安全问题。