支付类漏洞挖掘技巧总结
字数 1183 2025-08-18 17:33:30
支付类漏洞挖掘技巧总结
前言
支付类逻辑漏洞是漏洞挖掘中常见且奖励较高的一类漏洞。本文总结了支付逻辑漏洞的成因及多种挖掘技巧,帮助安全研究人员更有效地发现此类漏洞。
支付逻辑漏洞成因
- 前端验证不充分:前端页面缺乏足够的验证和限制,允许用户修改页面元素或发送自定义请求篡改支付参数。
- 客户端数据不可信:客户端传输数据时未进行完整性验证和加密,导致支付参数可被篡改。
- 服务器端验证不严格:支付请求到达服务器时未进行充分验证,允许攻击者绕过验证机制。
- 不安全的存储和传输:支付金额数据在存储或传输过程中未加密,易被窃取或篡改。
支付逻辑漏洞挖掘技巧
一、更改支付金额
在支付流程的各个环节(订购、确认信息、付款等)尝试修改价格参数:
- 直接修改提交订单中的价格字段
- 尝试修改为0.01、1.00、1等值
二、更改支付状态
- 直接修改为已支付状态:找到决定支付状态的参数并修改
- 修改未支付的订单号为已支付订单号:抓取已支付订单数据包,替换订单号
三、修改支付类型
- 查找支付方式判断参数(如type)
- 尝试fuzz特殊值(如0)可能实现无需支付
- 测试开发人员遗留的测试值
四、更改订单信息
- 修改商品编号:在生成订单中替换商品编号
- 修改订单号:
- 生成两个订单(高价和低价)
- 支付低价订单,返回时替换为高价订单号
- 越权使用他人优惠券/积分
五、更改数量实现优惠支付
- 修改数量为极小值:如0.01,可能实现低价购买
- 修改数量为负数:
- 注意后端可能校验最小金额
- 可能需要同时调整金额参数
- 负数抵消实现0元购:
- 同时购买两件商品
- 将低价商品数量设为-1,抵消高价商品
- 手动增加商品参数:
- 在提交订单数据包中添加多套商品参数
- 可能实现"少付多买"
六、重复支付,突破限购
- 并发订单:同时提交多个优惠订单
- 多设备/多支付方式:
- 使用不同设备或浏览器
- 同时使用微信、支付宝等不同支付方式
- 适用于会员首月优惠等情况
- 退款处并发:同一订单发起多次退款
七、优惠券多次使用
- 订单中叠加使用优惠券:手工添加多张优惠券参数
- 修改优惠券标识:尝试使用其他商品的大额优惠券
- 直接修改优惠券面值:改变优惠金额计算
八、遍历隐藏或下架优惠
- 遍历隐藏优惠券:查找开发测试用的大额优惠券或已过期优惠券
- 遍历商品ID:发现已下架但仍有购买逻辑的商品
九、利用小数点精度四舍五入
- 利用系统与第三方支付的小数处理差异
- 例如:充值0.019元
- 第三方支付截取到分(0.01元)
- 系统四舍五入为0.02元
注意事项
- 测试时应关注后端实际校验逻辑
- 某些操作可能需要同时修改多个参数
- 实际效果可能因系统实现而异
- 测试时应注意法律和道德边界
防御建议
- 前后端实施严格的参数验证
- 关键业务逻辑应在服务端完成
- 支付流程应使用不可篡改的签名机制
- 对异常交易进行监控和审计
- 定期进行安全测试和代码审计