IceCMS漏洞复现+分析(首发)
字数 2148 2025-08-23 18:31:34

IceCMS漏洞复现与分析教学文档

1. 环境搭建

1.1 系统概述

IceCMS是一个基于Spring Boot+Vue的前后端分离内容管理系统,存在多个安全漏洞。

1.2 搭建步骤

  1. 获取源码:https://github.com/Thecosy/iceCMS,选择2.0.1版本
  2. 后端配置:
    • 修改application.yml配置MySQL账号密码
    • 使用MySQL 8.0.12版本
    • \IceCMS-main\sql\路径下运行SQL文件
    • 通过pom.xml下载所需依赖
  3. 前端配置:
    • 进入\IceCMS-main\IceWk-vues路径
    • 安装依赖:npm install或使用淘宝源:
      npm install --legacy-peer-deps --registry=https://registry.npm.taobao.org
      
    • 启动前端:npm run dev
  4. 启动后端服务

2. 漏洞复现与分析

2.1 CVE-2023-6466 - 存储型XSS漏洞

漏洞位置http://localhost:9528/planet

漏洞描述

  • 广场功能存在未彻底修复的存储型XSS漏洞
  • 开发人员在1.0版本修复不彻底

复现步骤

  1. 插入payload:
    <object data="data:text/html,<script>alert(5)</script>"></object>
    
  2. 使用不同浏览器访问验证

影响

  • 攻击者可注入恶意脚本,影响其他用户

2.2 CVE-2023-42188 - CSRF漏洞

漏洞描述

  • 存在跨站请求伪造漏洞
  • 可导致管理员误操作

复现步骤

  1. 构造恶意HTML页面:
    <html>
    <body>
      <script>history.pushState('', '', '/')</script>
      <form action="http://localhost:9528/square/DelectSquareById/264">
        <input type="submit" value="Submit request" />
      </form>
    </body>
    </html>
    
  2. 管理员访问该页面并点击提交后,ID为264的用户被删除

影响

  • 可导致任意用户删除等敏感操作

2.3 CVE-2023-6757 - 接口未授权访问

漏洞位置/adplanet/PlanetUser

漏洞描述

  • 未授权访问敏感信息接口

复现步骤

  1. 访问/square/GetAllSquareUser接口
  2. 删除JWT token后仍可获取用户信息
  3. 验证可获取用户名、密码、邮箱等敏感信息

影响

  • 泄露大量用户敏感信息

2.4 CVE-2023-6758 - 未授权内容修改

漏洞位置/squareComment/ChangeSquareById/{user id}/{content}

复现步骤

  1. 访问/adplanet/PlanetCommentList页面
  2. 捕获/squareComment/ChangeSquareById/{user id}/{content}请求
  3. 删除JWT token后发送修改请求
  4. 验证内容是否被修改(返回1表示成功)

影响

  • 可任意修改用户评论内容

2.5 CVE-2023-6760 - 水平越权

漏洞位置http://localhost:9528/userinfo/index

复现步骤

  1. 创建两个测试账户(测试1和测试2)
  2. 使用测试2账户更新信息并抓包
  3. 使用测试1账户重复操作,替换userId为测试2的ID
  4. 修改email、性别、密码等信息
  5. 验证测试2账户信息是否被修改

影响

  • 普通用户可修改其他用户信息

2.6 CVE-2023-6761 - 垂直越权

漏洞位置http://localhost:9528/userinfo/index

复现步骤

  1. 创建普通账户(测试1)
  2. 抓取管理员请求包(已知管理员userId为3)
  3. 使用测试1账户请求,修改userId为3
  4. 更改管理员名称和密码并发送
  5. 验证管理员账号是否被修改

影响

  • 普通用户可提升权限修改管理员账户

2.7 CVE-2023-6762 - 越权删除

漏洞位置http://localhost:8181/article/DelectArticleById/{Article ID}

复现步骤

  1. 创建两篇文章(记录ID)
  2. 使用管理员账号删除文章并抓包
  3. 注销后使用普通用户账号获取token
  4. 替换管理员token为普通用户token
  5. 修改文章ID尝试删除其他文章
  6. 验证删除是否成功

影响

  • 普通用户可删除任意文章

3. 未公开漏洞

3.1 未授权用户信息获取

漏洞位置http://localhost:8181/squareComment/ChangeSquareById/{user id}/{content}

复现步骤

  1. 捕获请求包
  2. 删除JWT token后仍可获取用户信息
  3. 跨浏览器验证

3.2 未授权评论删除

漏洞位置http://localhost:8181/square/DelectSquareById/{user id}/{content}

复现步骤

  1. 删除评论并捕获数据包
  2. 发现依赖ID和JWT双重认证
  3. ID可控,可遍历删除所有评论
  4. 删除JWT认证后仍可成功删除

影响

  • 普通用户可删除网站所有评论

4. 修复建议

  1. 对所有敏感操作实施严格的权限验证
  2. 完善输入过滤,防止XSS攻击
  3. 为敏感操作添加CSRF Token防护
  4. 实施最小权限原则,避免越权
  5. 加强API接口的认证授权机制
  6. 对用户ID等敏感参数进行服务端校验

5. 总结

IceCMS存在多种类型的安全漏洞,包括XSS、CSRF、越权访问等,主要原因是缺乏严格的权限控制和输入验证。开发人员应重视安全编码实践,对所有用户输入进行严格过滤,并对所有敏感操作实施完善的权限验证机制。

IceCMS漏洞复现与分析教学文档 1. 环境搭建 1.1 系统概述 IceCMS是一个基于Spring Boot+Vue的前后端分离内容管理系统,存在多个安全漏洞。 1.2 搭建步骤 获取源码: https://github.com/Thecosy/iceCMS ,选择2.0.1版本 后端配置: 修改 application.yml 配置MySQL账号密码 使用MySQL 8.0.12版本 在 \IceCMS-main\sql\ 路径下运行SQL文件 通过 pom.xml 下载所需依赖 前端配置: 进入 \IceCMS-main\IceWk-vues 路径 安装依赖: npm install 或使用淘宝源: 启动前端: npm run dev 启动后端服务 2. 漏洞复现与分析 2.1 CVE-2023-6466 - 存储型XSS漏洞 漏洞位置 : http://localhost:9528/planet 漏洞描述 : 广场功能存在未彻底修复的存储型XSS漏洞 开发人员在1.0版本修复不彻底 复现步骤 : 插入payload: 使用不同浏览器访问验证 影响 : 攻击者可注入恶意脚本,影响其他用户 2.2 CVE-2023-42188 - CSRF漏洞 漏洞描述 : 存在跨站请求伪造漏洞 可导致管理员误操作 复现步骤 : 构造恶意HTML页面: 管理员访问该页面并点击提交后,ID为264的用户被删除 影响 : 可导致任意用户删除等敏感操作 2.3 CVE-2023-6757 - 接口未授权访问 漏洞位置 : /adplanet/PlanetUser 漏洞描述 : 未授权访问敏感信息接口 复现步骤 : 访问 /square/GetAllSquareUser 接口 删除JWT token后仍可获取用户信息 验证可获取用户名、密码、邮箱等敏感信息 影响 : 泄露大量用户敏感信息 2.4 CVE-2023-6758 - 未授权内容修改 漏洞位置 : /squareComment/ChangeSquareById/{user id}/{content} 复现步骤 : 访问 /adplanet/PlanetCommentList 页面 捕获 /squareComment/ChangeSquareById/{user id}/{content} 请求 删除JWT token后发送修改请求 验证内容是否被修改(返回1表示成功) 影响 : 可任意修改用户评论内容 2.5 CVE-2023-6760 - 水平越权 漏洞位置 : http://localhost:9528/userinfo/index 复现步骤 : 创建两个测试账户(测试1和测试2) 使用测试2账户更新信息并抓包 使用测试1账户重复操作,替换userId为测试2的ID 修改email、性别、密码等信息 验证测试2账户信息是否被修改 影响 : 普通用户可修改其他用户信息 2.6 CVE-2023-6761 - 垂直越权 漏洞位置 : http://localhost:9528/userinfo/index 复现步骤 : 创建普通账户(测试1) 抓取管理员请求包(已知管理员userId为3) 使用测试1账户请求,修改userId为3 更改管理员名称和密码并发送 验证管理员账号是否被修改 影响 : 普通用户可提升权限修改管理员账户 2.7 CVE-2023-6762 - 越权删除 漏洞位置 : http://localhost:8181/article/DelectArticleById/{Article ID} 复现步骤 : 创建两篇文章(记录ID) 使用管理员账号删除文章并抓包 注销后使用普通用户账号获取token 替换管理员token为普通用户token 修改文章ID尝试删除其他文章 验证删除是否成功 影响 : 普通用户可删除任意文章 3. 未公开漏洞 3.1 未授权用户信息获取 漏洞位置 : http://localhost:8181/squareComment/ChangeSquareById/{user id}/{content} 复现步骤 : 捕获请求包 删除JWT token后仍可获取用户信息 跨浏览器验证 3.2 未授权评论删除 漏洞位置 : http://localhost:8181/square/DelectSquareById/{user id}/{content} 复现步骤 : 删除评论并捕获数据包 发现依赖ID和JWT双重认证 ID可控,可遍历删除所有评论 删除JWT认证后仍可成功删除 影响 : 普通用户可删除网站所有评论 4. 修复建议 对所有敏感操作实施严格的权限验证 完善输入过滤,防止XSS攻击 为敏感操作添加CSRF Token防护 实施最小权限原则,避免越权 加强API接口的认证授权机制 对用户ID等敏感参数进行服务端校验 5. 总结 IceCMS存在多种类型的安全漏洞,包括XSS、CSRF、越权访问等,主要原因是缺乏严格的权限控制和输入验证。开发人员应重视安全编码实践,对所有用户输入进行严格过滤,并对所有敏感操作实施完善的权限验证机制。