随着移动互联网和智能手机的快速发展,原本功能单一的手机号发生了很大改变。如今,似乎每个人的手机号都绑定了各种账号,例如支付宝、银行卡等重要的账号。手机绑定最主要的表现就是短信验证,目前因其便捷的验证方式被广泛使用。但与此同时,人们也为其安全性而担忧。

  因此,企业通过限定手机短信验证时间和加长验证字段的方式来提升短信验证安全性。加长的短信验证码增加了被暴力破解的难度,而且想要破解必须在短信验证码的有效时间内去做,所以限定短信验证码的有效时间也是提升安全性的手段。

  在手机短信验证码中,4位验证码尤其不安全。为什么这么说呢?攻击者可以通过输入掌握的手机号码,在未获取验证码的情况下,直接获得短信验证码,从而绕过手机短信验证的安全环节。一般手机验证短信是4位,也就是说为0000-9999,长度为10000,通过近10000次第穷举实现对密码的验证。具体我们一起看看下面这个验证过程就懂了。

  1.使用密码找回

  打开某企业信息机,如图1所示,在页面中有“密码找回”功能,本次要破解的密码用户为管理员admin账号,系统设计的目的是根据用户名和手机号码短信验证来确定是用户本人,但其设计和验证过程存在缺陷,使得攻击者可以暴力破解验证码,重新设置或者获取指定用户的密码。如图2说是,在找回密码用户中输入“admin”。

 

手机短信验证码需要限定时间

图1密码找回

 手机短信验证码需要限定时间 

图2设置密码找回的用户

  2.设置密码找回的手机号码

  在密码找回中设置密码找回的手机号码,如图3所示,设置完毕后,需要用户输入一个验证码来验证。

  手机短信验证码需要限定时间

图3输入验证码进行验证

  3.设置BurpSuite密码变量

  (1)设置代理并实施拦截

  使用BurpSuiteProxy(代理)—拦截HTTP/S的代理服务器,也即显示为“Intercept is on”,它可以作为一个在浏览器和目标应用程序之间的中间人,允许进行拦截、查看以及修改在两个方向上的原始数据流。在找回密码页面输入验证码“1234”并使用本地代理抓取post包,如图4所示,可以看到txtPassWord=1234

 手机短信验证码需要限定时间 

图4设置代理并实施拦截

  (2)设置破解变量

  发送到Intruder(入侵)一个定制的高度可配置的工具,对web应用程序进行自动化攻击,如:枚举标识符,收集有用的数据,以及使用fuzzing 技术探测常规漏洞。将该数据包发送到Intruder,如图5说是,在验证码增加一个变量$1234$。

手机短信验证码需要限定时间  

图5设置一个入侵(破解密码)变量

  (3)设置Playloads

  在入侵页面上单击“Payloads”,如图6说是,其缺省初始参数为字母和数字,实际情况要根据当前渗透测试环境自行判断和设定。在本例中由于验证码是长度为4位的数字0000-9999,因此Min Length(最小长度)和Max Length(最大长度)均设置为4.

手机短信验证码需要限定时间  

图6设置PayLoads

  当前网站验证码经测试为数字,因此将Character set设为:0,1,2,3,4,5,6,7,8,9。Payload count:有效的验证码总数量为10000,设置完毕后如图7所示。

手机短信验证码需要限定时间  

图7设置有效载荷、字符串和长度

  (4)设置线程数

  单击“Options”,在“Number of threads”中设置线程数为100,这里可以根据情况,可以是1-10000,但一般不会设置太多,50-100为比较适宜的数字。

手机短信验证码需要限定时间  

图8设置破解线程数

  4.执行暴力破解

  单击菜单中的“Intruder”上的“Start attack”进行暴力破解尝试,如图9所示,其破解结果显示如下,破解成功的值,其Status会不一样,错误的值是200,正确的值为302。

手机短信验证码需要限定时间  

图9查看破解进展

  5.破解成功

  通过查看破解反馈回来的状态值,知道本次破解的Payload:1245,HTTP状态码Status为302,明显是一个跳转。返回的Length长度为451 。正确的验证码为1245,我们尝试输入,发现验证码正确,如图10所示,成功破解用户密码找回的手机密码验证短信码,从而获取管理员的密码。

手机短信验证码需要限定时间  

图10成功获取密码

  综上所述,我们可以看到,通过burpsite可以方便的获取指定账号的密码,现在很多涉及登录用户入口的地方都涉及了多种找回方式,一旦处理不当即有可能造成巨大的安全隐患。因此,笔者建议可以从以下一些方面进行安全防范:

  (1)短信验证码验证时间需要设置得更短,应该在30秒以内。由于需要穷举10000次,网络发包时间较短,尽量避免包从同一个地址的多次提交。

  (2)将短信验证码由4位增加到6位,且使用数字+字母的方式,增加了破解的难度。

写在最后

  蓝鸥Web安全攻防课程体系来自企业、白帽子专家团和高校的高度结合;完整的课程体系 ,攻守兼备的企业实战,培训能写工具,能渗透的大牛!

蓝小鸥