QQ泡沫乐园 · 免费提供游戏辅助,破解软件,活动资讯,喜欢记得收藏哦!
综合软件_线报活动_游戏辅助_最新电影_最优质的的辅助分享平台

手机验证码绕过逻辑漏洞,如何绕过短信验证(组图)

网络 2022-12-29 16:06

来源: cnblogs.com/ping007/p/10265764.html

进行这个整理,因为在XXX项目的时侯,发现登陆处的忘掉密码处,在验证用户身分的时侯是通过,手机验证码验证的,通过更改响应包的返回参数值,可以绕开验证,进入第三步的密码重置。

还有近来测试的一个sso登陆,也存在验证码问题。之前的测试中也碰到过类似的验证码绕开的漏洞,所以对验证码绕开方式进行一个总结汇总、以及关于登陆模块可能会存在的逻辑漏洞进行一个小整理。

其实,会出现验证码的地方,也就是校准用户身分处,比如,登录、忘记密码、注册、绑定、活动申领、反馈处等。

而登陆模块中可能存在的逻辑漏洞,无非就是用户枚举、任意用户密码重置,当然认证绕开也是逻辑漏洞,这个我们姑且置于验证码上面。

绕过短信验证码的方式以及事例

通过更改响应包的返回值绕开

这种是用户端按照返回的值,来确定是否进行下一步。

比如发送成功返回state的值是success,失败是false,然后客户端按照state的值,来确定下一步的动作。这样,我们可以通过更改响应包,绕过验证。

例1

比如忘掉密码处:第二步中,对用户的身分进行邮件验证,可通过更改响应包,将error换为ok即可绕开身分验证,到设置密码处。

例2

注册处,验证手机验证码处,通过更改响应包,或替换为自己的手机号,绕过验证码的限制,造成使用别人手机号进行注册。

例3

有些登陆也存在类似的问题,随便输入帐号密码,拦截返回的响应包,将包替换为A帐号帐号密码正确的登陆的返回的响应包(前提是,A帐号的cookie是有效的),即可登入到A帐号。这种也是客户端,根据响应包的值,来决定下一步动作。

服务端未对身分做校准

这种比较少,因为算是功能问题,在验证身分时,未对答案进行校准。就是随意输入,就能步入下一步。

例4

忘记密码处,第二步中,选择其他形式寻回,通过密保寻回,未对密保答案进行验证,随便输入答案,即可跳转到设置密码处。

验证码置空绕开验证

短信验证码处,随便输入其他,验证码错误,而置空却不校准,则可以通过置空绕开

例5

我的==>登陆==>短信验证码登录登录时抓包把code(验证码数组)值置为空,即可登录任意帐户

发送邮件时,将手机号替换为自己的手机号获取验证码

当更改他人的信息时,需要邮件认证时,在发送邮件时,我们可以尝试,将手机号替换为自己的,来获取短信验证码。

如果服务端只是检测验证码是否正确,而不是进行手机号和验证码匹配的话,或者只是匹配发送邮件手机号和验证码,我们就可以绕开认证。

例6

忘记验证码,验证身分时,在发送邮件时,拦截,将手机号替换为我们自己的,发送。然后再输入得到验证码,验证,如果此时只是验证码验证码是否正确,即可绕开。

但是,若验证发送手机号和验证码是否匹配时,我们可以在填好验证码,提交时,拦截,将手机号再度改为我们自己的,即可绕开。

允许一次给多个手机号发送邮件,获取验证码

在给手机发送邮件验证码时,比如phone=13211111111,我们同时向多个手机号发送邮件,用冒号隔开,即phone=13211111111,13233333333。可发送成功。

所有手机收到相同的验证码,若果,后面在验证验证码时,可以匹配成功的话,即可绕开验证码。另外,这样可以向大量手机号发送,造成费用降低。

例7

注册处,在获取短信验证码时,抓包将mobilePhone的值改为多个手机号,并用冒号分隔,可成功多个手机号发送邮件验证码。

短信验证码太紧,爆破绕开

有的邮件验证码位数太紧,采用4为纯数字的短信验证码作为登陆认证的账簿,这样若是没有对次数限制或存在图形验证码的话,就很容易采用工具进行爆破验证码登入。

例8

重置密码处按照短信验证码,是否正确来确定是否能更改成功,而且验证码是四位纯数字的,可以进行爆破。

code=4935&mobile=18556530793&pwd=123456a

利用插口标记绕开邮件限制

注册、忘记密码、修改密码处,均存在发送邮件验证,可能会设置参数值的不同,来判定是执行什么样的功能。比如type=1是注册,type=2是忘掉密码,type=3是更改密码等。我们可以通过更改参数值,来绕开一分钟内只发送一次限制,达到邮件轰炸的目的。

例9

注册页面处,URL/public/getPhoneVerifyCodeWithCheckPicVerCode正常逻辑是验证图片验证码,正确后,再发送手机验证码。

将恳求更改为/public/getPhoneVerifyCode,从而绕开图片验证码的验证机制。

例10

注册页面处,发送邮件验证码处,可以结合上例中的绕开图形验证码的机制,发现smsType的值,不同时,可以绕开180秒限制。可以遍历更改smsType的值,从而导致邮件炸弹。

例11

注册,在发送手机验证码或邮箱验证码处,r=2时,连续发送验证码,会提醒“重新输入验证码”,说明验证了图形验证码。

但是r=5时,可以发送成功,连续发送时,提醒“一分钟内不准许多次发送”。

仅有一分钟内不容许多次发送验证码限制,但是并未对图形验证码进行校准,可以通过甚至频度,使其,两分钟发送一次,同样可以导致邮件/邮箱轰炸。

例12

绑定手机号处,正常的发送邮件的URL是sendSMS4Mobile,尝试更改URL,是否存在其他发送插口。经过不断尝试,sendSMS插口同样可以发送邮件。

利用空格绕开邮件条数限制

通过在参数值的后面加上空格,进行绕开一天内发送次数的限制。

比如,mobile=13211111111,一天可以发送10次,超过10次明天将不再发送,第二天才可以继续发送。

但是,可以通过在手机号上面或旁边加上空格又可以发送10次。

比如,mobile= 13211111111,前面加个空格,就可以再度发送成功。

通过更改cookie值绕开邮件次数

有些发送邮件的次数是按照cookie值进行判别,(此cookie值并不是登陆状态下的cookie而不是普通状态下的),利用当前cookie值来验证发送次数的话,很容易被绕开。

例子

之前有个登陆帐号密码错误三次,就会出现图形验证码。但是当关掉浏览器,重新打开,再登陆,又会有三次机会。

当时,芦浩剖析得出是按照cookie判定的,然后通过,不断获取新的cookie,来绕开三次限制,进而进行帐户密码枚举。

修改IP绕开邮件/邮箱轰炸

有些是验证当前IP,如果当前IP短时间内获取邮件或短信频繁或达到一定的次数,会锁定当前IP,这时可以尝试通过更改IP或代理IP来进行绕开限制

利用大小写绕开邮箱轰炸限制

有时候验证码是发送到邮箱的,可以通过更改邮箱前面字母的大小写绕开限制。

比如:email=****@qq.com,当次数达到限制时,将字母更改为小写:email=****@Qq.com,即可绕开。

修复建议:

1、服务端对验证码进行校准,短信验证码应当按照用户存在数据库中的手机号收到的验证码进行匹配验证。

2、增加复杂的图形验证码,且一次性有效

3、限制一天内发送的上限

用户枚举

在验证用户身分的时侯,或判定用户是否已注册时,若验证码处理不当、或错误提醒明晰,都可能存在用户枚举。

缺乏/未验证的图形验证码,造成用户枚举例1

忘记密码处,首先验证用户身分,虽然此处有图形验证码,但是,图形验证码不刷新,即不是一次有效,通过拦截恳求,发现,并未对验证码进行验证。可以进行用户枚举

例2

手机验证码登陆处,在校准手机号是否是已注册的手机号时,绑定的手机号和未绑定的手机号,返回的响应包不同,而且未降低图形验证码校准,可对已绑定的手机号枚举。

例3

忘记密码处,图形验证码参数为imageValidCode,重复放包时,发现,验证码是一次有效的,经过尝试,发现删掉imageValidCode参数,可以绕开验证码的验证机制,从而进行用户枚举。爆破已注册的帐号。

提醒明晰,造成的用户枚举

一些错误,提醒明晰,比如登陆时,输入帐号、密码,均错误的情况下,提醒帐号错误;账号正确、密码错误时,提醒密码错误,从而可以进行枚举。

例4

登录处,输入错误的帐号,会提醒用户不存在;错误的密码,会提醒密码不正确。可依照提示,进行用户、密码枚举。

例5

关联账户绑定==》切换帐户处,根据loginname的值,返回对应帐号的绑定的手机、邮箱等个人信息。

当loginname为不存在的帐号时,响应包为“操作失败”,而且恳求包中,仅有loginname这一个参数,可以对其进行用户枚举。

例6

在密码更改功能,会验证原始密码和帐号的正确性,账号、密码都正确时resCode=00100000,账号错误resCode=00100001,msg为空。账号正确,密码错误时,msg提醒原始密码错误。可以进行枚举其他帐号、密码。比如,可以枚举密码为1111的帐号。

修复建议:

1、模糊提醒

2、增加复杂的图形验证码,对于登陆后可能存在的枚举,增加token,且一次性有效

3、限制恳求频度,错误一定次数,锁定帐号一段时间

任意用户密码重置

造成任意用户密码重置,主要发生在更改密码、忘记密码处,在逻辑上处理不严谨引起的。

比如,忘记密码处,先验证身分,验证通过才准许密码重置,前面验证很严谨,不能绕开,但是第三步不严谨,比如仅依据帐号来进行密码重置,那就很可能存在任意用户密码重置。

例1

忘记密码处,最后一步更新新密码处,通过抓包,发现仅是按照帐号进行密码更改,那么更改account为任意存在的帐号,就可以更改任意帐号的密码。

修复建议:

1、逻辑上要严谨,不能说上面校准如今要重置密码的人是A后,就觉得旁边的操作都是A的。还是要进行校准确认的。

附录

1、

2、%5Bvendor%5D=%E8%85%BE%E8%AE%AF

上一篇:如何让HR更容易用系统搜索到你的简历? 下一篇:没有了