漏洞挖掘思路短信验证码相关的逻辑漏洞

漏洞挖掘思路----短信验证码相关的逻辑漏洞

在本篇文章中,可以学习到短信验证码相关逻辑漏洞,介绍了一些逻辑漏洞的挖掘技巧,这些都是网上一些大佬总结出来的,可以让读者在企业SRC漏洞挖掘中有更多的挖掘思路。

大家可以收藏本篇文章,在进行短信验证码逻辑漏洞挖掘的时候一一对应本文的挖掘技巧进行尝试。

漏洞概述

​ 在漏洞挖掘中,我们经常遇到具有验证码功能的网站,例如登录,注册,找回密码,领取优惠券,修改信息等地方,几乎都有用到获取验证码,验证码一般都是4位的或者6位的,以下一些技巧很多都是针对增加提交企业SRC漏洞审核成功率的。

关于验证码的漏洞,一般如下:

1、验证码爆破
2、验证码回显
3、验证码与手机未绑定认证关系
4、修改返回包绕过验证码
5、验证码转发
6、任意验证码登录
7、验证码为空登录
8、固定验证码登录
9、验证码轰炸

逻辑漏洞详解

验证码爆破

**漏洞原理:**对于一些验证码功能中,服务端没有对时间,次数做限制,就存在爆破的可能性。简单的系统存在可以直接爆破的可能性,但是做过防护的系统还是得进行一些绕过才能爆破,一般的验证码都是4位或者6位。

对于4位纯数字验证码:从0000-9999,有10000种情况,5分钟内BP完全可以跑完,符合一般的验证码时间

对于6位纯数字验证码:从000000-999999,有1000000种情况,5分钟内BP是跑不完的,所以需要使用分段爆破

挖洞操作

找到有验证码的地方进行抓包,发送到爆破模块,使用狙击手模式进行爆破

4位验证码爆破

image-20230808171552379

6位验证码爆破

由于6位验证码爆破量太大了,5分钟之内是爆破不完的,所以就需要使用分段爆破了,分段爆破说白了其实就是为了唬住审核员,我们可以使用自己的手机号,发送验证码,然后收到验证码之后,假设我收到的验证码是485625,那我就可以使用BP爆破的时候设置一个更小的范围,比如设置为从480000-489999,这个范围只有10000中情况,在5分钟之内是可以爆破出来的,然后就可以截图提交漏洞,很可能唬住审核员,即使被驳回,也可以尝试理论。

image-20230808172618860

挖洞技巧

  1. 一般容易搜索到资产的地方没有漏洞
  2. 去找一些隐藏页面,比如小程序,app,或者其他深入页面,例如每到过节,许多app,小程序等会有新活动,然后以广告的形式弹出来,这些可能是临时发布的功能,而且还是输入验证码领取礼包啥的,更有可能存在漏洞
  3. 针对于6位数字的验证码,可以使用分段破解的方法

验证码回显

**漏洞原理:**验证码回显,是指验证码在发送的时候会存在数据包中,通过观察回显的数据包中的数据,找到验证码

漏洞案例

1.验证码存在返回的数据包中

image-20230808173904837

2.验证码存在返回包中,但是加密了

image-20230808174036623

可以尝试解密:

image-20230808174123166

3.还可能存在返回的数据包的头部

image-20230808174233027

挖洞操作

1.打开存在验证码的地方,输入手机号,点击发送验证码,然后进行抓包

2.设置拦截响应包,将数据包发送到重发器进行测试,观察数据包是否包含关验证码信息

image-20230808174541740

3.点击发送之后,拦截到了响应包,然后分析响应包,有的数据加密了,有的信息存在数据包头部,比如cookie中

image-20230808174622954

挖洞技巧

  1. 一般容易搜索到资产的地方没有该漏洞
  2. 去找一些隐藏页面,比如app,小程序,或者其他的深入页面
  3. 多观察返回数据包,认真仔细的观察数据包的头部,还有数据等信息

验证码与手机未绑定认证关系

**漏洞原理:**后端只验证了验证码,并没有将手机号与验证码进行绑定

挖洞操作:

你只需要准备两个或者以上的手机号,找到找回密码的地方或者登录的地方,类似以下界面的功能:

image-20230816200508209

填一个自己的手机号,获取验证码之后,使用其他手机号进行登录

挖洞技巧

  1. 尝试使用不同的手机号进行替换
  2. 发散思维,寻找不同的功能点进行测试

修改返回包绕过验证码

**漏洞原理:**有一些网站的认证是通过返回包来认证的,比如前端会判断响应中的result是true还是false,是0还是1,如果是true或者1那就认证成功,所以我们可以通过修改返回包的一些敏感词(result,code,fail等)进行验证码绕过。

挖洞操作

随便填一个验证码使用BP抓包,然后拦截响应包,仔细查看响应包的值,如果具有一些敏感的词汇,就进行修改尝试。

挖洞技巧

  1. 适合于不容易搜索到的资产,多尝试,多观察,找冷门的网站成功率更大
  2. 看到0改为1,或者-1,或者正数无限大(9999…),负数无限小(-9999…)
  3. false改为true
  4. 500改为200
  5. fail改成success

验证码转发

**漏洞原理:**有的开发人员会使用数组接收手机号,然后一起对手机号进行发送验证码,这个时候两个手机号对应的验证码都是一样的,所以我们可以输入两个手机号,其中有一个自己的,一个是别人的,自己收到的验证码和别人的验证码是一样的,达到窃取验证码的目的。

漏洞案例

image-20230816203009764

可以发现两个手机收到的验证码都是一样的,所以如果我们输入一个自己的手机号,一个管理员的手机号,收到验证码之后相当于收到了管理员的验证码

image-20230816202815434

挖洞操作

开启BP抓包,然后输入手机号,点击发送验证码进行拦截,将请求发送到重发器,进行尝试多个手机号修改,然后发送,观察自己的手机是否收到验证码。

挖洞技巧

双写绕过:

比如前端发送手机号的形式为phone=122222,我们就可以在请求包中这样改:phone=12222 1333或者phone=1222,1333或者phone=1222&&phone=13333

一般都是get请求,这个时候可以尝试直接写两行:

phone=12222
phone=13333

任意验证码登录

**漏洞原理:**有些网站或者app,小程序有验证码功能,但是如同虚设,只是为了发送验证码,并没有写业务逻辑进行校验,一般在新上线的系统比较常见,因为有些开发就为了方便测试,把验证码校验注释了,从而导致任意验证码登录。

挖洞操作

填写手机号发送验证码,随意输入一个验证码进行登录

挖洞技巧

找一些app,小程序,新上线的业务或者测试业务,这些地方可能存在这样的漏洞

验证码为空登录

漏洞原理: 验证码为空登录是在后台接收验证码的时候没有对验证码进行过滤,可以进行空值绕过。

挖洞操作

正常点击发送验证码,然后点击登录或者其他功能之后进行抓包拦截请求,然后尝试修改验证码对应值,可以改成null,-1,true,

空数组等,或者如果携带了cookie,把cookie字段删除了试试

挖洞技巧

可以进行如下示例修改验证码的值:

  1. null
  2. -1
  3. -999999
  4. 1.1
  5. []
  6. true
  7. success
  8. 或者删除cookie字段

多多尝试即可。

固定验证码登录

**漏洞原理:**一些开发人员为了方便测试,都使用固定验证码进行验证

挖洞技巧

可以测试一些简单输入的验证码,例如:123,1234,0000,8888,123456,6666,9999等

可以做一个简单的验证码字典进行爆破

这些固定验证码一般都出现于设备,硬件设备

或者刚上线不久的系统,或者测试业务。

手机短信轰炸

漏洞原理

在一些身份校验处,有的时候需要输入手机号,接受验证码,比如登录、忘记密码、注册、绑定、活动领取、反
馈处等,如果没有对发送短信进行约束,可以达到5秒发送10条短信,甚至更多的短信,对业务造成影响,这个就
是短信轰炸漏洞,短信轰炸漏洞分为两种:
1、横向轰炸:对单个手机号码做了接收验证次数,但是可以对不同手机号发送短信无次数限制
2、纵向轰炸:对一个手机号码轰炸多次

不过这个漏洞给钱少,因为对业务影响不大,主要都是收纵向轰炸漏洞,横向就看审核员了,对不同手机号疯狂发送短信,或许也算漏洞的,因为每次让公司发短信,都是花钱的,跟审核员说这个漏洞影响很严重,如果他说不严重,那我发100万条试试,再说不严重,再发100万条,每条短信1毛钱,你看看严不严重,吓唬吓唬审核员也是可以的。(当然不是真发那么多,这是违法的)

挖洞操作

打开需要验证码的地方,输入手机号,然后打开BP进行拦截,点击发送验证码,将拦截的请求包发送到重发器,然后根据下面的技巧进行绕过

挖洞技巧

1.利用空格绕过短信条数限制

通过在参数值的前面加上空格,或者后面加上,或者多个空格,进行绕过一天内发送次数的限制,mobile=
1222335,前面加个空格,就可以再次发送成功。

image-20230817202957569

2.修改cookie值绕过短信次数

有些发送短信的次数是根据cookie值进行判断,利用当前cookie值来验证发送次数的话,很容易被绕过

所以可以尝试多次修改cookie的值,甚至删除cookie绕过。

image-20230817203152643

3.利用接口标记绕过短信限制

发送短信验证,可能会设置参数值的不同,来判断是执行api什么样的功能。比如type=1是注册,type=2是忘记密
码,type=3是修改密码等。我们可以通过修收参数值,来绕过一分钟内只发送一次限制,达到短信轰炸的目的

如下图,可以修改参数值,当然有的参数名称不一样,比如是smsType,apiType等,后端程序猿会根据传的参数名称的不同来实现不同的业务。

image-20230817204608481

4.修改IP绕过短信

有的验证码是通过访问数据包的IP来做限制,比如X-Forwarded-For这个包参数,因此可以修改X-Forwarded-
For后面的IP地址(可以修改为0等其他数值尝试)来进行绕过。

当然在请求头中,看到其他有关IP的参数,也可以修改,比如:

X-Remote-IP:localhost:443
X-Remote-IP:127.0.0.1
X-Remote-IP:127.0.0.1:80
X-Remote-IP:127.0.0.1:443
X-Remote-IP:127.0.0.1
X-Custom-IP-Authorization:localhost
X-Custom-IP-Authorization:localhost:80
X-Custom-IP-Authorization:localhost:443
X-Custom-IP-Authorization:127.0.0.1
X-Custom-IP-Authorization:127.0.0.1:80
X-Custom-IP-Authorization:127.0.0.1:443
X-Custom-IP-Authorization:2130706433

image-20230817205111668

5.特殊字符绕过

加入一些特殊字符之后可以达到一个绕过的目的,比如

%%% ### @@@ !! \r \n tab键 -- ***  () 等等

image-20230817205935772

6.+86或者086绕过(区号绕过)

我们给数据包里面的手机号加上+86或者086绕过

image-20230817210037572

7.改地区代码绕过

当我们注册一些网站的时候,有时候会显示该地区,我们可以通过修改地区进行绕过

image-20230817210146291

8.双写手机号

网站后端只对手机号做了一次参数限制,那么双写一个手机号参数,另一个手机号参数绕过限制,进入到后端,
被识别之后就会发送短信

可以通过双写多个参数名

image-20230817211051368

也可以在一个参数名中通过空格或者逗号双写手 机号

image-20230817211110596

在post请求中,请求体也可以写两行带有手机号的尝试绕过:

image-20230817211728890

总结

​ 通过以上短信验证证明逻辑漏洞的详解,相信读者们能充分意识到信息收集的重要性。我们可以设想一下,如果我们只有10个网站,从10个网站上找这个验证码相关的漏洞,是不是非常难,那如果我们有10000个网站,成功率就十分大了。所以,为了让大家收集到更多的资产,我总结了一些信息收集的方式,大家如果想收集到更多的资产,可以查看我的这篇文章:信息收集思路——漏洞挖掘总结

猜你喜欢

转载自blog.csdn.net/weixin_46367450/article/details/132357037
今日推荐