以购物流程挖掘商城漏洞
字数 2432 2025-08-26 22:11:45

商城漏洞挖掘实战指南:基于购物流程的全面测试方法

前言

本指南旨在为安全研究人员提供一套系统化的商城漏洞挖掘方法,通过模拟真实用户的购物流程,全面检测电子商务平台可能存在的安全漏洞。本文适用于已完成基础安全知识学习但缺乏实战经验的研究人员。

1. 用户注册环节漏洞挖掘

1.1 短信验证码安全缺陷

测试点

  • 验证码发送频率限制缺失
  • 验证码复杂度不足(如纯数字且长度短)
  • 验证码在响应中明文返回(可能经过编码)
  • 验证码有效期过长

测试方法

  1. 使用Burp Suite拦截验证码发送请求
  2. 检查响应中是否包含验证码(注意Base64等编码)
  3. 尝试高频发送验证码(间隔<60秒)
  4. 对验证码进行暴力破解(4-6位数字)

绕过技巧

  • 修改请求参数绕过频率限制(如删除或修改timestamp)
  • 使用10分钟邮箱或临时手机号接收验证码

1.2 任意用户注册漏洞

测试场景

  1. 注册时未验证手机号/邮箱真实性
  2. 验证码可预测或重复使用
  3. 注册逻辑缺陷导致可覆盖已有用户

测试方法

  • 尝试使用不存在的手机号完成注册
  • 重复使用同一验证码注册多个账号
  • 修改注册请求中的用户ID参数

2. 登录环节漏洞挖掘

2.1 暴力破解漏洞

测试步骤

  1. 确认登录失败无锁定机制
  2. 确认无验证码或验证码可绕过
  3. 使用以下字典进行测试:
    • 常见弱口令(admin/123456等)
    • 根据目标用户特征生成定制字典

工具推荐

  • Burp Suite Intruder模块
  • hydra等暴力破解工具
  • pydictor字典生成工具

2.2 URL跳转漏洞

测试方法

  1. 查找登录请求中的redirectURL参数
  2. 修改为恶意地址如https://evil.com
  3. 测试各种编码方式的绕过:
    • 双重编码
    • 使用IP地址替代域名
    • 使用短链接服务

3. 密码重置漏洞

3.1 短信轰炸漏洞

测试点

  • 密码重置页面短信发送频率限制
  • 是否要求先输入验证码才能发送短信
  • 是否限制同一号码接收短信次数

3.2 任意密码重置漏洞

常见类型

  1. 验证码可暴力破解
  2. 修改请求参数中的用户标识
  3. 跳过验证步骤直接设置新密码
  4. 密码重置链接可预测

测试方法

  • 拦截密码重置请求,修改用户ID参数
  • 分析密码重置链接的生成规律
  • 尝试使用已过期或已使用的重置链接

4. 商品浏览与搜索功能测试

4.1 XSS漏洞挖掘

重点测试区域

  1. 商品搜索框(反射型XSS)
  2. 商品评论区域(存储型XSS)
  3. 商品详情页参数(如id、category等)

绕过技巧

  • 使用Unicode编码绕过过滤
  • 利用HTML5新特性如<svg onload=alert(1)>
  • 测试事件处理属性如onmouseoveronerror

4.2 SQL注入检测

测试方法

  1. 对所有GET/POST参数进行注入测试
  2. 重点关注:
    • 商品分类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

高风险区域

  1. 收货地址编辑
  2. 个人资料修改
  3. 头像上传(文件名处)

测试技巧

  • 比较不同入口的过滤差异(如个人资料vs订单地址)
  • 测试富文本编辑器的XSS防护
  • 尝试SVG文件上传执行XSS

5.2 CSRF漏洞

测试步骤

  1. 检查关键操作(如密码修改)是否有CSRF Token
  2. 验证Referer检查是否可绕过
  3. 测试JSON格式请求的CSRF

绕过方法

  • 使用<meta>标签设置自定义Referer
  • 将GET请求改为POST但保持参数不变
  • 利用CORS配置缺陷发起跨域请求

6. 文件上传漏洞

测试流程

  1. 识别上传功能点:头像、商品图片、附件等
  2. 分析文件类型检测机制:
    • 前端检测(可绕过)
    • MIME类型检测
    • 文件内容检测
  3. 尝试多种绕过方式:
    • 修改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 价格篡改漏洞

测试点

  1. 商品数量参数(可改为负数)
  2. 商品单价参数
  3. 总价参数
  4. 优惠券金额/折扣率参数

测试方法

  1. 拦截支付请求,修改价格相关参数
  2. 尝试分段支付时修改第二笔金额
  3. 测试优惠券重复使用

7.2 业务逻辑漏洞

常见类型

  1. 库存数量不同步(超卖)
  2. 支付状态验证不严(未支付完成发货)
  3. 订单取消后仍发货

测试方法

  • 高并发下测试库存扣减
  • 支付成功后修改返回参数模拟支付失败
  • 测试支付回调验证机制

8. 其他漏洞挖掘方向

8.1 越权访问

  • 水平越权:访问他人订单/个人信息
  • 垂直越权:普通用户执行管理员操作

8.2 API接口安全

  • 未授权API访问
  • 接口参数注入
  • 敏感信息泄露

工具与资源推荐

  1. 测试工具

    • Burp Suite Professional
    • OWASP ZAP
    • sqlmap
    • XSStrike
  2. 学习资源

    • OWASP Testing Guide
    • Web安全攻防:渗透测试实战指南
    • 漏洞银行、补天、先知等漏洞平台案例
  3. 实战平台

    • DVWA
    • WebGoat
    • 各种CTF比赛题目

注意事项

  1. 测试前务必获得授权,避免法律风险
  2. 使用测试账号进行操作,避免影响真实用户
  3. 发现漏洞后及时报告,遵循负责任的披露流程
  4. 注意测试强度,避免对生产环境造成影响

通过系统性地按照购物流程进行测试,研究人员可以全面覆盖商城的各个功能模块,大大提高漏洞发现的概率和效率。

商城漏洞挖掘实战指南:基于购物流程的全面测试方法 前言 本指南旨在为安全研究人员提供一套系统化的商城漏洞挖掘方法,通过模拟真实用户的购物流程,全面检测电子商务平台可能存在的安全漏洞。本文适用于已完成基础安全知识学习但缺乏实战经验的研究人员。 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比赛题目 注意事项 测试前务必获得授权,避免法律风险 使用测试账号进行操作,避免影响真实用户 发现漏洞后及时报告,遵循负责任的披露流程 注意测试强度,避免对生产环境造成影响 通过系统性地按照购物流程进行测试,研究人员可以全面覆盖商城的各个功能模块,大大提高漏洞发现的概率和效率。