Public-CMS漏洞分析
字数 1266 2025-08-24 07:48:33

Public-CMS漏洞分析与利用教学文档

1. 漏洞概述

Public-CMS V4.0.202302.c版本存在多个安全漏洞,包括:

  • 任意文件上传漏洞(可导致目录穿越)
  • 代码执行漏洞
  • 任意文件替换漏洞

这些漏洞可组合利用,最终可能导致远程代码执行(RCE)。

2. 任意文件上传漏洞

2.1 漏洞详情

系统在处理文件上传时未对上传路径进行充分校验,攻击者可通过修改文件名实现目录穿越,将文件上传到服务器任意位置。

2.2 漏洞利用方法

  1. 抓取文件上传请求包
  2. 修改文件后缀为-site.zip
  3. 通过此方式可实现目录穿越,上传文件到任意位置

2.3 漏洞代码分析

漏洞位于src/main/java/com/publiccms/controller/admin/sys/SysSiteAdminController.java文件中。

关键问题:

  • 未对上传路径进行任何校验
  • 仅要求文件名以-size.zip结尾
  • 文件路径直接拼接后写入,导致目录穿越

2.4 修复方案

新版已对目录穿越进行了限制,添加了路径校验逻辑。

3. 代码执行漏洞

3.1 漏洞详情

系统提供脚本执行功能,虽然对输入参数进行了过滤,但仍存在潜在风险。

3.2 漏洞代码分析

执行流程:

  1. 首先检查传入的脚本名称:

    • 是否为空
    • 是否为以下四个预设脚本之一:
      • sync.bat
      • sync.sh
      • backupdb.bat
      • backupdb.sh
  2. 如果是backup脚本:

    • 获取数据库配置信息
    • 将配置信息写入cmdarray
  3. 如果不是backup脚本:

    • 检查输入参数是否符合正则匹配要求
    • 将参数写入cmdarray的第一位
  4. 检查脚本是否存在:

    • 存在:将脚本路径写入cmdarray第一位
    • 不存在:创建新脚本后再写入路径
  5. 最终使用Runtime.getRuntime().exec()执行命令

3.3 限制条件

  • 脚本名称固定为四个预设值之一
  • 前端只能输入脚本名称和参数
  • 参数内容经过过滤
  • 无法直接修改脚本内容

4. 任意文件替换漏洞

4.1 漏洞详情

系统在文件替换功能中未检测../路径遍历序列,可能导致任意文件被替换。

4.2 漏洞代码分析

查看替换方法发现:

  • 未对../进行检测
  • 攻击者可能通过路径遍历替换系统关键文件

5. 组合利用思路

虽然每个漏洞单独利用存在限制,但可以组合利用:

  1. 利用任意文件上传漏洞上传恶意脚本到特定位置
  2. 通过任意文件替换漏洞替换预设脚本
  3. 利用代码执行功能执行被替换的恶意脚本
  4. 最终实现远程代码执行

6. 防御建议

  1. 对所有文件操作进行严格的路径校验
  2. 禁止使用../等路径遍历序列
  3. 对上传文件类型和内容进行严格限制
  4. 对脚本执行功能增加更严格的输入验证
  5. 使用白名单机制限制可执行脚本
  6. 及时更新到已修复漏洞的最新版本

7. 总结

Public-CMS V4.0.202302.c版本存在多个高危漏洞,攻击者可组合利用这些漏洞实现远程代码执行。建议用户及时升级到修复版本,并按照上述防御建议加强系统安全配置。

Public-CMS漏洞分析与利用教学文档 1. 漏洞概述 Public-CMS V4.0.202302.c版本存在多个安全漏洞,包括: 任意文件上传漏洞(可导致目录穿越) 代码执行漏洞 任意文件替换漏洞 这些漏洞可组合利用,最终可能导致远程代码执行(RCE)。 2. 任意文件上传漏洞 2.1 漏洞详情 系统在处理文件上传时未对上传路径进行充分校验,攻击者可通过修改文件名实现目录穿越,将文件上传到服务器任意位置。 2.2 漏洞利用方法 抓取文件上传请求包 修改文件后缀为 -site.zip 通过此方式可实现目录穿越,上传文件到任意位置 2.3 漏洞代码分析 漏洞位于 src/main/java/com/publiccms/controller/admin/sys/SysSiteAdminController.java 文件中。 关键问题: 未对上传路径进行任何校验 仅要求文件名以 -size.zip 结尾 文件路径直接拼接后写入,导致目录穿越 2.4 修复方案 新版已对目录穿越进行了限制,添加了路径校验逻辑。 3. 代码执行漏洞 3.1 漏洞详情 系统提供脚本执行功能,虽然对输入参数进行了过滤,但仍存在潜在风险。 3.2 漏洞代码分析 执行流程: 首先检查传入的脚本名称: 是否为空 是否为以下四个预设脚本之一: sync.bat sync.sh backupdb.bat backupdb.sh 如果是 backup 脚本: 获取数据库配置信息 将配置信息写入 cmdarray 如果不是 backup 脚本: 检查输入参数是否符合正则匹配要求 将参数写入 cmdarray 的第一位 检查脚本是否存在: 存在:将脚本路径写入 cmdarray 第一位 不存在:创建新脚本后再写入路径 最终使用 Runtime.getRuntime().exec() 执行命令 3.3 限制条件 脚本名称固定为四个预设值之一 前端只能输入脚本名称和参数 参数内容经过过滤 无法直接修改脚本内容 4. 任意文件替换漏洞 4.1 漏洞详情 系统在文件替换功能中未检测 ../ 路径遍历序列,可能导致任意文件被替换。 4.2 漏洞代码分析 查看替换方法发现: 未对 ../ 进行检测 攻击者可能通过路径遍历替换系统关键文件 5. 组合利用思路 虽然每个漏洞单独利用存在限制,但可以组合利用: 利用任意文件上传漏洞上传恶意脚本到特定位置 通过任意文件替换漏洞替换预设脚本 利用代码执行功能执行被替换的恶意脚本 最终实现远程代码执行 6. 防御建议 对所有文件操作进行严格的路径校验 禁止使用 ../ 等路径遍历序列 对上传文件类型和内容进行严格限制 对脚本执行功能增加更严格的输入验证 使用白名单机制限制可执行脚本 及时更新到已修复漏洞的最新版本 7. 总结 Public-CMS V4.0.202302.c版本存在多个高危漏洞,攻击者可组合利用这些漏洞实现远程代码执行。建议用户及时升级到修复版本,并按照上述防御建议加强系统安全配置。