以购物流程挖掘商城漏洞
字数 2432 2025-08-26 22:11:45
商城漏洞挖掘实战指南:基于购物流程的全面测试方法
前言
本指南旨在为安全研究人员提供一套系统化的商城漏洞挖掘方法,通过模拟真实用户的购物流程,全面检测电子商务平台可能存在的安全漏洞。本文适用于已完成基础安全知识学习但缺乏实战经验的研究人员。
1. 用户注册环节漏洞挖掘
1.1 短信验证码安全缺陷
测试点:
- 验证码发送频率限制缺失
- 验证码复杂度不足(如纯数字且长度短)
- 验证码在响应中明文返回(可能经过编码)
- 验证码有效期过长
测试方法:
- 使用Burp Suite拦截验证码发送请求
- 检查响应中是否包含验证码(注意Base64等编码)
- 尝试高频发送验证码(间隔<60秒)
- 对验证码进行暴力破解(4-6位数字)
绕过技巧:
- 修改请求参数绕过频率限制(如删除或修改timestamp)
- 使用10分钟邮箱或临时手机号接收验证码
1.2 任意用户注册漏洞
测试场景:
- 注册时未验证手机号/邮箱真实性
- 验证码可预测或重复使用
- 注册逻辑缺陷导致可覆盖已有用户
测试方法:
- 尝试使用不存在的手机号完成注册
- 重复使用同一验证码注册多个账号
- 修改注册请求中的用户ID参数
2. 登录环节漏洞挖掘
2.1 暴力破解漏洞
测试步骤:
- 确认登录失败无锁定机制
- 确认无验证码或验证码可绕过
- 使用以下字典进行测试:
- 常见弱口令(admin/123456等)
- 根据目标用户特征生成定制字典
工具推荐:
- Burp Suite Intruder模块
- hydra等暴力破解工具
- pydictor字典生成工具
2.2 URL跳转漏洞
测试方法:
- 查找登录请求中的redirectURL参数
- 修改为恶意地址如
https://evil.com - 测试各种编码方式的绕过:
- 双重编码
- 使用IP地址替代域名
- 使用短链接服务
3. 密码重置漏洞
3.1 短信轰炸漏洞
测试点:
- 密码重置页面短信发送频率限制
- 是否要求先输入验证码才能发送短信
- 是否限制同一号码接收短信次数
3.2 任意密码重置漏洞
常见类型:
- 验证码可暴力破解
- 修改请求参数中的用户标识
- 跳过验证步骤直接设置新密码
- 密码重置链接可预测
测试方法:
- 拦截密码重置请求,修改用户ID参数
- 分析密码重置链接的生成规律
- 尝试使用已过期或已使用的重置链接
4. 商品浏览与搜索功能测试
4.1 XSS漏洞挖掘
重点测试区域:
- 商品搜索框(反射型XSS)
- 商品评论区域(存储型XSS)
- 商品详情页参数(如id、category等)
绕过技巧:
- 使用Unicode编码绕过过滤
- 利用HTML5新特性如
<svg onload=alert(1)> - 测试事件处理属性如
onmouseover、onerror
4.2 SQL注入检测
测试方法:
- 对所有GET/POST参数进行注入测试
- 重点关注:
- 商品分类ID
- 搜索关键词
- 分页参数
- 排序参数
测试Payload:
- 布尔型:
1' AND 1=1--/1' AND 1=2-- - 时间型:
1'; WAITFOR DELAY '0:0:5'-- - 报错型:
1' AND GTID_SUBSET(CONCAT(0x7e,(SELECT USER()),0x7e),0)--
5. 用户个人中心测试
5.1 存储型XSS
高风险区域:
- 收货地址编辑
- 个人资料修改
- 头像上传(文件名处)
测试技巧:
- 比较不同入口的过滤差异(如个人资料vs订单地址)
- 测试富文本编辑器的XSS防护
- 尝试SVG文件上传执行XSS
5.2 CSRF漏洞
测试步骤:
- 检查关键操作(如密码修改)是否有CSRF Token
- 验证Referer检查是否可绕过
- 测试JSON格式请求的CSRF
绕过方法:
- 使用
<meta>标签设置自定义Referer - 将GET请求改为POST但保持参数不变
- 利用CORS配置缺陷发起跨域请求
6. 文件上传漏洞
测试流程:
- 识别上传功能点:头像、商品图片、附件等
- 分析文件类型检测机制:
- 前端检测(可绕过)
- MIME类型检测
- 文件内容检测
- 尝试多种绕过方式:
- 修改Content-Type
- 添加文件头如GIF89a
- 使用双扩展名(如test.php.jpg)
中间件解析漏洞:
- IIS 6.0目录解析(/test.asp/test.jpg)
- Nginx文件名解析漏洞(test.jpg%00.php)
- Apache多扩展名解析(test.php.xxx)
7. 订单支付流程测试
7.1 价格篡改漏洞
测试点:
- 商品数量参数(可改为负数)
- 商品单价参数
- 总价参数
- 优惠券金额/折扣率参数
测试方法:
- 拦截支付请求,修改价格相关参数
- 尝试分段支付时修改第二笔金额
- 测试优惠券重复使用
7.2 业务逻辑漏洞
常见类型:
- 库存数量不同步(超卖)
- 支付状态验证不严(未支付完成发货)
- 订单取消后仍发货
测试方法:
- 高并发下测试库存扣减
- 支付成功后修改返回参数模拟支付失败
- 测试支付回调验证机制
8. 其他漏洞挖掘方向
8.1 越权访问
- 水平越权:访问他人订单/个人信息
- 垂直越权:普通用户执行管理员操作
8.2 API接口安全
- 未授权API访问
- 接口参数注入
- 敏感信息泄露
工具与资源推荐
-
测试工具:
- Burp Suite Professional
- OWASP ZAP
- sqlmap
- XSStrike
-
学习资源:
- OWASP Testing Guide
- Web安全攻防:渗透测试实战指南
- 漏洞银行、补天、先知等漏洞平台案例
-
实战平台:
- DVWA
- WebGoat
- 各种CTF比赛题目
注意事项
- 测试前务必获得授权,避免法律风险
- 使用测试账号进行操作,避免影响真实用户
- 发现漏洞后及时报告,遵循负责任的披露流程
- 注意测试强度,避免对生产环境造成影响
通过系统性地按照购物流程进行测试,研究人员可以全面覆盖商城的各个功能模块,大大提高漏洞发现的概率和效率。