安全矩阵

 找回密码
 立即注册
搜索
查看: 2667|回复: 0

不一样的逻辑漏洞

[复制链接]

189

主题

191

帖子

903

积分

高级会员

Rank: 4

积分
903
发表于 2022-3-19 01:32:05 | 显示全部楼层 |阅读模式
原文链接:不一样的逻辑漏洞 (qq.com)



​哈喽,大家好我是NightCrawler安全团队成员--岳墨
安全圈就指望我丢人了

今天我来说一下逻辑漏洞
逻辑漏洞也就是常说的业务逻辑漏洞嘛

1.那什么是业务逻辑漏洞呢?
简单理解由于程序逻辑不严谨或逻辑太过复杂,导致一些逻辑分支不能正常处理或处理错误,我们统称为业务逻辑漏洞
现在随着企业和网民的安全意识的提高,Web安全已经成为了一个重点关注的方向。
各种防护手段(使用安全的开发框架、入侵检测系统、安全防护软件等)使用使网站的常规Web漏洞的数量越来越少。
以SQL注入为例,几年前随便找一些动态网站,基本上就能找到存在SQL注入的站点,因为其危害巨大,各种防护手段也是层出不穷。
到现在为止很多Web开发框架从底层就直接杜绝了SQL注入的问题,比如使用预编译的手法执行SQL语句。同理,XSS、命令执行和CSRF等都是同样的趋势,对于安全的发展这是一件好事。
但是我们所说的“逻辑漏洞”却一直没有衰退,甚至以后可能会成为Web漏洞的主战场,因为代码逻辑是人的思维逻辑,找到关键点后往往不用构造恶意的请求即可完成攻击,很容易绕开防护手段
这里说几个常见的逻辑漏洞
①注册点
注册中最常见的有两个,一个是恶意注册,另一个是账户遍历
一个较好的注册界面应该是这样

或者是这样的

而不是这样的
较好的注册点,通常要么使用短信或邮箱进行验证,要么存在难以识别的验证码,使得注册的请求无法批量提交。
以上呢是针对恶意注册

那么账户遍历是什么意思?
在注册的时候web程序往往会有用户名或手机号(或其他的什么)检测之类的步骤,来避免相同账号注册多次
比如:一般会提示XXX用户已经存在!
然后我们就可以利用这个用户名进行下一步操作,比如:登录爆破(直接爆破的话可能会提示“用户名或密码错误”对吧,因为你并不知道用户名和密码。)用已知用户名爆破的话,那么我们只关心密码问题了。其次就是密码找回
以上是注册可能会产生的逻辑漏洞

②登录点
登录这一般3种情况

           
  •         登录界面不存在验证码可以直接爆破

           
  •         存在验证码但是可以绕过(验证码绕过

           
  •         第三方账户登录可以被绕过

....................................................

③越权
越权一般包括水平越权和垂直越权
水平越权:就是相同级别(权限)的用户或者同一角色不同的用户之间,可以越权访问、修改或者删除的非法操作。如果出现次漏洞,那么将可能会造成大批量数据泄露,严重的甚至会造成用户信息被恶意篡改
垂直越权:是不同级别之间或不同角色之间的越权;垂直越权又别分为向上越权与向下越权
...................................................
​​
我就不详细说明这些逻辑漏洞了
以上我只是简单的列举了一下和简单说明
我今天的重点并不是分享以上的那些逻辑漏洞
只是让大家有个了解

此次分享的这些逻辑漏洞,是某安全团队的内部资源,希望大家能有所收获
1.签约漏洞

我先来解释一下什么是签约漏洞?
有一些视频软件,我们看一个视频,他要我们开通vip才可以,对吧。
就比如我所使用的苹果手机
首次开头vip,连续开通的那种能便宜好几块人民币呢
就比如(如下图所示
如果说 我开通一个月的vip,那么就要收我30块钱
如果我开通连续包月首月的那个 ,那么我只需要支付10元钱
换做是一个比较穷的人(比如我),可能就会选择10块的那个
这样我的支付宝就会和腾讯视频进行绑定,到了那个规定的时间,他就会自动的扣费
(这个时候,肯定有杠精要说了:需要开会员吗?直接下载一个油猴,进行解析不就好了)
请不要杠,好吗?我会很没面子

好了 我不开玩笑了,继续往下讲
下面 我来说一说。签约漏洞是如何进行测试的

           
  •         我们使用苹果手机A  登录账号A,打开要测试的业务,点击自动续费,支付时停留在支付的页面(千万别支付)

           
  •         使用苹果手机B 登录账号A,打开要测试的业务,点击自动续费,支付时停留在支付的页面(千万别支付)

           
  •         重复多台手机进行同样操作

           
  •         A手机点击支付进行签约

           
  •         A手机支付成功后,在第三方APP中解除自动续费

           
  •         B手机进行支付,支付成功后在第三方APP中解除自动续费

           
  •         全部支付完成后,系统就会为你开通相应的次数,由于提前打开了支付页面,所以金额都是享受到新用户首月优惠的金额,然后你就会发现你开通的时间在不断叠加

建议:通常这种漏洞比较容易出现在活动页面的会员优惠开通,而且要考虑到支付后要比正常购买优惠,才算漏洞

下面我就来详细解释一下漏洞是如何造成的?

白色代表服务器
1代表客户端1
2代表客户端2
首先,我们来说正常的一个逻辑好吧

第一步:利用新用户这个身份进行下单(是有优惠的)
第二步:收到订单后 返回支付界面(这一步是正在等待支付,并非已经支付)
如图所示(类似这种)

第三步:进行支付
第四步:收到订单,充值会员
第五步:再次发起支付
第六步:非新用户,下单失败(因为前面你已经支付)
第七步:返回正常金额
以上是正常的执行逻辑

下面就是我们绕过的逻辑

第一步:下单(客户端1)
第二步:收到订单,返回支付(服务器)
第三步:支付界面等待支付(客户端1)
第四步:利用客户端2下单支付界面等待支付
第五步:支付,解除签约(客户端1)
第六步:支付,解除签约(客户端2)
第七步:收到订单1,充值成功。收到订单2,充值成功

2.会员升级产生的漏洞
第二个漏洞跟上面的基本一样,是根据签约漏洞的延申—会员升级


           
  •         使用手机A 登录账号A,并且开通会员。开通超级会员,进入到升级页面,进行补齐差价开通

           
  •         使用手机B 登录账号A,点击开通超级会员,进入到升级页面,进行补齐差价开通

           
  •         手机A进行支付,手机B进行支付。服务器会认为你补齐了多个月份的超级会员,然后到账多次

总结:
其实这个和签约漏洞的原理都差不多,绕过了支付后服务器才去校验是否可以升级的逻辑
无论签约还是升级,利用的都是停留在操作界面。也就是我们变了个方法创建了订单但是未支付。而通常程序的逻辑又是在支付后才去校验
利用这个方式,大家还可以去拓展更多的思路
​​3.订单关闭造成的漏洞


           
  •         我们使用优惠卷,创建一个订单

           
  •         1停留在支付界面

           
  •         关闭订单后,会返回我们的优惠卷

           
  •         使用优惠卷再次创建订单

           
  •         1把第一个未支付的订单进行支付

           
  •         商品从关闭,重新进入到了代发货的阶段



这样会造成什么问题?
我创建的每一个订单,都是以优惠卷的形式进行购买的
本来优惠卷,只能用一次。现在可以多次使用
我举个例子,好吧
就拿淘宝,举例说明
我在淘宝某家店铺买扇子,新人的话有优惠卷
我在支付之前进行,领取优惠卷,在进行支付的时候。我就关闭支付页面
他就会创建一个订单(如图所示)明白了吧

下面 本来应该还有一些支付漏洞实例演讲
因过于太敏感了
我无法写下来,并且美团app,商城,直播app类等都存在此问题
大部分的程序都修复,所以大家别去乱搞
担心大家拿去尝试(今天就暂时分享到这里




回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2025-4-24 15:11 , Processed in 0.015369 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表