不一样的逻辑漏洞

admin 2022年3月17日02:42:35评论279 views字数 2859阅读9分31秒阅读模式

01


人必须要先弄清楚自己是谁

                                                                        ------我是谁

不一样的逻辑漏洞

哈喽,大家好我是NightCrawler安全团队成员--岳墨

安全圈就指望我丢人了
不一样的逻辑漏洞
今天我来说一下逻辑漏洞

逻辑漏洞也就是常说的业务逻辑漏洞

不一样的逻辑漏洞

1.那什么是业务逻辑漏洞呢?

简单理解由于程序逻辑不严谨或逻辑太过复杂,导致一些逻辑分支不能正常处理或处理错误,我们统称为业务逻辑漏洞

现在随着企业和网民的安全意识的提高,Web安全已经成为了一个重点关注的方向。

各种防护手段(使用安全的开发框架、入侵检测系统、安全防护软件等)使用使网站的常规Web漏洞的数量越来越少。

以SQL注入为例,几年前随便找一些动态网站,基本上就能找到存在SQL注入的站点,因为其危害巨大,各种防护手段也是层出不穷。

到现在为止很多Web开发框架从底层就直接杜绝了SQL注入的问题,比如使用预编译的手法执行SQL语句。同理,XSS、命令执行和CSRF等都是同样的趋势,对于安全的发展这是一件好事。

但是我们所说的“逻辑漏洞”却一直没有衰退,甚至以后可能会成为Web漏洞的主战场,因为代码逻辑是人的思维逻辑,找到关键点后往往不用构造恶意的请求即可完成攻击,很容易绕开防护手段

这里说几个常见的逻辑漏洞

①注册点

注册中最常见的有两个,一个是恶意注册,另一个是账户遍历

一个较好的注册界面应该是这样

不一样的逻辑漏洞

或者是这样的
不一样的逻辑漏洞而不是这样的
不一样的逻辑漏洞

较好的注册点,通常要么使用短信或邮箱进行验证,要么存在难以识别的验证码,使得注册的请求无法批量提交。

以上呢是针对恶意注册


那么账户遍历是什么意思?

在注册的时候web程序往往会有用户名或手机号(或其他的什么)检测之类的步骤,来避免相同账号注册多次

比如:一般会提示XXX用户已经存在!

然后我们就可以利用这个用户名进行下一步操作,比如:登录爆破(直接爆破的话可能会提示“用户名或密码错误”对吧,因为你并不知道用户名和密码。)用已知用户名爆破的话,那么我们只关心密码问题了。其次就是密码找回

以上是注册可能会产生的逻辑漏洞


②登录点

登录这一般3种情况

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

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

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

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

③越权

越权一般包括水平越权和垂直越权

水平越权:就是相同级别(权限)的用户或者同一角色不同的用户之间,可以越权访问、修改或者删除的非法操作。如果出现次漏洞,那么将可能会造成大批量数据泄露,严重的甚至会造成用户信息被恶意篡改

垂直越权:是不同级别之间或不同角色之间的越权;垂直越权又别分为向上越权与向下越权

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

我就不详细说明这些逻辑漏洞了

以上我只是简单的列举了一下和简单说明

我今天的重点并不是分享以上的那些逻辑漏洞

只是让大家有个了解


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

1.签约漏洞

不一样的逻辑漏洞

我先来解释一下什么是签约漏洞?

有一些视频软件,我们看一个视频,他要我们开通vip才可以,对吧。

就比如我所使用的苹果手机

首次开头vip,连续开通的那种能便宜好几块人民币呢

就比如(如下图所示

如果说 我开通一个月的vip,那么就要收我30块钱

如果我开通连续包月首月的那个 ,那么我只需要支付10元钱

换做是一个比较穷的人(比如我),可能就会选择10块的那个

这样我的支付宝就会和腾讯视频进行绑定,到了那个规定的时间,他就会自动的扣费

(这个时候,肯定有杠精要说了:需要开会员吗?直接下载一个油猴,进行解析不就好了)

请不要杠,好吗?我会很没面子

不一样的逻辑漏洞不一样的逻辑漏洞

好了 我不开玩笑了,继续往下讲

下面 我来说一说。签约漏洞是如何进行测试的

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

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

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

  4. A手机点击支付进行签约

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

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

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

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


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

不一样的逻辑漏洞

白色代表服务器

1代表客户端1

2代表客户端2

首先,我们来说正常的一个逻辑好吧

不一样的逻辑漏洞

第一步:利用新用户这个身份进行下单(是有优惠的)

第二步:收到订单后 返回支付界面(这一步是正在等待支付,并非已经支付)

如图所示(类似这种)

不一样的逻辑漏洞

第三步:进行支付

第四步:收到订单,充值会员

第五步:再次发起支付

第六步:非新用户,下单失败(因为前面你已经支付)

第七步:返回正常金额

以上是正常的执行逻辑

 

下面就是我们绕过的逻辑

不一样的逻辑漏洞

第一步:下单(客户端1)

第二步:收到订单,返回支付(服务器)

第三步:支付界面等待支付(客户端1)

第四步:利用客户端2下单支付界面等待支付

第五步:支付,解除签约(客户端1)

第六步:支付,解除签约(客户端2)

第七步:收到订单1,充值成功。收到订单2,充值成功


2.会员升级产生的漏洞

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

不一样的逻辑漏洞

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

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

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

总结:

其实这个和签约漏洞的原理都差不多,绕过了支付后服务器才去校验是否可以升级的逻辑

无论签约还是升级,利用的都是停留在操作界面。也就是我们变了个方法创建了订单但是未支付。而通常程序的逻辑又是在支付后才去校验

利用这个方式,大家还可以去拓展更多的思路

3.订单关闭造成的漏洞

不一样的逻辑漏洞

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

  2. 1停留在支付界面

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

  4. 使用优惠卷再次创建订单

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

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

不一样的逻辑漏洞


这样会造成什么问题?

我创建的每一个订单,都是以优惠卷的形式进行购买的

本来优惠卷,只能用一次。现在可以多次使用

我举个例子,好吧

就拿淘宝,举例说明

我在淘宝某家店铺买扇子,新人的话有优惠卷

我在支付之前进行,领取优惠卷,在进行支付的时候。我就关闭支付页面

他就会创建一个订单(如图所示)明白了吧

不一样的逻辑漏洞

下面 本来应该还有一些支付漏洞实例演讲

因过于太敏感了

我无法写下来,并且美团app,商城,直播app类等都存在此问题

大部分的程序都修复,所以大家别去乱搞

担心大家拿去尝试(今天就暂时分享到这里

不一样的逻辑漏洞

原文始发于微信公众号(白虎实验室):不一样的逻辑漏洞

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年3月17日02:42:35
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   不一样的逻辑漏洞http://cn-sec.com/archives/830134.html

发表评论

匿名网友 填写信息