MCMS全面审计
字数 2096 2025-08-23 18:31:34

MCMS 5.2.8 全面安全审计报告

1. 系统概述

MCMS 是一个完整的开源 Java CMS 系统,基于 SpringBoot 2 架构,前端使用 Vue 和 Element UI。系统提供上百套免费模板和多种插件(文章、商城、微信、论坛、会员等)。

2. 环境搭建

  1. 官方源码:https://gitee.com/mingSoft/MCMS
  2. 数据库准备:
    • 修改数据库名称
    • 导入 doc/mcms-5.2.8.sql 文件
  3. 运行配置:
    • 修改 application.yml 中的端口(默认8000)
    • 运行 MSApplication.java 的 main 方法
  4. 访问地址:
    • 登录页面:http://localhost:8000/ms/login.do
    • 默认凭证:msopen/msopen

3. 漏洞分析

3.1 反射型XSS

路径:/mcms/search.do

漏洞点

  • net.mingsoft.basic.filter.XssHttpServletRequestWrapper
  • 直接将用户输入拼接到错误信息中

验证方式

  • 访问 http://localhost:8000/mcms/search.do 并注入XSS代码

3.2 文件上传漏洞(第一处)

路径:/ms/file/uploadTemplate.do

利用方式

  1. 打包JSP文件为ZIP
  2. 上传模板
  3. 系统会自动解压

漏洞点

  • net.mingsoft.basic.action.ManageFileAction#uploadTemplate
  • 仅过滤../,绝对路径可绕过

回显路径

  • http://localhost:8000/template/1/[时间戳].txt

3.3 文件上传漏洞(第二处)

路径:网站Logo上传

特点

  • 与第一处类似
  • 回显路径:http://localhost:8000/upload/1/appLogo/[时间戳].txt

3.4 命令执行漏洞

路径:模板编辑功能

漏洞点

  • net.mingsoft.basic.action.TemplateAction#writeFileContent
  • 通过fileName参数可指定绝对路径写入文件

3.5 SQL注入漏洞(第一处)

路径:/ms/mdiy/page/verify.do

利用方式

1;select if(substring((select database()),1,4)='mcms',sleep(5),1)/ /and/ /1&fieldValue=1&id=1&idName=1

漏洞点

  • MyBatis使用$拼接SQL
  • net/mingsoft/ms-base/2.1.13/ms-base-2.1.13.jar!/net/mingsoft/base/dao/IBaseDao.xml
  • BaseBizImpl.java中重写queryBySQL方法

3.6 Shiro反序列化漏洞

发现

  • Shiro key:d3d3bWluZ3NvZnRuZXRtcw==

利用

  • 通过rememberMe参数进行反序列化攻击

3.7 文件上传漏洞(第三处)

路径:/ms/file/upload

漏洞点

  • net.mingsoft.basic.action.ManageFileAction#upload
  • 仅过滤../,绝对路径可绕过

3.8 文件上传漏洞(第四处)

路径:文章缩略图上传

特点

  • 仅过滤.exe,.jsp,.jspx,.sh
  • 可上传ZIP包含JSP文件
  • 通过/ms/template/unZip.do解压执行

3.9 SSTI注入(Freemarker)

路径:模板管理

漏洞点

  • net\mingsoft\base\util\FtlUtil.java
  • 缺少安全配置:cfg.setNewBuiltinClassResolver(TemplateClassResolver.SAFER_RESOLVER)

Payload

<#assign value="freemarker.template.utility.Execute"?new()>${value("calc.exe")}

3.10 Fastjson反序列化

发现

  • 存在Fastjson <=1.2.80
  • 难以利用

3.11 SQL注入(第二处)

路径:分类查询

漏洞点

  • CategoryDao.xml中使用${}拼接SQL
  • BaseEntity中使用JSONObject.parseArray处理参数

利用方式

  • 构造sqlWhereList参数进行注入

3.12 SQL注入(第三处)

路径:内容查询

漏洞点

  • IContentDao.xml中使用${categoryId}
  • 未对参数过滤

Payload

categoryId=1'and updatexml(1.concat(0x7e.user().0x7e).1)and'1

4. 修复建议

  1. 对所有用户输入进行严格过滤
  2. 文件上传:
    • 限制上传文件类型
    • 检查文件内容
    • 使用随机文件名
  3. SQL注入:
    • 使用#{}代替${}
    • 添加全局过滤器
  4. XSS:
    • 实现严格的输出编码
  5. 升级组件:
    • Shiro
    • Fastjson
  6. Freemarker:
    • 添加安全解析器配置

5. 总结

MCMS 5.2.8版本存在多种高危漏洞,包括但不限于:

  • 多处文件上传漏洞
  • 多种SQL注入方式
  • XSS漏洞
  • 命令执行漏洞
  • 反序列化漏洞
  • SSTI注入

建议用户升级到最新版本或按照上述建议进行修复。

MCMS 5.2.8 全面安全审计报告 1. 系统概述 MCMS 是一个完整的开源 Java CMS 系统,基于 SpringBoot 2 架构,前端使用 Vue 和 Element UI。系统提供上百套免费模板和多种插件(文章、商城、微信、论坛、会员等)。 2. 环境搭建 官方源码:https://gitee.com/mingSoft/MCMS 数据库准备: 修改数据库名称 导入 doc/mcms-5.2.8.sql 文件 运行配置: 修改 application.yml 中的端口(默认8000) 运行 MSApplication.java 的 main 方法 访问地址: 登录页面:http://localhost:8000/ms/login.do 默认凭证:msopen/msopen 3. 漏洞分析 3.1 反射型XSS 路径 :/mcms/search.do 漏洞点 : net.mingsoft.basic.filter.XssHttpServletRequestWrapper 直接将用户输入拼接到错误信息中 验证方式 : 访问 http://localhost:8000/mcms/search.do 并注入XSS代码 3.2 文件上传漏洞(第一处) 路径 :/ms/file/uploadTemplate.do 利用方式 : 打包JSP文件为ZIP 上传模板 系统会自动解压 漏洞点 : net.mingsoft.basic.action.ManageFileAction#uploadTemplate 仅过滤 ../ ,绝对路径可绕过 回显路径 : http://localhost:8000/template/1/[ 时间戳 ].txt 3.3 文件上传漏洞(第二处) 路径 :网站Logo上传 特点 : 与第一处类似 回显路径:http://localhost:8000/upload/1/appLogo/[ 时间戳 ].txt 3.4 命令执行漏洞 路径 :模板编辑功能 漏洞点 : net.mingsoft.basic.action.TemplateAction#writeFileContent 通过fileName参数可指定绝对路径写入文件 3.5 SQL注入漏洞(第一处) 路径 :/ms/mdiy/page/verify.do 利用方式 : 漏洞点 : MyBatis使用$拼接SQL net/mingsoft/ms-base/2.1.13/ms-base-2.1.13.jar!/net/mingsoft/base/dao/IBaseDao.xml BaseBizImpl.java 中重写queryBySQL方法 3.6 Shiro反序列化漏洞 发现 : Shiro key:d3d3bWluZ3NvZnRuZXRtcw== 利用 : 通过rememberMe参数进行反序列化攻击 3.7 文件上传漏洞(第三处) 路径 :/ms/file/upload 漏洞点 : net.mingsoft.basic.action.ManageFileAction#upload 仅过滤 ../ ,绝对路径可绕过 3.8 文件上传漏洞(第四处) 路径 :文章缩略图上传 特点 : 仅过滤 .exe , .jsp , .jspx , .sh 可上传ZIP包含JSP文件 通过 /ms/template/unZip.do 解压执行 3.9 SSTI注入(Freemarker) 路径 :模板管理 漏洞点 : net\mingsoft\base\util\FtlUtil.java 缺少安全配置: cfg.setNewBuiltinClassResolver(TemplateClassResolver.SAFER_RESOLVER) Payload : 3.10 Fastjson反序列化 发现 : 存在Fastjson <=1.2.80 难以利用 3.11 SQL注入(第二处) 路径 :分类查询 漏洞点 : CategoryDao.xml 中使用 ${} 拼接SQL BaseEntity 中使用 JSONObject.parseArray 处理参数 利用方式 : 构造 sqlWhereList 参数进行注入 3.12 SQL注入(第三处) 路径 :内容查询 漏洞点 : IContentDao.xml 中使用 ${categoryId} 未对参数过滤 Payload : 4. 修复建议 对所有用户输入进行严格过滤 文件上传: 限制上传文件类型 检查文件内容 使用随机文件名 SQL注入: 使用#{}代替${} 添加全局过滤器 XSS: 实现严格的输出编码 升级组件: Shiro Fastjson Freemarker: 添加安全解析器配置 5. 总结 MCMS 5.2.8版本存在多种高危漏洞,包括但不限于: 多处文件上传漏洞 多种SQL注入方式 XSS漏洞 命令执行漏洞 反序列化漏洞 SSTI注入 建议用户升级到最新版本或按照上述建议进行修复。