JAVA代审starsea-mall
字数 1591 2025-08-29 08:30:13

StarSea-Mall 代码审计报告

环境搭建

  1. 项目获取

    • 项目地址:https://github.com/StarSea99/starsea-mall
    • 下载到本地后使用IDEA打开,等待Maven依赖加载完成
  2. 配置修改

    • 修改配置文件:src/main/resources/application.properties
    • 创建对应数据库并导入SQL文件
  3. 启动项目

    • 后台管理地址:http://127.0.0.1:8080/admin/login
    • 默认管理员账号:admin/admin

代码审计

1. 拦截器分析

项目中有三个主要拦截器:

  1. AdminLoginInterceptor

    • 校验后台权限
    • 检查访问地址是否以/admin开头
    • 从session中获取loginUser,不存在则判定未登录
    • 无绕过方法
  2. MallCartNumberInterceptor

    • 更新购物车商品数量
    • 从session获取用户信息,查询数据库获取购物车信息
    • 修改购物车商品数量后保存
  3. MallLoginInterceptor

    • 判断前台用户是否登录

2. 漏洞分析

2.1 任意会员登录

漏洞位置:用户信息修改功能

复现步骤

  1. 在修改个人信息时抓包
  2. 发现请求中包含userid参数
  3. 修改userid为其他用户的ID

代码分析

  • 通过userid查询用户信息
  • 仅检查用户是否存在,未验证当前用户是否有权修改该ID的信息
  • 直接更新传入的信息
  • 从数据库查询更新后的用户信息并返回

影响:可实现任意用户登录(水平越权)

2.2 支付逻辑漏洞(0元购)

漏洞位置:订单支付功能

复现步骤

  1. 正常下单并支付,抓取支付成功的数据包
  2. 分析发现支付逻辑修改订单的PayType为传入的值
  3. 新建订单,修改数据包中的订单号为未支付的订单号

影响:可实现0元购,任意修改订单支付状态

2.3 购物车商品数量负数

漏洞位置:购物车商品数量修改

复现步骤

  1. 修改购物车中商品数量为负数
  2. 提交请求

代码分析

  • 仅检查单个商品的最大数量限制
  • 未验证数量是否为正整数

影响:可能导致金额计算异常或系统逻辑错误

2.4 任意文件上传

漏洞位置:后台文件上传功能

代码分析

  • 获取文件后缀名
  • 未对文件后缀进行有效过滤
  • 直接拼接后缀到文件名中

影响

  • 可上传HTML文件执行XSS攻击
  • 若无解析环境限制,可能上传webshell

2.5 多处XSS漏洞

漏洞描述

  • 项目中多处用户输入未进行有效过滤
  • 特别是在保存信息等功能点存在存储型XSS风险

2.6 CSRF漏洞

漏洞描述

  • 项目中未使用CSRF防护组件
  • 未发现自定义的CSRF防护代码
  • 测试可生成有效的CSRF PoC

复现步骤

  1. 在修改用户名功能点抓包
  2. 生成CSRF PoC
  3. 诱使管理员点击

修复建议

  1. 权限控制

    • 在用户信息修改处增加权限验证,确保用户只能修改自己的信息
    • 使用Spring Security等安全框架
  2. 支付逻辑

    • 支付完成后应验证支付金额与订单金额是否匹配
    • 支付状态修改应增加签名验证
  3. 输入验证

    • 购物车数量应验证为正整数
    • 所有用户输入应进行严格过滤
  4. 文件上传

    • 限制可上传的文件类型
    • 使用白名单机制验证文件后缀
    • 存储时重命名文件
  5. CSRF防护

    • 添加CSRF Token机制
    • 或使用Spring Security的CSRF防护
  6. XSS防护

    • 对所有输出进行HTML编码
    • 使用CSP策略限制脚本执行

总结

StarSea-Mall商城系统存在多处安全漏洞,包括但不限于:

  • 权限绕过(任意用户登录)
  • 支付逻辑缺陷(0元购)
  • 业务逻辑漏洞(负数商品)
  • 文件上传漏洞
  • 多处XSS漏洞
  • CSRF漏洞

建议开发者按照修复建议进行全面安全加固,特别是在涉及用户权限和支付逻辑的关键功能点。

StarSea-Mall 代码审计报告 环境搭建 项目获取 : 项目地址:https://github.com/StarSea99/starsea-mall 下载到本地后使用IDEA打开,等待Maven依赖加载完成 配置修改 : 修改配置文件: src/main/resources/application.properties 创建对应数据库并导入SQL文件 启动项目 : 后台管理地址:http://127.0.0.1:8080/admin/login 默认管理员账号:admin/admin 代码审计 1. 拦截器分析 项目中有三个主要拦截器: AdminLoginInterceptor : 校验后台权限 检查访问地址是否以 /admin 开头 从session中获取 loginUser ,不存在则判定未登录 无绕过方法 MallCartNumberInterceptor : 更新购物车商品数量 从session获取用户信息,查询数据库获取购物车信息 修改购物车商品数量后保存 MallLoginInterceptor : 判断前台用户是否登录 2. 漏洞分析 2.1 任意会员登录 漏洞位置 :用户信息修改功能 复现步骤 : 在修改个人信息时抓包 发现请求中包含 userid 参数 修改 userid 为其他用户的ID 代码分析 : 通过 userid 查询用户信息 仅检查用户是否存在,未验证当前用户是否有权修改该ID的信息 直接更新传入的信息 从数据库查询更新后的用户信息并返回 影响 :可实现任意用户登录(水平越权) 2.2 支付逻辑漏洞(0元购) 漏洞位置 :订单支付功能 复现步骤 : 正常下单并支付,抓取支付成功的数据包 分析发现支付逻辑修改订单的 PayType 为传入的值 新建订单,修改数据包中的订单号为未支付的订单号 影响 :可实现0元购,任意修改订单支付状态 2.3 购物车商品数量负数 漏洞位置 :购物车商品数量修改 复现步骤 : 修改购物车中商品数量为负数 提交请求 代码分析 : 仅检查单个商品的最大数量限制 未验证数量是否为正整数 影响 :可能导致金额计算异常或系统逻辑错误 2.4 任意文件上传 漏洞位置 :后台文件上传功能 代码分析 : 获取文件后缀名 未对文件后缀进行有效过滤 直接拼接后缀到文件名中 影响 : 可上传HTML文件执行XSS攻击 若无解析环境限制,可能上传webshell 2.5 多处XSS漏洞 漏洞描述 : 项目中多处用户输入未进行有效过滤 特别是在保存信息等功能点存在存储型XSS风险 2.6 CSRF漏洞 漏洞描述 : 项目中未使用CSRF防护组件 未发现自定义的CSRF防护代码 测试可生成有效的CSRF PoC 复现步骤 : 在修改用户名功能点抓包 生成CSRF PoC 诱使管理员点击 修复建议 权限控制 : 在用户信息修改处增加权限验证,确保用户只能修改自己的信息 使用Spring Security等安全框架 支付逻辑 : 支付完成后应验证支付金额与订单金额是否匹配 支付状态修改应增加签名验证 输入验证 : 购物车数量应验证为正整数 所有用户输入应进行严格过滤 文件上传 : 限制可上传的文件类型 使用白名单机制验证文件后缀 存储时重命名文件 CSRF防护 : 添加CSRF Token机制 或使用Spring Security的CSRF防护 XSS防护 : 对所有输出进行HTML编码 使用CSP策略限制脚本执行 总结 StarSea-Mall商城系统存在多处安全漏洞,包括但不限于: 权限绕过(任意用户登录) 支付逻辑缺陷(0元购) 业务逻辑漏洞(负数商品) 文件上传漏洞 多处XSS漏洞 CSRF漏洞 建议开发者按照修复建议进行全面安全加固,特别是在涉及用户权限和支付逻辑的关键功能点。