“短信验证码”的常见漏洞

您所在的位置:网站首页 验证码一般都是几位数的 “短信验证码”的常见漏洞

“短信验证码”的常见漏洞

2024-07-14 01:44| 来源: 网络整理| 查看: 265

简单介绍了关于“短信验证码”相关的部分常见漏洞,希望可以给读者带来一点思维上的突破。 全文小结:

本文内容篇幅较长,且因各种因素,本文不便使用实战场景截图,敬请谅解。 本文首先讲解了常见场景下的业务逻辑运行流程,此部分内容可方便读者对后面的漏洞部分进行理解。 后半部分主要讲解了“短信验证码”相关的部分常见漏洞:漏洞详情请见目录。

简介:

短信验证码是通过发送验证码到手机的一种有效的身份验证系统。通过短信验证码,可以比较准确和安全地验证用户的正确性。

验证码相关——常见的业务逻辑运行流程: 场景示例:通过手机号登录账户。

一般而言,商城页面、套餐业务订购页面等的登录方式包含:通过个人手机号登录或注册。大致流程如下:

用户输入手机号。 用户点击“发送验证码”按钮。 网站前端通过用户输入的手机号,来获取要发送验证码的目标——手机号号码。 注:网站一般会进行简单的校验来确认是否为正常的手机号。比如手机号的位数是否正常或手机号的参数值的类型是否为纯数字。 网站后台给此手机号所在的手机,发送1条短信验证码。 手机接收到验证码。 用户输入验证码,点击“登录”按钮。 网站后台校验短信验证码,校验后的结果返回网站前端。 校验结果正确则正常跳转页面,校验结果错误则返回登录页面。 如果校验结果正确,在跳转时会从服务器获取身份凭证(cookie或某一请求包中的参数ID),来以此身份凭证进行浏览页面。 “登录账户”业务逻辑运行流程的漏洞挖掘思路举例

在理清了业务运行流程的基本逻辑之后,我们可以基于此流程来进行尝试性的漏洞挖掘。

1. 短信轰炸 效果:

在10秒内收到大量的骚扰短信,对某个用户造成不良体验。

常见利用思路:

流程说明: 通过常规步骤中的1-5,即可进行验证。 关键步骤:3-4。 3.网站前端通过用户输入的手机号,来获取要发送验证码的目标——手机号号码。

通过 Burp抓包(中间人代理)的方式,截取第3步发出的正常请求包,然后把请求包发送至Repeater模块。

4.网站后台给此手机号所在的手机,发送1条短信验证码。

通过Burp的Repeater模块,网站后台对同一个手机号所在的手机,在10秒内发送大量的短信验证码。如果短信验证码均正常发送(短信验证码每条发送的间隔时间未被限制)到目标手机上,则成功实现 “短信轰炸” 的效果。

2. 短信验证码发送接口可重复调用漏洞 效果:

在1分钟内批量调用“验证码发送接口”,对目标用户群体依次发送大量验证码,对用户造成不良体验。并且对公司造成一定的经济损失(1条短信0.1RMB),请求速度过快则可能导致“短信验证码发送接口”所在的服务器宕机(类似DDos:利用大量合法的分布式服务器对目标发送请求,从而导致正常合法用户无法获得服务)。另一方面,可能由于服务器配置原因,导致服务器在5XX状态下,泄漏内网部分敏感配置信息(看运气)。

常见利用思路:

流程说明: 通过常规步骤中的1、2、3、4、5,即可进行验证。 关键步骤:3、4。 3.网站前端通过用户输入的手机号,来获取要发送验证码的目标——手机号号码。

通过抓包的方式,截取第3步发出的正常请求包,然后对请求包中的手机号进行修改,通过Burp的Intruder模块使每次请求的手机号成为不同的目标。

4.网站后台给每个不同的目标所在的手机,在10秒内 分别发送 1条 短信验证码。

如果短信验证码正常发送到目标手机上(短信发送的间隔时间未被限制),则成功实现 “短信验证码发送接口可重复调用” 的效果。

简单来说,速率上限决定漏洞利用效果的上限,实际利用程度建议把握好尺度。

“1. 短信轰炸” 和 “2. 短信验证码发送接口可重复调用漏洞”的异同: 相同之处:

都是借用了短信验证码发送接口,实现的漏洞利用效果。

不同之处:

“短信轰炸”针对同一手机号进行轰炸,如果限制同一手机号的“验证码请求速率”,就可以避免此危害。 “短信验证码发送接口重复调用漏洞”针对大量群体(每个不同的手机号)进行“轰炸”。须要限制“短信验证码发送接口的发送速率”来进行限制,才能避免此危害。

3. 短信验证码接口爆破漏洞 效果:

通过固定的某一手机号,进行穷举爆破验证码测试,只要此短信验证码与“手机号正常发送的验证码”一致(且短信验证码多次验证失败不失效),就可以正常登录。相当于绕过了短信验证码验证身份的这一步骤,不需要验证码也可登录。

常见利用思路:

流程说明: 通过常规步骤中的6、7、8,即可进行验证。 关键步骤:6、7。 6.用户输入验证码,点击“登录”按钮。

此处进行抓包,修改目标为“某一范围内的验证码”,进行批量爆破。只要此范围内的手机号对应的验证码有一个是8546,即可实现登录效果。

7.网站后台校验短信验证码,校验后的结果返回网站前端。

这一步作为响应包验证结果。

8.校验结果正确则正常跳转,校验结果错误则返回登录页面。

4. “短信验证码对应手机号” 可暴力破解 效果:

通过固定的某一短信验证码(如8536),进行穷举爆破手机号测试,只要此短信验证码与“手机号正常发送的验证码”一致,则可以正常登录。漏洞危害较低,纯粹是大基数下拼运气。但如果是登录的话,也类似于平行越权了(四位数验证码体验最佳)。

常见利用思路:

流程说明: 通过常规步骤中的6、7、8,即可进行验证。 关键步骤:6、7。 6.用户输入验证码,点击“登录”按钮。

此处进行抓包,修改目标为“某一范围的手机号”,进行批量爆破。只要此范围内的手机号对应的验证码有一个是8536,即可实现登录效果。

7.网站后台校验短信验证码,校验后的结果返回网站前端。

这一步作为响应包验证结果。

8.校验结果正确则正常跳转,校验结果错误则返回登录页面。

“3. 短信验证码接口爆破漏洞” 和 “4. ‘短信验证码对应手机号’ 可暴力破解”的异同: 相同之处:

都是借用了登录按钮的验证接口,实现的漏洞利用效果。

不同之处:

“短信验证码接口爆破漏洞”针对同一手机号进行“爆破”,如果限制同一手机号的“短时间内的验证次数的总数”,就可以避免此危害。 “短信验证码发送接口重复调用漏洞”针对大量群体(每个不同的手机号)进行“爆破”。须要限制“短时间内大批量验证短信验证码的IP”来进行限制,才能避免此危害。

5. 校验结果的业务逻辑漏洞 效果:

通过更改网站后台的校验返回结果,进行绕过“校验成功后跳转”这一步骤,实现绕过“校验成功”这一步骤,直接进行用户登录。

常见利用思路:

流程说明: 通过常规步骤中的7、8、9,即可进行验证。 关键步骤:7、8。 7.网站后台校验短信验证码,校验后的结果返回网站前端。

此处进行抓包,如果校验结果为明文(如某一参数值:true/false),则更改false为true,即可实现绕过“校验成功”这一步骤,直接使用错误的验证码实现账号的登录效果。

8.校验结果正确则正常跳转页面,校验结果错误则返回登录页面。

此处作为验证结果校验利用是否成功。

9.如果校验结果正确,在跳转时会从服务器获取身份凭证(cookie或某一请求包中的参数ID),来以此身份凭证进行浏览页面。

6. 登录账户的平行越权漏洞 效果:

通过更改身份凭证,进行更改获取“身份凭证”这一步骤的结果,实现“任意用户登录”这一效果。

常见利用思路:

流程说明: 通过常规步骤中的7、8、9,即可进行验证。 关键步骤:8、9。 7. 网站后台校验短信验证码,校验结果返回网站前端。 8. 校验结果正确则正常跳转,校验结果错误则返回登录页面。 9. 如果校验结果正确,在跳转时会从服务器获取身份凭证(cookie或某一请求包中的参数ID),来以此身份凭证进行浏览页面。

此处进行抓包,如果身份凭证为明文的结果(如某一参数值:0981),更改身份凭证0981为0980,即可实现更改“原手机号”为“任意手机号”,直接使用个人手机号登录其他用户手机号的登录效果。 注:新页面的登录用户名是否更改,可以作为作为利用是否成功的标志。

“5. 校验结果的业务逻辑漏洞” 和 “6. 登录账户的平行越权漏洞”的异同: 相同之处:

都是更改服务器返回的结果,实现的漏洞利用效果。

不同之处:

“校验结果的业务逻辑漏洞”针对“校验结果的明文"更改后的效果。如果对校验结果部分进行强加密,就可以避免此危害。 “登录账户的平行越权漏洞”针对“登录成功后获取的用户凭证的明文”更改后的效果。如果对用户凭证部分进行强加密,就可以避免此危害。

漏洞挖掘总结:

理清正常业务的运行流程,依据正常的业务流程,尝试“可能存在漏洞的”业务功能。 本人才疏学浅,全文如果谬误之处,敬请斧正。

特此声明:

本文以上内容仅作为技术交流使用,如有违反行为,本文作者概不负责。 本文来自博客园,作者:怀玉。 转载请注明原文链接:https://www.cnblogs.com/--l-/articles/17928157.html

本文来自博客园,作者:怀玉,转载请注明原文链接:https://www.cnblogs.com/--l-/p/17928162.html



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3