逻辑漏洞之支付漏洞详解

参考文章

本片文章仅供学习使用,切勿触犯法律!


概述


总结


一、漏洞介绍

所有涉及购买、支付等方面的功能处就有可能存在支付漏洞。


二、漏洞原理

一般支付流程:

用户用钱包加上优惠券/折扣券确认购买商品的单价、数量以及购买时间,提交给平台或商家确认无误后,确认支付信息,报告购买信息。其中有三个重要的因素:用户、商品、平台/商家。这三个因素在支付流程中都有可能造成支付漏洞。


三、漏洞危害

对企业和用户的危害极大。


四、利用前提

  • 目标网站有支付系统
  • 在字符流程中,对于用户、商品、平台/商家三个重要因素之间有漏洞。

五、挖掘利用

1、一般类型

1.描述

这里的一般类型主要是指在支付流程中,由三个因素之间产生的漏洞。

2.挖掘

寻找网站的支付系统,或兑换系统,抓包判断有没有敏感信息可以修改。

3.利用

1. 修改支付价格
在支付流程中,提交购买信息、确认支付、确认购买的流程中,如果相互之间没有做好验证机制,就有可能出现修改支付价格的漏洞。
在这三个步骤中,可以尝试抓包,修改支付价格。

2. 修改支付状态
这个问题是没有对支付状态的值跟实际订单支付状态进行校验,导致点击支付时抓包修改决定支付或未支付的参数为支付状态的值从而达到支付成功。

3.  修改购买数量
抓包,尝试修改购买数量,如果修改购买数量后,价格不变,亦或者修改购买数量为负数,如果价格为负数,同样会导致支付问题的产生。

4.  修改优惠券、积分
如果优惠券、折扣券、积分等可以换取相应的物品,那么也有可能出现支付漏洞,这个流程与一般支付流程类似,可以尝试挖掘。

  1. 修改优惠劵金额
    具体看优惠券的兑换方式,如果的是满减型,那么就尝试修改优惠券的金额、修改商品价格。如果是折扣类型,那么就尝试泽折扣程度。
  2. 修改优惠劵金额及业务逻辑问题
    具体看优惠券的业务逻辑,比如说,如果支付价格为0时,会报错,提示购买失败,这是因为网站后台不允许提交0元的商品购买订单。
  3. 修改积分金额
    修改积分金额与上面几点类似,同样是抓包判断能不能修改相关信息。

5. 修改支付接口
比如一些网站支持很多种支付,比如自家的支付工具,第三方的支付工具,然后每个支付接口值不一样,如果逻辑设计不当,当我随便选择一个点击支付时进行抓包,然后修改其支付接口为一个不存在的接口,如果没做好不存在接口相关处理,那么此时就会支付成功。

6. 多重替换支付
支付过程中,网站没有验证商品价格和用户的支付价格。首先去产生两个订单,这两个订单商品是不一样的,其价格不一样,如果服务端没有做好这相关的验证,那么在支付的过程当中抓包,修改其订单值为另一个订单值,最后支付,这时就可以用订单一的支付价格买到订单而的商品。

7. 重复支付
一些交易市场有一类似于试用牌子或者其它,这个试用牌子可以依靠签到获得,而这个牌子的作用可以去试用一些商品,在你进行试用的时候会扣掉你的试用牌子,当你试用完成或者主动取消试用时,试用牌子会返回到账户当中。如果没有进行对订单多重提交的校验,那么就可导致无限制刷牌子,比如,你试用时抓包,然后你每次试用都会产生一个订单号,然后利用刚抓到的数据包进行批量提交,你就可以看到每次提交的订单号不一样,然后这时你再看订单可以看到同一个商品的无数订单,但试用牌子数只扣了你第一个试验时的牌子数,那么这时你申请批量退出试用,那么这么多订单,每退一个就会退相应的牌子数量到账户当中,这就构成了无限制刷得问题。

8. 最小额支付
在修改支付价格时,如果没有支付成功或兑换成功,并不能说明该网站不存在支付漏洞。注意网站的最小支付额,网站可能会对此进行校验,小于这个最小支付额,无法购买,也有可能兑换的物品为空。

9. 值为最大值支付问题
以前也是看到过相关的例子,一些网站比如你购买商品,这里有2个思路修改值,1是直接修改支付金额值为最大值,比如999999999,或者修改附属值,如优惠卷,积分等为999999999,如果这里逻辑设计有问题,那么其支付金额会变为0。

10. 无限制试用
一些网站的一些商品,比如云系列产品支持试用,试用时期一般为7天或者30天,一个账户只能试用一次,试用期间不能再试用,但如果这个试用接口没做好分配那么很容易导致问题的发生。

2、特殊类型

1.描述

可以尝试用其他漏洞触发支付漏洞,比如说SQL注入漏洞、越权漏洞等。

2.挖掘

详情请见其他漏洞挖掘。

3.利用

1. 越权支付
在支付当中会出现当前用户的ID,比如:username=XXXXX,如果没有加以验证,其支付也是一次性支付没有要求输入密码什么的机制,那么就可以修改这个用户ID为其它用户ID,达到用其他用户的账号进行支付你的商品。

  1. 多线程并发
    多线程并发问题就是没有实时的处理各种状态所导致的问题,之前挖掘过刷钱问题,就是利用该思路。
    平台的钱包在提现时,没有任何验证码或者校验机制,只要输入提现金额就可以提现,并且是秒到账,如果什么负数,修改金额都测试过了都不行,那么你就可以试试多线程并发问题。利用方式就是利用burpsuite的intruder工具,频繁向网站申请提现。

六、修复防范

  • 对支付流程的每个环节进行校验,并且防止跳过某一个环节。
  • 用户确认购买后,立即验证商品价格(商品单价、商品数量、折扣优惠)、订单价格和到账金额。
  • 对一些优惠券、折扣券的使用方式进行测试。
  • 修复防范网站其他漏洞。

七、提出问题

posted @ 2021-02-02 23:54  GorillaLee  阅读(3910)  评论(0编辑  收藏  举报