支付原理
商家收到支付结果的两种方式
- 通过浏览器进行跳转:用户在未跳转到支付结果页面关闭,商户无法收到支付结果,且浏览器的数据很容易被篡改。
- 服务器端的异步通知:支付公司后台服务器向用户制定的异步通知URL发送参数。商户对支付结果惊醒签名认证,验证正常后则对订单进行处理。
常见支付漏洞
支付漏洞:支付漏洞属于逻辑漏洞,。
支付步骤:
- 订购
- 生成订单
- 付款
修改支付的价格:
三步中任意一步都可以进行修改测试,可以尝试修改为小金额或者负数。
eg:
修改支付状态:
利用订单的编号来判断订单的完成情况,付款时把未完成的订单号变成已完成的。
修改订单数量:
将数量由1变成0或者负数,即可白嫖。
修改附属值:
优惠券:可以修改优惠券的金额过限制的使用个数和条件。
越权支付:
利用类似id的参数来控制扣钱的账户,进行越权,用别人的钱买自己的东西。
无限制使用:
不需要过多的身份验证即可完成支付。
支付漏洞如何挖掘
- 找到关键数据包(一次支付可能出现多个数据包)
- 分析数据包(数据包中会有很多参数,挨个分析)
- 发散思维,找开发没有想到的地方
- 多端尝试(pc,wap,app)
防御
- 后端检查每一项值,包括支付状态。
- 检验价格,数量参数,比如限制数量只为正整数,并限制购买数量。
- 与第三方支付平台检查,实际支付金额与订单是否一致。
- 支付参数进行加密,解密,数字签名及验证。避免数据修改和重放攻击。
- 金额超过阈值进行人工审核。
靶场作业
由于敏感信息所以请邮件联系或者关注公众号