0x1. 低价值替换高价值SKU

在IOS平台上面支付完成之后,立刻杀掉进程,然后重新开启APP抓包,此时触发补单操作,拦截包之后,修改sku字段为高价值商品,尝试是否可以成功。

或者在Burp抓支付包的时候,因为apple服务接口验证了证书,可以在burp的TLS Pass Through配置绕过apple的域名,不对其进行抓包。

0x2. 替换订单号

首先产生一个未支付的高价值的订单号,其次正常购买低价值商品,打断后端返回的response,替换response里面的订单号为高价值订单号,然后尝试支付成功之后商品的数量。一般适用于Google支付。

0x3. 利用Google机制自动退款

Google的SDK支付成功之后,客户端会发起一个接口请求: https://play-fe.googleapis.com/fdfe/consumePurchase

Google Play结算服务官方文档中关于处理购买交易的描述:在三天内未确认购买交易,则用户会自动收到退款,并且Google Play会撤消该购买交易,可以利用此规则进行退款。这种攻击一般针对一次性消耗品,当然重复的也可以。在支付完成之后,拦截上面的请求之后丢弃,如果服务端未做正确处理,则三天之后Google会自动退款。

修复方式:后端手动调用确认接口进行二次确认acknowledge,一般400可以视为已确认,409的时候需要查询一次状态,已确认状态可以放行,否则掉单处理。

测试注意点

  • 某些版本的Burp抓不到Google的消费请求,或者是Burp显示DF-DFERH-01错误,这时候多更换burp版本试试,比如社区版
  • 熟练利用Burp的TLS Pass ThroughIntercept Client Requests功能抓包。
⬆︎TOP