短信验证码漏洞(部分)

911 阅读3分钟

1. 验证码爆破

条件:

  • 服务端未对验证时间与次数做出限制

方法:

  • 使用bp抓包,暴力破解(四位一般可单机跑出,六位很难需要多端爆破)

2. 验证码回显

漏洞原理

在正常的验证码验证流程中,用户输入验证码后,服务器会对验证码进行验证,并返回验证结果给客户端。而验证码回显漏洞则是指服务器返回验证结果时,将用户输入的验证码或服务器端生成的原始验证码也一同返回给了客户端。这可能是由于开发人员在编写代码时,不小心将验证码相关的信息包含在了响应数据中,导致验证码被泄露。

方法:

  • 使用bp抓包,查看回显的响应数据包是否包含验证码

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

漏洞原理

正常情况下,系统应在用户请求验证码时,根据用户输入的手机号生成唯一对应的验证码,并将其与该手机号关联存储在服务器端。但如果系统设计不完善,生成的验证码可能没有与特定手机号进行严格的绑定,或者在存储过程中出现错误,导致验证码与手机号的对应关系不明确。即A手机收到的验证码B可以使用。

漏洞危害

  • 用户信息泄露:攻击者可利用漏洞获取用户账号,进而访问用户个人信息,如姓名、身份证号、地址等,造成用户隐私泄露。
  • 账号被盗用:攻击者能够修改用户密码,盗取账号,进行恶意操作,如发布违法信息、诈骗等,给用户带来名誉和财产损失。
  • 短信轰炸:结合其他漏洞,可对手机号进行短信轰炸攻击,干扰用户正常生活,甚至可能导致手机系统崩溃。

方法:

  • 使用A的验证码注册受害人B的账号。

4. 修改返回包绕过验证码

漏洞原理

攻击者利用网络拦截工具,如 Burp Suite 等,在客户端与服务器进行通信时,拦截服务器返回的包含验证码相关信息的数据包。然后,攻击者修改数据包中的验证码验证结果字段或相关标志位,将原本验证不通过的结果篡改为通过,或者直接删除与验证码验证相关的部分,使客户端认为验证码已经通过验证,从而绕过验证码的限制。

方法:

  • 根据之前分析的结果,对拦截到的数据包进行修改。例如,如果发现服务器仅依赖 “captcha_result” 字段来判断验证码是否通过,可以将该字段的值从 “false” 修改为 “true”,或者直接删除与验证码验证相关的错误信息字段,使客户端认为验证码验证成功。

5. 验证码转发

漏洞原理

  • 请求包篡改:有些开发人员在接收手机号时候采用的数组接收,或者是遍历手机号,未对手机号进行校验,可以同时发送验证码到两个手机,从而实现绕过

方法:

  • 尝试篡改请求包格式:

eg.

{0667319D-44AE-4609-8659-CBE7D17DDDBE}.png 可能造成任意用户注册等危害