JAVA代审之publiccmsV4最新版
字数 1218 2025-08-22 12:23:30

PublicCMS V4 最新版安全审计报告

项目概述

PublicCMS 是一个现代化 Java CMS 系统,具有以下特点:

  • 200多万行代码,持续迭代8年
  • 支持静态化、服务器端包含、多级缓存、全文搜索
  • 支持中、繁、日、英多语言
  • 全球用户占比0.0005%(W3Techs数据)
  • 轻松支撑千万级数据和PV

环境搭建

  1. 源码获取

    • 项目地址:https://gitee.com/sanluan/PublicCMS/archive/refs/tags/V4.0.202406.d.zip
    • 下载后使用IDEA打开
  2. 运行配置

    • 配置Tomcat服务器
    • 启动后访问 http://localhost:8080/
    • 按照指引配置数据库
  3. 后台访问

    • 安装过程中设置管理员账号密码
    • 登录后台进行管理

漏洞分析

1. 任意文件上传漏洞

漏洞位置:后台文件操作功能

漏洞详情

  1. 文件上传前会触发check方法进行验证:

    • 限制目录穿越(防止../)
    • 白名单文件后缀检查(包括.mp3, .wav, .mid, .flv, .swf等40多种格式)
    • 允许上传zip文件
  2. Zip文件解压漏洞:

    • 系统提供zip解压功能
    • 仅验证zip文件本身,未对zip内文件进行校验
    • 虽然防止了目录穿越,但可在指定目录(data\publiccms\web\site_1\)上传任意文件

利用限制

  • 无法目录穿越
  • 上传位置受限

2. 存储型XSS漏洞

漏洞位置:后台模板编辑功能

漏洞详情

  • 早期版本存在SSTI(服务器端模板注入)漏洞,最新版已修复
  • 但仍可通过模板编辑功能注入并存储JS代码
  • 需要后台权限,利用价值有限

3. SSRF漏洞

漏洞位置
PublicCMS-V4\publiccms-parent\publiccms-core\src\main\java\com\publiccms\controller\admin\sys\UeditorAdminController.java

漏洞详情

  • 通过.execute()方法执行外部请求
  • 完整路由:/admin/ueditor
  • 请求地址通过file[]参数传入
  • 支持GET和POST请求(GET请求需对[]进行URL编码)

安全建议

  1. 文件上传

    • 对zip内文件进行后缀名检查
    • 限制解压后文件的存放位置
    • 增加内容类型检查
  2. XSS防护

    • 对模板编辑内容进行更严格的过滤
    • 实现CSP(内容安全策略)
  3. SSRF防护

    • 限制请求的目标地址(白名单或内网限制)
    • 验证URL格式
    • 禁用危险的协议(file://, gopher://等)
  4. 其他建议

    • 定期更新依赖库
    • 实施严格的权限控制
    • 增加安全审计日志

总结

PublicCMS V4最新版修复了早期版本的一些严重漏洞,但仍存在一些安全问题,特别是需要后台权限的漏洞。开发团队应继续加强安全防护,特别是对用户输入的处理和权限控制机制。

PublicCMS V4 最新版安全审计报告 项目概述 PublicCMS 是一个现代化 Java CMS 系统,具有以下特点: 200多万行代码,持续迭代8年 支持静态化、服务器端包含、多级缓存、全文搜索 支持中、繁、日、英多语言 全球用户占比0.0005%(W3Techs数据) 轻松支撑千万级数据和PV 环境搭建 源码获取 : 项目地址:https://gitee.com/sanluan/PublicCMS/archive/refs/tags/V4.0.202406.d.zip 下载后使用IDEA打开 运行配置 : 配置Tomcat服务器 启动后访问 http://localhost:8080/ 按照指引配置数据库 后台访问 : 安装过程中设置管理员账号密码 登录后台进行管理 漏洞分析 1. 任意文件上传漏洞 漏洞位置 :后台文件操作功能 漏洞详情 : 文件上传前会触发check方法进行验证: 限制目录穿越(防止../) 白名单文件后缀检查(包括.mp3, .wav, .mid, .flv, .swf等40多种格式) 允许上传zip文件 Zip文件解压漏洞: 系统提供zip解压功能 仅验证zip文件本身,未对zip内文件进行校验 虽然防止了目录穿越,但可在指定目录(data\publiccms\web\site_ 1\)上传任意文件 利用限制 : 无法目录穿越 上传位置受限 2. 存储型XSS漏洞 漏洞位置 :后台模板编辑功能 漏洞详情 : 早期版本存在SSTI(服务器端模板注入)漏洞,最新版已修复 但仍可通过模板编辑功能注入并存储JS代码 需要后台权限,利用价值有限 3. SSRF漏洞 漏洞位置 : PublicCMS-V4\publiccms-parent\publiccms-core\src\main\java\com\publiccms\controller\admin\sys\UeditorAdminController.java 漏洞详情 : 通过 .execute() 方法执行外部请求 完整路由: /admin/ueditor 请求地址通过 file[] 参数传入 支持GET和POST请求(GET请求需对 [] 进行URL编码) 安全建议 文件上传 : 对zip内文件进行后缀名检查 限制解压后文件的存放位置 增加内容类型检查 XSS防护 : 对模板编辑内容进行更严格的过滤 实现CSP(内容安全策略) SSRF防护 : 限制请求的目标地址(白名单或内网限制) 验证URL格式 禁用危险的协议(file://, gopher://等) 其他建议 : 定期更新依赖库 实施严格的权限控制 增加安全审计日志 总结 PublicCMS V4最新版修复了早期版本的一些严重漏洞,但仍存在一些安全问题,特别是需要后台权限的漏洞。开发团队应继续加强安全防护,特别是对用户输入的处理和权限控制机制。