代码审计 - MCMS v5.4.1 0day挖掘
字数 1039 2025-08-20 18:17:07
MCMS v5.4.1 0day漏洞分析与挖掘教学文档
1. 漏洞背景
MCMS v5.4.1是一款开源的内容管理系统,在文件上传功能中存在安全漏洞,可能导致任意文件上传和远程代码执行。
2. 漏洞分析
2.1 文件上传路径问题
根据社区讨论,存在问题的上传路径包括:
/ms/store/file/uploadTemplate- 无需在URI后添加.do后缀即可访问- 其他未明确指出的上传端点
2.2 文件上传限制绕过
用户yrf2314尝试了以下绕过方法:
- 在文件头部添加
GIF89a伪造图片头 - 将文件打包为ZIP格式上传
- 利用系统解压功能
但遇到了错误:
{"result":false,"msg":"cn.hutool.core.util.ZipUtil.toZipFile(ZipUtil.java:67):cn.hutool.core.io.IORuntimeException: ZipException: zip END header not found","code":500}
这表明系统使用了Hutool工具的ZipUtil进行ZIP文件处理,但上传的文件不是有效的ZIP格式。
2.3 部署方式影响
用户fibuleX和ve1kcon讨论了部署方式对漏洞利用的影响:
- 项目通常打包为JAR文件部署
- JAR包不会解析JSP文件,因此上传JSP可能无法直接执行
- 需要寻找其他可执行的文件上传路径或利用方式
3. 漏洞利用步骤
3.1 确认漏洞端点
- 测试
/ms/store/file/uploadTemplate端点 - 尝试不使用
.do后缀访问 - 观察系统响应,确认是否接受文件上传
3.2 构造恶意文件
- 准备Webshell文件(如JSP、PHP等)
- 尝试以下绕过方法:
- 添加伪造的文件头(如
GIF89a) - 修改文件扩展名
- 使用双重扩展名(如
test.jsp.jpg)
- 添加伪造的文件头(如
3.3 ZIP文件利用
- 创建合法的ZIP文件包含恶意文件
- 确保ZIP文件结构完整,避免出现"zip END header not found"错误
- 上传并利用系统解压功能将文件释放到可访问目录
3.4 绕过JAR部署限制
- 寻找非JAR部署环境(如WAR部署)
- 寻找允许解析动态脚本的上传目录
- 利用文件包含等其他漏洞配合使用
4. 防御建议
- 严格限制文件上传类型,使用白名单机制
- 对上传文件进行内容检查,而不仅依赖扩展名
- 禁用危险的文件解压功能或限制解压目录
- 更新Hutool等组件到最新版本
- 对上传文件进行重命名,避免直接使用用户提供的文件名
5. 总结
MCMS v5.4.1存在文件上传漏洞,攻击者可能通过精心构造的文件上传实现远程代码执行。漏洞利用需要考虑系统部署方式(JAR/WAR)和文件处理逻辑(如Hutool的ZipUtil)。开发者应严格限制文件上传功能并更新相关组件。