代码审计 | 柚子云购系统漏洞分析
字数 1622 2025-08-29 22:41:38
柚子云购系统漏洞分析教学文档
一、系统概述
柚子云购系统是一个基于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工具进行自动化测试:
sqlmap -u "http://target/page?orderBy=..." --risk=3 --level=5
(2) 文件上传漏洞
漏洞位置:用户头像上传功能
审计过程:
- 发现个人中心的头像上传功能
- 抓包分析上传路径为
/user/uploadUserHeadImage - 全局搜索该路径对应的代码
- 发现代码未对上传文件类型进行任何限制
风险:
- 可上传任意类型文件(包括.jsp、.php等可执行文件)
- 可能导致webshell上传,获取服务器控制权
(3) XSS漏洞
漏洞位置:全局存在
审计过程:
- 检查系统是否配置XSS过滤
- 发现未实现任何XSS防护措施
验证方法:
- 在任意输入点提交XSS测试payload:
<script>alert(1)</script> - 观察是否弹窗
(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头 - 设置
SameSiteCookie属性 - 对敏感操作使用二次验证
四、渗透测试方法论
- 信息收集:了解系统架构、技术栈
- 组件审计:检查依赖组件版本漏洞
- 功能点测试:逐项测试系统功能
- 代码审计:结合黑盒与白盒测试
- 漏洞验证:使用工具+手工验证
- 报告编写:详细记录漏洞细节和复现步骤
五、工具推荐
- SQL注入:sqlmap、Burp Suite
- 文件上传:Burp Suite、Webshell管理工具
- XSS测试:XSS Hunter、BeEF
- CSRF测试:Burp Suite的CSRF PoC生成器
- 代码审计:Find Security Bugs、SonarQube
六、总结
柚子云购系统存在多处高危漏洞,反映了开发过程中安全意识的缺失。这些漏洞组合利用可导致完全控制系统的严重后果。开发人员应遵循安全开发生命周期(SDLC),在设计和编码阶段就考虑安全防护措施。