MCMS代码安全审计小记
字数 1657 2025-08-29 22:41:10

MCMS代码安全审计教学文档

1. 系统概述

MCMS是一款基于SpringBoot 2架构的内容管理系统,主要用于管理和监控计算机网络中的各种设备和资源,提供网络拓扑图、设备状态、流量监控、安全性管理等功能。

2. 依赖组件分析

2.1 FastJson 1.2.78

  • 项目中引入了Fastjson 1.2.78版本
  • 存在JSON.parseObject进行json解析的代码
  • 主要风险点:
    • ms-basic-2.1.13.jar中存在JSON反序列化点
    • 通过编辑器接口可能触发反序列化漏洞

2.2 Shiro 1.8.0

  • 使用了shiro-core 1.8.0
  • 发现硬编码的shiro-key
  • 登录认证流程:
    • 使用Shiro进行身份认证
    • 支持rememberMe功能
  • 漏洞利用:
    • 存在Shiro反序列化命令执行漏洞
    • 可利用工具直接进行漏洞复现

2.3 Freemarker 2.3.31

  • 使用Freemarker模板解析引擎
  • 主要风险点:
    • CmsParserUtil.java中的模板解析功能
    • MCmsAction.java中的动态页面生成功能
  • 漏洞利用路径:
    1. 后台"系统设置"→"模板管理"可编辑模板文件
    2. 在模板中插入恶意Freemarker载荷
    3. 通过"内容管理-静态化"生成主页触发载荷
    4. 或通过自定义页面功能选择恶意模板触发

3. SQL注入漏洞分析

3.1 漏洞点定位

  • 全局搜索${定位到3处潜在注入点
  • 主要风险点:
    • queryIdsByCategoryIdForParser方法中的order参数拼接
    • queryBySQL方法中的orderBy参数

3.2 利用分析

  • /queryData接口存在SQL注入风险
  • 注入点特征:
    • orderBy参数可控
    • 仅检查是否包含空格(可通过内联注释绕过)
  • 利用方式:
    POST /queryData
    orderBy=id/**/desc--
    

4. 文件上传漏洞分析

4.1 上传功能实现

  • 统一上传方法位于BaseFileAction.java
  • 过滤机制:
    • 黑名单过滤jsp和exe文件
    • 检查文件后缀
    • 过滤路径中的../..\

4.2 利用限制

  • 配置文件额外限制了上传文件类型
  • 可能的绕过方式:
    • 上传jspx文件(但实际测试仍被拦截)
    • 上传html文件构造XSS(仅限后台self-xss)

4.3 模板上传利用

  • 通过uploadTemplate上传模板文件
  • 可上传包含恶意Freemarker载荷的htm文件
  • 结合模板注入漏洞实现命令执行

5. 文件下载漏洞分析

  • 下载功能限制:
    • 检查../..\
    • 只能读取WEB-INF目录下的文件
  • 无法实现任意文件读取

6. 其他潜在风险

  • SnakeYaml组件存在但未发现直接调用点
  • 解压文件(zipslip)等漏洞未发现明显利用点

7. 审计方法论总结

  1. 依赖组件分析

    • 检查pom.xml和实际引入的第三方库
    • 关注已知漏洞组件的版本
  2. 漏洞模式识别

    • Fastjson:搜索JSON.parseObject
    • Shiro:检查密钥硬编码和rememberMe功能
    • Freemarker:搜索template.process
    • SQL注入:搜索${和拼接SQL语句
  3. 调用链追踪

    • 从漏洞点向上追溯调用链
    • 检查参数是否可控
    • 验证过滤机制是否可绕过
  4. 功能交互分析

    • 结合后台功能验证漏洞可利用性
    • 如模板编辑+静态化功能组合利用
  5. 黑盒验证

    • 对审计发现的漏洞点进行实际测试
    • 验证过滤机制的实际效果

8. 修复建议

  1. Fastjson

    • 升级到最新安全版本
    • 使用安全模式或添加过滤
  2. Shiro

    • 升级到最新版本
    • 使用随机生成的密钥
  3. Freemarker

    • 对模板内容进行严格过滤
    • 限制模板编辑权限
  4. SQL注入

    • 使用预编译语句
    • 加强orderBy参数过滤
  5. 文件上传

    • 使用白名单机制
    • 限制上传文件执行权限
  6. 配置文件

    • 移除硬编码的敏感信息
    • 加强权限控制

通过全面审计MCMS系统,我们发现其存在多处高危漏洞,建议开发者参考上述修复建议进行安全加固。

MCMS代码安全审计教学文档 1. 系统概述 MCMS是一款基于SpringBoot 2架构的内容管理系统,主要用于管理和监控计算机网络中的各种设备和资源,提供网络拓扑图、设备状态、流量监控、安全性管理等功能。 2. 依赖组件分析 2.1 FastJson 1.2.78 项目中引入了Fastjson 1.2.78版本 存在JSON.parseObject进行json解析的代码 主要风险点: ms-basic-2.1.13.jar 中存在JSON反序列化点 通过编辑器接口可能触发反序列化漏洞 2.2 Shiro 1.8.0 使用了shiro-core 1.8.0 发现硬编码的shiro-key 登录认证流程: 使用Shiro进行身份认证 支持rememberMe功能 漏洞利用: 存在Shiro反序列化命令执行漏洞 可利用工具直接进行漏洞复现 2.3 Freemarker 2.3.31 使用Freemarker模板解析引擎 主要风险点: CmsParserUtil.java 中的模板解析功能 MCmsAction.java 中的动态页面生成功能 漏洞利用路径: 后台"系统设置"→"模板管理"可编辑模板文件 在模板中插入恶意Freemarker载荷 通过"内容管理-静态化"生成主页触发载荷 或通过自定义页面功能选择恶意模板触发 3. SQL注入漏洞分析 3.1 漏洞点定位 全局搜索 ${ 定位到3处潜在注入点 主要风险点: queryIdsByCategoryIdForParser 方法中的order参数拼接 queryBySQL 方法中的orderBy参数 3.2 利用分析 /queryData 接口存在SQL注入风险 注入点特征: orderBy参数可控 仅检查是否包含空格(可通过内联注释绕过) 利用方式: 4. 文件上传漏洞分析 4.1 上传功能实现 统一上传方法位于 BaseFileAction.java 过滤机制: 黑名单过滤jsp和exe文件 检查文件后缀 过滤路径中的 ../ 和 ..\ 4.2 利用限制 配置文件额外限制了上传文件类型 可能的绕过方式: 上传jspx文件(但实际测试仍被拦截) 上传html文件构造XSS(仅限后台self-xss) 4.3 模板上传利用 通过 uploadTemplate 上传模板文件 可上传包含恶意Freemarker载荷的htm文件 结合模板注入漏洞实现命令执行 5. 文件下载漏洞分析 下载功能限制: 检查 ../ 和 ..\ 只能读取WEB-INF目录下的文件 无法实现任意文件读取 6. 其他潜在风险 SnakeYaml组件存在但未发现直接调用点 解压文件(zipslip)等漏洞未发现明显利用点 7. 审计方法论总结 依赖组件分析 : 检查pom.xml和实际引入的第三方库 关注已知漏洞组件的版本 漏洞模式识别 : Fastjson:搜索 JSON.parseObject Shiro:检查密钥硬编码和rememberMe功能 Freemarker:搜索 template.process SQL注入:搜索 ${ 和拼接SQL语句 调用链追踪 : 从漏洞点向上追溯调用链 检查参数是否可控 验证过滤机制是否可绕过 功能交互分析 : 结合后台功能验证漏洞可利用性 如模板编辑+静态化功能组合利用 黑盒验证 : 对审计发现的漏洞点进行实际测试 验证过滤机制的实际效果 8. 修复建议 Fastjson : 升级到最新安全版本 使用安全模式或添加过滤 Shiro : 升级到最新版本 使用随机生成的密钥 Freemarker : 对模板内容进行严格过滤 限制模板编辑权限 SQL注入 : 使用预编译语句 加强orderBy参数过滤 文件上传 : 使用白名单机制 限制上传文件执行权限 配置文件 : 移除硬编码的敏感信息 加强权限控制 通过全面审计MCMS系统,我们发现其存在多处高危漏洞,建议开发者参考上述修复建议进行安全加固。