短信验证码和安全那点事 – 作者:12306Br0

常见漏洞

一、  短信轰炸

短信发送接口平台未设置上限或时间间隔,攻击者利用发送短信的接口,短时间内发送大量垃圾短信给指定手机号码。使用抓包软件可以重放请求对于后端没有做限制的网站即可达到短信轰炸的效果。

图片.png

漏洞预防

主要是针对单用户的短信轰炸,即重放发送请求且phonenum为一个值。

①设置发送间隔,即单一用户发送请求后,与下次发送请求时间需要间隔60秒。

②设置单用户发送上限,即设置每个用户单位时间内发送短信数的上限,如果超过阈值就不允许今天再次调用短信接口(阈值根据业务情况设置)。

漏洞实例:http://bobao.360.cn/snapshot/index?id=12764

二、无效验证

有验证码模块,但验证模块与业务功能没有关联性,此为无效验证,一般在新上线的系统中比较常见。

1. 获取短信验证码后,随意输入验证码,直接输入两次密码,可成功更改用户密码,没有对短信验证码进行验证,可能导致CSRF等问题。

图片.png

2.任意用户注册

       第一步,利用自己的手机号接收验证码进行验证,下一步跳转到一个设定密码的页面

       第二步,抓包,篡改手机号,使用任意手机号进行注册

       问题剖析:业务一致性存在安全隐患,身份验证与密码修改过程分开,验证无效。

图片.png

3. 任意手机号码绑定

        第一步,按照正常程序进行注册,注册成功之后,在个人资料中修改绑定手机号码。

        第二步,抓包,修改绑定手机号码,新手机号任意填写,获取短信验证码后,输入任意验证码,绑定任意手机号码。

图片.png

三、客户端验证绕过

     客户端验证是不安全的,可能导致任意账号注册、登录及重置任意用户密码等一系列问题。
    1.直接返回短信验证码
      第一步,按照正常注册流程走,开启抓包工具,抓到数据包后。
      第二步,放包,查看返回包中是否包含短信验证码。
图片.png
     漏洞实例:http://bobao.360.cn/snapshot/index?id=12764
     2.返回密文短信验证码
        测试方法同上
     3.本地拦截替换返回包
       第一步:按照正常业务流程进行注册、修改密码、密码找回等业务操作、开启burpsuite抓包。
       第二步:观察返回包中是否包含状态码,如Y与N、true与false、Error与Success等等,尝试修改状态码,放包,观察返回包结果。
       同样,也可以先按照正常业务流程进行业务操作,同时开启burosuite抓取正常数据包,记录下来。接着再进行测试。
2.png

四、验证码与手机号未绑定

一般来说短信验证码仅能使用一次,验证码和手机号未绑定,验证码一段时期内有效,那么就可能出现如下情况:

     1、A手机的验证码,B可以拿来用;

     2、A手机在一定时间间隔内接到两个验证码,都可以用。

测试步骤:

     第一步:使用自己手机号收取验证码

     第二步:将自己的验证码和对方的手机号填上,下一步设置新密码

五、验证码爆破

短信验证码一般由4位或6位数字组成,若服务端未对验证时间、次数进行限制,则存在被爆破的可能。

欢迎加入我们,临时安全团队!!!

来源:freebuf.com 2018-07-05 12:14:36 by: 12306Br0

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论