本文内容:
~快捷支付原理
~常见支付漏洞
~支付漏洞如何挖掘
~防御方法
每日一句:
想到就去做,多试总没坏处
注意尺度,且行且珍惜
一、快捷支付原理
1,原理
~浏览器跳转
简单说,你付钱了,浏览器通知服务器,服务器更新你的金额
//基本依托前端跳转,不可靠,现在应该极其少见
~服务器端异步通知
简单说,你付钱,发一个通知给服务器,
同时,你支付的平台也会向服务器发送一个通知。
服务器对比一下你的通知与支付平台通知,
一致则更新你的金额。不一致,一般都会等待客服处理
//相对安全
2,补充
~支付漏洞并不需要代码审计,其实更适合新手
~支付漏洞属于逻辑漏洞,挖掘这类漏洞要有发散(奇葩)思维
简单说,不按常理出牌,效果往往事半功倍
3,注意:支付漏洞具有极高的法律危险,渗透测试要极为注意分寸
建议:几元钱,几毛钱差额的测试
二、常见支付漏洞
1,直接修改订单金额
在订购、订单、付款的任意一步,抓包,修改金额。
一般推荐在最后一步修改,因为每一步都可能有验证机制,少一事更好。
至于金额数,可以是小数目或者尝试负数
2,画棒棒糖的钱买电脑
预购电脑,最后一步(付款前),抓包,查看到有一个xxid=100
//假设xxid=100是电脑的id,即这个100就代表电脑
预购糖,最后一步(付款前),抓包,查看糖的xxid=20
返回第一个数据包,将xxid=100改为20
点击付款,金额发生变化
3,修改买的数量,0元买东西
假设:键盘100,鼠标50
购买订单,抓包,修改数量:键盘×1,鼠标×-2,
结算,0元
4,修改附属值(比如优惠劵、积分等等)
~直接修改优惠劵的金额
~修改优惠劵数量
注意:商家搞活动的时候,最容易出问题
5,越权漏洞(用别人的钱买自己的东西)
抓包,看到有代表身份类得传参,如userid=xx等等,
尝试改为别人的userid,试试能不能让别人给我们买帐
6,无限制试用
比如使用的参数为2,正常购买的参数为1
我们不断的传参数2会发生什么呢
7,总结:抓包,看到有数字类得东西就去改一改,说不定有奇效
三、支付漏洞如何挖掘
1,找到关键的数据包
可能一个支付操作有三四个数据包,我们要对数据包进行挑选。
//最差也最有效的就是排除法
2,分析数据包
支付数据包中会包含很多的敏感信息(账号,金额,余额,优惠),
要尝试对数据包中的各个参数进行分析。
3,不按套路出牌
多去想想开发者没有想到的地方
4,pc端尝试过,wap端也看看,app也试试。
//app如何抓包,建议百度或谷歌。回答应该很详细
四、防御方法
1,参数进行MD5加密、解密、数字签名及其验证,可以有效避免数据修改,
及重放攻击中的各种问题
补充:重放攻击,即将付款成功的数据包,不断重新发送
2,不要相信用户传来的信息(一切参数都可以被修改)
3,服务端,校验价格、数量参数
//比如产品数量仅能为正整数,限制购买产品数量等等
4,与支付平台传来数据进行对比
5,超过一定金额(阈值)时,进行人工审核