SRC众测挖洞之支付逻辑漏洞的奇淫技巧

Posted Tr0e

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SRC众测挖洞之支付逻辑漏洞的奇淫技巧相关的知识,希望对你有一定的参考价值。

前言

最近闲余时间开始在 SRC 应急响应平台和 补天、火线、漏洞盒子 等第三方漏洞平台挖掘漏洞赚点外快,一开始还算运气好尝到了一点小甜头:
在这里插入图片描述
但是面对 SRC 这类可能被几百名白帽子同时挖掘过的系统,想要持续挖掘到遗漏的漏洞难面显得十分吃力、甚至说黔驴技穷了……但是发现正是这种“手足无措”的处境,才会让自己去加深一些曾经自认为“熟悉”的漏洞的理解并进一步掌握对应新的挖掘技巧(金钱的力量很强大…)。

同时自己也开始四处搜刮学习各路 SRC 或众测大神公布的为数不多的挖洞的奇淫技巧(毕竟是赚钱的手艺,不乐意分享也人之常情…),本文主要记录擅长逻辑漏洞挖掘的月神大佬分享的关于支付业务的一些逻辑漏洞挖掘技巧。在此先说明一下本文基于 B 站月神两个分享视频的总结:

  1. 探寻逻辑漏洞挖掘的通用思路
  2. 月神-业务逻辑漏洞之支付和并发(修订版)

有兴趣的读者可以到 B 站学习下以上月神大佬的分享视频。

巧用支付页面

假如你手头有一张华住 APP(举例子而已)的 200 元酒店优惠券,你想象过以下场景吗:

  1. 你先在你华为手机的华住 APP 里发起酒店定单(并勾选该优惠券)进入支付宝支付页面,但是先不支付;
  2. 打开你的 IPhone 手机进入华住会 APP 登录并挤掉华为手机登录的账号,同样发起酒店定单(并勾选该优惠券)进入微信支付页面,并进行支付;
  3. 回到华为手机的支付宝支付页面进行支付尝试,猜猜接下来会发生什么?

实践证明,以上发起多个支付页面的情况,大概率能薅羊毛!下面来了解下。

低价签约漏洞

先直接看月神的 PPT 简述了该漏洞:
在这里插入图片描述大家都知道有些软件推出了新用户的会员签约功能,新的用户首次签约付费时能以低价购买会员,这个时候就尝试想白嫖多个月的低价会员了。于是开始第一次测试——使用支付宝打开签约界面,然后使用微信也同时打签约界面,然后再依次支付,支付后系统提示,无法重复签约。

我想难到系统有检测?舍不得孩子套不到狼,于是申请个新号再次进行测试:

  1. 还是同时支付宝和微信都打开了签约界面,但这次先签约其中一个比如先签约微信;
  2. 微信支付成功并签约完成后,在微信取消签约,然后再去支付宝点击签约;
  3. 这个时候奇迹就发生了,系统成功到账了2个月的低价会员!

也就是说服务器虽然校验了同一新用户不能同时多次低价签约,但是对于新用户同时发起的多个支付签约页面的请求,服务器没有校验解约后再次签约的情况,导致成功白嫖!以上的一个业务逻辑流程大致如下图:
在这里插入图片描述

低价会员升级

会员升级的业务场景漏洞是上述签约漏洞的一个延申思路,同样也先拿月神的 PPT 介绍下:
在这里插入图片描述该业务场景的漏洞同样很好理解:

  1. 也就是你原先只是白金会员,服务方说原本需要每月支付 100 块钱才能升级成铂金会员,现在只要 10 块钱就能让你升级体验 1 个月;
  2. 这个时候你利用上述创建多个支付页面的方式,就有可能只在交了 2 个 10 块钱的情况下,成功白嫖 2 个月价值各 100 块钱的会员升级服务!

循环利用优惠券

以上两种业务场景都是基于发起多个支付页面,导致服务端的校验逻辑被绕过,但是该思路还不仅仅局限于上述两种业务场景。
在这里插入图片描述下面再来看看一个业务场景:
在这里插入图片描述
很好理解,使用优惠券创建订单后进入支付宝支付界面,此时返回购物 APP 尝试关闭订单并让系统退回优惠券,接着返回支付宝把刚才的订单支付了……此时则有可能既享受了优惠下单,账户中的优惠券又还没花掉!
在这里插入图片描述

并发请求测试

这个指的是使用 Fiddler 抓包工具拦截携带了优惠券的订单支付请求,并在客户端多次点击、生成多个支付请求后再一块放行,形成并发请求,此时将可能导致成功使用同张优惠券进行多次下单!
在这里插入图片描述

并发领取奖品

来看一个案例,其并发测试场景为:每天或是每个活动只能领一次,或是获取一次礼品等。比如以下活动,每人每天只能拆一个福袋:
在这里插入图片描述
Fiddler 拦截拆开福袋的请求,选择数据包,敲击键盘R,复制数据包(具体的 Fillder 并发数据包操作可参见:Fiddler – 并发):
在这里插入图片描述
批量选择数据包,点击 GO 放行:
在这里插入图片描述
此时发现漏洞,可同时拆取多个福袋:
在这里插入图片描述

并发多次签到

同样以 Fiddler 做测试工具,并发测试主要测试场景:签到、每天领积分等,测试是否并发发送请求服务器可多次响应。

1、先进入对应签到领取积分页面,然后在 Fiddler 按 F11 开启拦截数据包:
在这里插入图片描述
2、点击签到触发请求:
在这里插入图片描述
3、复制上面签到请求,鼠标选择请求包,按下 r 快捷键复制请求:
在这里插入图片描述
4、全部选择,点击 GO 一并发送:
在这里插入图片描述
5、查看服务器响应,若全部响应 200,则查看页面签到分数是否出现多倍,若出现多倍则漏洞存在:
在这里插入图片描述

并发转账提现

很多平台有自家的钱包,而这个钱包是一个迷你钱包,这个钱包作用也仅是用于这当前一个业务平台网站,在提现时,没有任何验证码或者校验机制,只要输入体现金额就可以提现,并且是秒到账,如果什么负数,修改金额都测试过了都不行,那么你就可以试试多线程并发问题,提现时抓包:

  1. 比如我现在钱包内有 0.1 元,那么按理说每提 0.01 可以提现 10 次,也就是发送 10 次进程;
  2. 但是如果在提现时抓包,然后把数据包发送到 BurpSuite 工具的 Intruder 当中,进行批量发送 18 次,可以看到成功的提现到了 12 次!

如果把这个提现金额变大,那么这多提现的金额可不是闹着玩的。综上也可以看到并发测试在日常渗透测试过程中举足轻重的作用,它适用于多个业务场景且危害巨大!

注意】利用抓包工具进行并发操作时,使用 BurpSuite 的 intruder 模块来进行并发,相对于使用 Fiddler 来并发而言有个弊端,就是 Fiddler 可以同时拦截多个客户端发送的相同请求(客户端多次点击提交按钮即可)然后一并放行,这对于客户端做了时间戳、签名防重放机制的业务功能来说是就十分重要了!

其他支付漏洞

支付逻辑漏洞还有很多场景,下面再继续介绍几个。

异常支付金额

1、四舍五入

使用低于服务器能识别的最小单位,比如服务器只能识别到 0.01 元,你支付了 0.019 元,有可能就四舍五入给你充了 0.02 元,那么恭喜你成功白嫖了 0.001 元的巨款:

在这里插入图片描述2、负数交易

在测试某款金融软件时,看了很多功能,逻辑都很严谨,在处处碰壁即将要放弃的时候,寻思试一下钱包吧,虽然感觉不太可能,但是梦想得有,万一实现了呢。于是提现时候试了一下负数,如下将下面参数中 amount 参数的之由 1 改为 -1,结果真的成功了:
在这里插入图片描述
从图片中可以看出,负负得正,于是提现后钱包就多了相应得金额,如果被非法分子利用的话就拿去买东西或者直接提现了!

金额数量溢出

来看看月神对该漏洞的介绍:
在这里插入图片描述直接来看一个实战白嫖案例:

1、找到了充值的功能点进行测试,先输入金额,进行抓包修改,这里我改成了 2147483650,然后放行:
在这里插入图片描述
2、然后我们就扫码进行了付款操作,只支付了 2 元(到 48 的时候是 0、49是1、50 是2),然后看一下不可思议的余额:
在这里插入图片描述
也就是说我只付款 2 元就成功充值 2 亿多!!!!

更多支付漏洞

本文只介绍几种自己觉得比较新鲜的思路,其他不再展开了,可以去看看别人总结的其他思路:

  1. 月神带你逻辑漏洞挖掘
  2. 挖洞技巧:支付漏洞之总结

总结

允许我此处引用月神的两段话作为本文的结尾:

有时候你想到了一个奇葩逻辑,会通杀很多 APP(我用了一个简单的支付逻辑在 4 家 SRC 每个洞都讹到了高危)所以逻辑漏洞虽然看似简单,如果奇葩也能通杀。我的挖掘思路就是拿到包后,先随便测,从登陆,资料评论这些简单的功能都过一遍,挖到低危不要紧,挖到了就是给自己建立了信心,没白挖。

然后简单功能过了一遍后,开始细扣每个功能例如支付这种容易出高危严重的地方可以先看一下,把自己积累的思路过一遍,比如先充几块钱,然后并发提现。或者充值 5 元后,用 5 块钱并发支付多个 5 元的订单,这个相比其他支付漏洞的出现率还是多一些的。最重要的是想别人想不到的,如果是小白,可以学习一些常见的思路,然后自己找些网站来测试,我给的建议就是别学太多,入门就行,剩下的自己在实践中悟,这样就不会被常识束缚住。不然挖逻辑漏洞时太容易就被已经掌握的常识所束缚了。

以上是关于SRC众测挖洞之支付逻辑漏洞的奇淫技巧的主要内容,如果未能解决你的问题,请参考以下文章

Swagger使用的奇淫技巧

实用工具快上车,程序狗好用的奇淫技巧

MATLAB | MATLAB中绘图的奇淫技巧合集

MATLAB | MATLAB中绘图的奇淫技巧合集

这几个Python的奇淫技巧,你会么?

Visual Studio的奇淫技巧,你知道多少?