ofcms V1.2 代码审计(二)
字数 1193 2025-08-20 18:18:11

OFCMS V1.2 代码审计报告与安全教学文档

1. 系统概述

OFCMS V1.2 是一个可能存在未完成开发的内容管理系统,审计发现其存在多处安全漏洞,主要包括越权、未授权访问和XSS漏洞。系统使用了Shiro框架进行权限控制,但实现不完善。

2. 漏洞详情与复现

2.1 越权漏洞

漏洞描述

系统存在垂直越权漏洞,普通用户可通过修改请求参数提升自身权限至管理员。

复现步骤

  1. 准备测试数据(可直接在数据库执行):
INSERT INTO `of_sys_role` (role_name, role_desc, role_type, create_time, update_time, status, remark) 
VALUES ('财务', '财务', '1', NOW(), NOW(), '1', '11');
  1. 使用任意账户登录系统
  2. 访问"基本资料"功能
  3. 抓包修改请求中的role_id参数为1(管理员角色)
  4. 提交请求完成权限提升

代码分析

漏洞位于SysUserController.javaupdate()方法:

String roleId = (String) params.get("role_id");
if (!StringUtils.isBlank(roleId)) {
    SqlPara sql = Db.getSqlPara("system.user.role_update", params);
    Db.update(sql);
}

问题点:缺少对当前用户权限的校验,直接接受客户端提交的role_id参数。

2.2 未授权访问漏洞

漏洞描述

系统集成了Druid监控但配置不当,导致已登录用户可访问敏感监控信息。

复现步骤

  1. 使用任意有效账户登录系统
  2. 直接访问Druid监控页面:
http://[目标IP]:8080/ofcms_admin/admin/druid/header.html

安全配置分析

Shiro配置文件中(shiro.ini)相关配置:

[urls]
/admin/logout.html = anon
/admin/login2.html = anon
/admin/login.html = anon
/admin/dologin.json = anon
/api/** = anon
/static/** = anon
/admin/** = authc
/** = anon

问题点:虽然/admin/**路径需要认证,但未对Druid监控接口做额外权限控制。

2.3 XSS漏洞

漏洞描述

系统未配置XSS过滤器,所有用户输入点均可能存在XSS漏洞。

复现方法

  1. 寻找任意用户输入点(如表单、URL参数等)
  2. 输入典型XSS payload,例如:
<script>alert(1)</script>
  1. 提交后观察是否执行

代码分析

系统特点:

  • 使用Freemarker模板引擎
  • 未实现XSS过滤器
  • 仅配置了字体和Restful风格的拦截器

3. 审计技巧

3.1 SQL注入检测

使用IDEA正则搜索潜在SQL注入点:

(?<!SqlPara sql = Db\.getSqlPara$.*$;\s*)Db\.update$sql$;

3.2 权限校验检测

重点关注Controller中涉及权限修改、敏感操作的方法,检查是否包含:

  • 当前用户权限验证
  • 操作目标权限验证
  • 会话有效性验证

3.3 XSS防护检测

检查是否存在以下内容:

  1. XSS过滤器实现
  2. 输出编码处理
  3. CSP策略配置

4. 修复建议

  1. 越权漏洞修复

    • 在权限修改操作前验证当前用户权限
    • 实现基于角色的访问控制(RBAC)
    • 服务端校验目标角色是否允许被当前用户分配
  2. 未授权访问修复

    • 为Druid监控配置独立强密码
    • 限制访问IP范围
    • 或完全移除生产环境的监控界面
  3. XSS漏洞修复

    • 实现全局XSS过滤器
    • 对所有用户输入进行过滤和输出编码
    • 设置Content-Security-Policy头
  4. 其他建议

    • 完善Shiro配置,细化权限控制
    • 对敏感操作增加日志记录
    • 实现CSRF防护机制

5. 总结

OFCMS V1.2存在典型的三类安全漏洞,主要原因是:

  1. 权限校验不完善
  2. 敏感功能暴露
  3. 输入输出缺乏过滤

审计此类系统时应重点关注权限控制实现和用户输入处理,使用正则表达式等工具辅助快速定位潜在风险点。

OFCMS V1.2 代码审计报告与安全教学文档 1. 系统概述 OFCMS V1.2 是一个可能存在未完成开发的内容管理系统,审计发现其存在多处安全漏洞,主要包括越权、未授权访问和XSS漏洞。系统使用了Shiro框架进行权限控制,但实现不完善。 2. 漏洞详情与复现 2.1 越权漏洞 漏洞描述 系统存在垂直越权漏洞,普通用户可通过修改请求参数提升自身权限至管理员。 复现步骤 准备测试数据(可直接在数据库执行): 使用任意账户登录系统 访问"基本资料"功能 抓包修改请求中的 role_id 参数为1(管理员角色) 提交请求完成权限提升 代码分析 漏洞位于 SysUserController.java 的 update() 方法: 问题点:缺少对当前用户权限的校验,直接接受客户端提交的role_ id参数。 2.2 未授权访问漏洞 漏洞描述 系统集成了Druid监控但配置不当,导致已登录用户可访问敏感监控信息。 复现步骤 使用任意有效账户登录系统 直接访问Druid监控页面: 安全配置分析 Shiro配置文件中( shiro.ini )相关配置: 问题点:虽然 /admin/** 路径需要认证,但未对Druid监控接口做额外权限控制。 2.3 XSS漏洞 漏洞描述 系统未配置XSS过滤器,所有用户输入点均可能存在XSS漏洞。 复现方法 寻找任意用户输入点(如表单、URL参数等) 输入典型XSS payload,例如: 提交后观察是否执行 代码分析 系统特点: 使用Freemarker模板引擎 未实现XSS过滤器 仅配置了字体和Restful风格的拦截器 3. 审计技巧 3.1 SQL注入检测 使用IDEA正则搜索潜在SQL注入点: 3.2 权限校验检测 重点关注Controller中涉及权限修改、敏感操作的方法,检查是否包含: 当前用户权限验证 操作目标权限验证 会话有效性验证 3.3 XSS防护检测 检查是否存在以下内容: XSS过滤器实现 输出编码处理 CSP策略配置 4. 修复建议 越权漏洞修复 : 在权限修改操作前验证当前用户权限 实现基于角色的访问控制(RBAC) 服务端校验目标角色是否允许被当前用户分配 未授权访问修复 : 为Druid监控配置独立强密码 限制访问IP范围 或完全移除生产环境的监控界面 XSS漏洞修复 : 实现全局XSS过滤器 对所有用户输入进行过滤和输出编码 设置Content-Security-Policy头 其他建议 : 完善Shiro配置,细化权限控制 对敏感操作增加日志记录 实现CSRF防护机制 5. 总结 OFCMS V1.2存在典型的三类安全漏洞,主要原因是: 权限校验不完善 敏感功能暴露 输入输出缺乏过滤 审计此类系统时应重点关注权限控制实现和用户输入处理,使用正则表达式等工具辅助快速定位潜在风险点。