代码审计 | 柚子云购系统漏洞分析
字数 1622 2025-08-29 22:41:38

柚子云购系统漏洞分析教学文档

一、系统概述

柚子云购系统是一个基于Springboot框架搭建的电子商务平台脚手架,具有以下特点:

  • 静态资源存储支持OSS(如七牛云对象存储)或本地文件服务器
  • 支付渠道支持微信和支付宝支付
  • 后台访问地址:http://127.0.0.1:8010/mall

二、漏洞审计方法

1. 组件漏洞审计

  • 检查pom.xml文件中的依赖组件版本
  • 本系统未发现使用低版本存在漏洞的组件

2. 单点漏洞审计

(1) SQL注入漏洞

漏洞位置orderBy参数

审计过程

  1. 搜索代码中的$符号查找可能存在SQL注入的参数
  2. 发现orderBy参数可能存在SQL注入漏洞
  3. 跟踪调用链:
    • selectMoreList方法使用orderBy参数
    • orderBy参数与isDesc参数共同构成orderBtil变量
    • 这些参数用于分页查询(index表示页数,count表示数量)

验证方法

  1. 使用Burp Suite等工具抓取包含分页功能的请求包
  2. 使用sqlmap工具进行自动化测试:
    sqlmap -u "http://target/page?orderBy=..." --risk=3 --level=5
    

(2) 文件上传漏洞

漏洞位置:用户头像上传功能

审计过程

  1. 发现个人中心的头像上传功能
  2. 抓包分析上传路径为/user/uploadUserHeadImage
  3. 全局搜索该路径对应的代码
  4. 发现代码未对上传文件类型进行任何限制

风险

  • 可上传任意类型文件(包括.jsp、.php等可执行文件)
  • 可能导致webshell上传,获取服务器控制权

(3) XSS漏洞

漏洞位置:全局存在

审计过程

  1. 检查系统是否配置XSS过滤
  2. 发现未实现任何XSS防护措施

验证方法

  1. 在任意输入点提交XSS测试payload:
    <script>alert(1)</script>
    
  2. 观察是否弹窗

(4) CSRF漏洞

漏洞位置:全局AJAX请求

审计过程

  1. 检查系统请求方式,发现主要使用前端AJAX请求
  2. 验证是否依赖Cookie但不验证请求来源
  3. 测试步骤:
    • 使用测试账号zxc123提交更新身份信息的请求
    • 生成CSRF PoC
    • 使用管理员账号admin访问该PoC
    • 观察管理员密码是否被修改(从admin1234改为admin12

风险

  • 攻击者可诱骗管理员访问恶意页面,执行任意操作
  • 可能导致权限提升、数据泄露等严重后果

三、修复建议

1. SQL注入修复

  • 使用预编译语句(PreparedStatement)
  • orderBy等参数进行白名单过滤
  • 使用ORM框架的安全查询方法

2. 文件上传漏洞修复

  • 限制上传文件类型(白名单方式)
  • 对上传文件重命名(避免执行)
  • 设置上传目录不可执行
  • 对图片文件进行二次渲染

3. XSS漏洞修复

  • 实现全局XSS过滤器
  • 对输出进行HTML实体编码
  • 设置HTTP头X-XSS-Protection
  • 使用CSP(内容安全策略)

4. CSRF漏洞修复

  • 添加CSRF Token机制
  • 检查Referer
  • 设置SameSite Cookie属性
  • 对敏感操作使用二次验证

四、渗透测试方法论

  1. 信息收集:了解系统架构、技术栈
  2. 组件审计:检查依赖组件版本漏洞
  3. 功能点测试:逐项测试系统功能
  4. 代码审计:结合黑盒与白盒测试
  5. 漏洞验证:使用工具+手工验证
  6. 报告编写:详细记录漏洞细节和复现步骤

五、工具推荐

  1. SQL注入:sqlmap、Burp Suite
  2. 文件上传:Burp Suite、Webshell管理工具
  3. XSS测试:XSS Hunter、BeEF
  4. CSRF测试:Burp Suite的CSRF PoC生成器
  5. 代码审计:Find Security Bugs、SonarQube

六、总结

柚子云购系统存在多处高危漏洞,反映了开发过程中安全意识的缺失。这些漏洞组合利用可导致完全控制系统的严重后果。开发人员应遵循安全开发生命周期(SDLC),在设计和编码阶段就考虑安全防护措施。

柚子云购系统漏洞分析教学文档 一、系统概述 柚子云购系统是一个基于Springboot框架搭建的电子商务平台脚手架,具有以下特点: 静态资源存储支持OSS(如七牛云对象存储)或本地文件服务器 支付渠道支持微信和支付宝支付 后台访问地址:http://127.0.0.1:8010/mall 二、漏洞审计方法 1. 组件漏洞审计 检查 pom.xml 文件中的依赖组件版本 本系统未发现使用低版本存在漏洞的组件 2. 单点漏洞审计 (1) SQL注入漏洞 漏洞位置 : orderBy 参数 审计过程 : 搜索代码中的 $ 符号查找可能存在SQL注入的参数 发现 orderBy 参数可能存在SQL注入漏洞 跟踪调用链: selectMoreList 方法使用 orderBy 参数 orderBy 参数与 isDesc 参数共同构成 orderBtil 变量 这些参数用于分页查询( index 表示页数, count 表示数量) 验证方法 : 使用Burp Suite等工具抓取包含分页功能的请求包 使用sqlmap工具进行自动化测试: (2) 文件上传漏洞 漏洞位置 :用户头像上传功能 审计过程 : 发现个人中心的头像上传功能 抓包分析上传路径为 /user/uploadUserHeadImage 全局搜索该路径对应的代码 发现代码未对上传文件类型进行任何限制 风险 : 可上传任意类型文件(包括.jsp、.php等可执行文件) 可能导致webshell上传,获取服务器控制权 (3) XSS漏洞 漏洞位置 :全局存在 审计过程 : 检查系统是否配置XSS过滤 发现未实现任何XSS防护措施 验证方法 : 在任意输入点提交XSS测试payload: 观察是否弹窗 (4) CSRF漏洞 漏洞位置 :全局AJAX请求 审计过程 : 检查系统请求方式,发现主要使用前端AJAX请求 验证是否依赖Cookie但不验证请求来源 测试步骤: 使用测试账号 zxc123 提交更新身份信息的请求 生成CSRF PoC 使用管理员账号 admin 访问该PoC 观察管理员密码是否被修改(从 admin1234 改为 admin12 ) 风险 : 攻击者可诱骗管理员访问恶意页面,执行任意操作 可能导致权限提升、数据泄露等严重后果 三、修复建议 1. SQL注入修复 使用预编译语句(PreparedStatement) 对 orderBy 等参数进行白名单过滤 使用ORM框架的安全查询方法 2. 文件上传漏洞修复 限制上传文件类型(白名单方式) 对上传文件重命名(避免执行) 设置上传目录不可执行 对图片文件进行二次渲染 3. XSS漏洞修复 实现全局XSS过滤器 对输出进行HTML实体编码 设置HTTP头 X-XSS-Protection 使用CSP(内容安全策略) 4. CSRF漏洞修复 添加CSRF Token机制 检查 Referer 头 设置 SameSite Cookie属性 对敏感操作使用二次验证 四、渗透测试方法论 信息收集 :了解系统架构、技术栈 组件审计 :检查依赖组件版本漏洞 功能点测试 :逐项测试系统功能 代码审计 :结合黑盒与白盒测试 漏洞验证 :使用工具+手工验证 报告编写 :详细记录漏洞细节和复现步骤 五、工具推荐 SQL注入 :sqlmap、Burp Suite 文件上传 :Burp Suite、Webshell管理工具 XSS测试 :XSS Hunter、BeEF CSRF测试 :Burp Suite的CSRF PoC生成器 代码审计 :Find Security Bugs、SonarQube 六、总结 柚子云购系统存在多处高危漏洞,反映了开发过程中安全意识的缺失。这些漏洞组合利用可导致完全控制系统的严重后果。开发人员应遵循安全开发生命周期(SDLC),在设计和编码阶段就考虑安全防护措施。