一、快捷支付原理
商户网站接入支付结果有两种方式,一种是通过浏览器进行跳转通知,一种是服务器端异步通知
浏览器跳转:
基于用户访问的浏览器,如果用户在银行页面支付成功后,直接关闭了页面,并未等待银行跳转到支付结果页面,那么商户网站就收不到支付结果的通知,导致支付结果难以处理。而且浏览器端数据很容易被篡改而降低安全性。
简单地说,就是用户浏览器跳转到银行页面,付款成功,银行会发送一个返回包,使得浏览器重新跳转回商户页面,依赖于浏览器跳转。如果支付成功,关闭了银行页面,商户就接收不到支付结果,导致支付结果难以处理,而且,浏览器端的数据容易被抓包篡改。
浏览器跳转现在已经非常少见了。
服务器端异步通知:
该方式是支付公司服务器后台,直接向用户指定的异步通知URL发送参数,采用POST或GET方式。商户网站接收异部参数的URL对应的程序中,要对支付公司返回的支付结果进行签名验证,成功后进行支付逻辑处理,如验证金额、订单信息是否与发起支付时一致,验证正常则对订单进行状态处理或为用户进行网站内入账等。
例如,我们通过支付宝付款,支付宝接收到了付款,支付宝直接发送数据给网站,该用户已经付款,于是网站接收到了支付宝的信息。
大型网站一般使用服务器端异步通知。
二、常见支付漏洞
相对于其他漏洞来说,支付漏洞应该是大家最喜闻乐见的了,比如一分钱购买手机(但是大家渗透测试要有分寸)
支付漏洞属于逻辑漏洞,并不需要代码审计,挖掘这类漏洞有发散思维,往往有事半功倍的效果,简单来说就是不按常理出牌。
1、修改支付的价格
支付三步曲——订购、订单、付款
在三个步骤当中,对任意一个步骤进行修改价格测试,如果前两步有验证机制,那么可以在最后一步付款时进行抓包尝试修改金额,如果没有在最后一步做好检验,那么问题就会存在,其修改的金额可以尝试小数目或者负数。
渗透测试的时候,金额不要过千,