支付原理
支付漏洞原理
支付漏洞绕过思路
支付原理
在业务安全方面,支付原理主要涉及到支付过程中的身份验证就、风险控制和交易保障等方面。具体来说,支付机构通常会采用多种手段来确保支付过程的安全性
身份验证:支付机构会对买家和卖家的身验证,以确保只有合法的用户才能进行交易
风险控制:支付机构会对交易进行风险评估,并采取相应的措施来防范欺诈和非法交易等风险
交易保障:支付机构会提供交易保障服务,例如交易纠纷处理、退款等服务,以确保用户的权益得到保障。
支付漏洞原理
支付漏洞通常是指在一个应用程序或网站的支付流程中存在漏洞,可能导致支付信息被恶意利用或导致金钱损失。以下是一些常见的支付漏洞原理:
不正确的输入验证: 支付流程通常涉提供的输入,如金额、银行卡号、付款地址等例如,攻击者可能提交负数金额,或者使用非法的银行卡信息。
重放攻击: 在某些情况下,攻击者可以截获支付请求并多次重放它们,导致多次扣款。这通常发生在通信不加密或不安全的情况下。
价格篡改: 攻击者可能尝试篡改购物车中的价格或商品数量,以获得更低的价格或额外的商品
交易注入: 如果应用程序的支付请求构造不当,攻击者可能尝试注入恶意代码或恶意请求以执行未经授权的支付。
缺乏双因素认证: 如果支付流程没有双因素认证,攻击者可能只需知道用户的密码就能够进行支付。更安全的支付系统应该要求多个身份验证步骤,如密码加上手机验证码。
不安全的第三方支付集成: 如果应用程序集成了第三方支付服务,但没有正确处理响应或错误情况,攻击者可能会通过模拟支付来欺骗应用程序。
社会工程学和钓鱼:攻击者可能试图通过欺骗用户来获取其支付信息,例如通过伪装成可信赖的实体或发送恶意电子邮件。
支付漏洞绕过思路
1.修改支付价格
在支付当中,购买商品一般分为三步骤:订购、确认信息、付款。
那么这个修改价格具体是修改哪一步时的价格呢?
在我看来,你可以在这三个步骤当中的随便一个步骤进行修改价格测试
如果前面两步有验证机制,那么你可在最后一步付款时进行抓包尝试修改金额
如果没有在最后一步做好检验那么问题就会存在,其修改的金额值你可以尝试小数目或者尝试负数。
2.修改支付状态
存在可修改订单状态的接口,比如确认收货接口,确认收货以后订单状态会变成“已完成”
有如下接囗/setorderstatus?orderid=1093&orderstatus=3
orderstatus=1待支付,orderstatus=2已
erstatus=3已完成。
利用上述接口,可直接将待支付的订单状态改成已支付
3.修改购买数量
尝试修改成负数,修改负数之后,看看价格有没有修改
4.修改附属-运费
- 修改优惠券金额
- 修改积分金额
- 修改运费金额
5.修改支付接口
比如一些网站支持很多种支付,比如自家的支付工具,第三方的支付工具然后每个支付接口值不一样,如果逻辑设计不当当我随便选择一个点击支付时进行抓包,然后修改其支付接口为一个不存在的接口如果没做好不存在接口相关处理,那么此时就支付成功。
6.多重替换支付
首先去产生两个订单,这两个订单商品是不一样的,其价格不一样如果服务端没有做好这相关的验证,那么在支付的过程当中抓包,修改其订单值为另一个订单值,的商品。最后支付,这时就可以用订单一的支付价格
7.重复支付
比如订单支付会返现,或者返积分。
重复调用支付成功回调的接口,可实现多次返现,或多次返积分
8.最小额支付
9.值为最大值支付问题
一些网站比如你购买商品,这里有2个思路修改值,1是直接修改支付金额值为最大值比如999999999,或者修改附属值,如优惠卷,积分等为999999999,如果这里逻辑设计有问题,那么其支付金额会变为0
或者利用整数溢出,将购买量改成999999999这样支付金额可能会变成0。
10.越权支付
现在可能很少存在这类问题,在支付当中会出现当前用户的id,比如:username=xxx,如果没有加以验证,其支付也是一次性支付没有要求输入密码什么的机制,那么就可以修改这个用户id为其他用户id,达到用其他用户的账号进行支付你的商品
11.无限制试用
一些网站的一些商品,比如云系列产品支持试用,试用时期一般为7天或者30天个账户只能试用一次,试用期间不能再试用,但如果这个试用接口会做好分配那么很容易导致问题的发生。
比如:在支付的时候它URL后面的支付接口是3,而试用接口是4,那么此时你已经试用过了,复制下确认试用时的URL,修改后面的支付接口为3,那么此时就会调用购买支付接口,但是由于你本身这个产品就是试用的,其相应值绑定了这个试用商品,那么金额就肯定是0,那么最后点击支付,你就可以看到支付成功,试用成功又重复试用了一次,然后他们的试用时间会累加在一起,这就导致了可无限制购买任何产品了。
12.多线程并发