ofCMS代码审计
字数 1123 2025-08-03 10:57:01
ofCMS代码审计报告
1. 系统概述
ofCMS是一个基于Java的内容管理系统,本次审计发现了多个安全漏洞,包括路径遍历、任意文件上传和SQL注入等严重问题。
2. 目录结构分析
审计开始时首先分析了系统的主要目录结构,重点关注后台管理登录系统。
3. 漏洞详情
3.1 管理员账号枚举漏洞
位置:后台管理登录系统
发现过程:
- 全局搜索登录功能代码
- 发现账号正确与否的提示信息不同
风险:
- 攻击者可以通过不同的错误提示枚举出有效的管理员账号
- 虽然系统有登录次数限制,但仍存在信息泄露风险
3.2 路径遍历漏洞
位置:com/ofsoft/cms/admin/controller/cms/TemplateController.java
漏洞代码分析:
// 获取参数
String dir = getPara("dir");
// 直接拼接路径
File file = new File(getSiteTemplateResourcePath() + dir);
// 读取文件
关键问题:
- 直接拼接网站路径和用户输入的
dir参数 - 未对
../进行过滤,导致可以跳出目录限制
利用方式:
http://localhost:8080/ofcms-admin/admin/cms/template/getTemplates.html?file_name=web.xml&dir=../../&dir_name=
影响:
- 可读取服务器上任意文件
- 可能导致敏感信息泄露
3.3 任意文件上传漏洞
位置:com/ofsoft/cms/admin/controller/cms/TemplateController.java
请求参数:
http://localhost:8080/ofcms-admin/admin/cms/template/save.json?dirs=./&res_path=&file_name=1.txt&file_content=1231afdsfsdfs
文件后缀处理机制:
- 位于
com/ofsoft/cms/core/handler/ActionHandler - 对非
static目录下的文件会进行后缀名处理 - 会将
suffix数组中的值置空:.html,.jsp,.json
风险:
- 可上传任意文件内容
- 虽然限制了部分危险后缀,但仍可能通过其他方式执行恶意代码
3.4 SQL注入漏洞
位置:com/ofsoft/cms/admin/controller/system/SystemGenerateController.java
漏洞代码:
// 直接执行用户输入的SQL
update(getPara("sql"));
问题:
- 直接获取用户输入的SQL语句并执行
- 没有任何过滤或参数化处理
影响:
- 可执行任意SQL语句
- 可能导致数据泄露、篡改或删除
4. 修复建议
-
管理员账号枚举:
- 统一登录失败提示信息
- 实现更严格的登录限制机制
-
路径遍历:
- 对用户输入的路径参数进行规范化处理
- 检查并过滤
../等特殊字符 - 限制文件访问范围
-
文件上传:
- 实施严格的白名单文件类型检查
- 限制上传目录的权限
- 对上传内容进行安全检查
-
SQL注入:
- 使用参数化查询或预编译语句
- 实现最小权限原则,限制数据库账户权限
- 对动态SQL进行严格的输入验证
5. 总结
本次审计发现了ofCMS系统中多个严重安全漏洞,攻击者可利用这些漏洞获取系统敏感信息、上传恶意文件或执行任意SQL语句。建议开发者立即修复这些问题,并在开发过程中加强安全编码实践。