代码审计 - 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尝试了以下绕过方法:

  1. 在文件头部添加GIF89a伪造图片头
  2. 将文件打包为ZIP格式上传
  3. 利用系统解压功能

但遇到了错误:

{"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 部署方式影响

用户fibuleXve1kcon讨论了部署方式对漏洞利用的影响:

  • 项目通常打包为JAR文件部署
  • JAR包不会解析JSP文件,因此上传JSP可能无法直接执行
  • 需要寻找其他可执行的文件上传路径或利用方式

3. 漏洞利用步骤

3.1 确认漏洞端点

  1. 测试/ms/store/file/uploadTemplate端点
  2. 尝试不使用.do后缀访问
  3. 观察系统响应,确认是否接受文件上传

3.2 构造恶意文件

  1. 准备Webshell文件(如JSP、PHP等)
  2. 尝试以下绕过方法:
    • 添加伪造的文件头(如GIF89a
    • 修改文件扩展名
    • 使用双重扩展名(如test.jsp.jpg

3.3 ZIP文件利用

  1. 创建合法的ZIP文件包含恶意文件
  2. 确保ZIP文件结构完整,避免出现"zip END header not found"错误
  3. 上传并利用系统解压功能将文件释放到可访问目录

3.4 绕过JAR部署限制

  1. 寻找非JAR部署环境(如WAR部署)
  2. 寻找允许解析动态脚本的上传目录
  3. 利用文件包含等其他漏洞配合使用

4. 防御建议

  1. 严格限制文件上传类型,使用白名单机制
  2. 对上传文件进行内容检查,而不仅依赖扩展名
  3. 禁用危险的文件解压功能或限制解压目录
  4. 更新Hutool等组件到最新版本
  5. 对上传文件进行重命名,避免直接使用用户提供的文件名

5. 总结

MCMS v5.4.1存在文件上传漏洞,攻击者可能通过精心构造的文件上传实现远程代码执行。漏洞利用需要考虑系统部署方式(JAR/WAR)和文件处理逻辑(如Hutool的ZipUtil)。开发者应严格限制文件上传功能并更新相关组件。

MCMS v5.4.1 0day漏洞分析与挖掘教学文档 1. 漏洞背景 MCMS v5.4.1是一款开源的内容管理系统,在文件上传功能中存在安全漏洞,可能导致任意文件上传和远程代码执行。 2. 漏洞分析 2.1 文件上传路径问题 根据社区讨论,存在问题的上传路径包括: /ms/store/file/uploadTemplate - 无需在URI后添加 .do 后缀即可访问 其他未明确指出的上传端点 2.2 文件上传限制绕过 用户 yrf2314 尝试了以下绕过方法: 在文件头部添加 GIF89a 伪造图片头 将文件打包为ZIP格式上传 利用系统解压功能 但遇到了错误: 这表明系统使用了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)。开发者应严格限制文件上传功能并更新相关组件。