2019-05-21 14:07:0311448人阅读
一、背景
手机验证码往往是面对用户的重点业务,那么本期就关于手机验证码所出现的安全问题,做个小小总结,文章如有不完善之处,欢迎各位同学共同交流讨论。
二、短信轰炸
网上之前会曝出一些关于“短信轰炸机”的新闻。
举两个生活中的小场景:
1. 你在淘宝上给了别人差评,随后几天遭到若干天的短信轰炸。
2. 你工作/上学时,跟某些人闹了矛盾,事后半夜你遭到各种电话轰炸。
原理解析:
下面我们以一个例子来更方便的讲解该漏洞。
(以下所有漏洞已经通报厂商,并已修复,读者切勿尝试)
这是某央企商超业务的公众号,让我在公众号绑卡。
我们点击 【我的账户】==》获取验证码:
这里我们可以通过burpsuit抓个包。
返回了Unicode编码,我们这里解码。
既然确定可以发送成功的话,那我们不断的GO,不断的重发该数据包。
如果后端没做校验的话,就造成了短信轰炸,如图:
这时候我们已拿到手动轰炸的效果,这就是轰炸机雏形。
疑问1:那么如何优雅的做一个小小的轰炸机呢?
分析好获取验证码的请求包,使用Python的request库,发送请求。
疑问2:加个while true死循环,会一直发吗?薅羊毛,可能会被发现的吧?
原理上,如果对方没有做反制策略的话,你手机应该是不会消停了,但薅死这只羊,肯定会发现啊。会把厂商的短信费全部花完….
疑问3:有的不只是手机验证,也有的是电话轰炸呢?
其实也同理,只不过有的买的是短信业务,一部分买的是电话验证码业务。当然不排除人工打电话或者其他的方式..
Warning: 各位看官请在遵循《网络安全法》的情况下,开展学习与实践活动。
三、验证码过短,造成的任意用户登录
漏洞主要表现是,验证码发送的常常是四位的纯数字,四位数字的话,基本上几分钟就可以爆破出来验证码是什么了…
下面我们拿某传媒平台来举个栗子。该传媒平台属于咨询类行业的二级梯队。日活跃流量上百万了。发现在账户登录(手机验证码登录)处,可以获取验证码。(具体抓包细节上章我们说过)发送验证码之后发现验证码可能存在暴力破解。
30分钟有效时间,绰绰有余了。这里,输入手机号,验证码为1111。
发送到intruder模块后,准备开始暴力破解。
从结果上看Length进行排序,验证码4112 payload命中。
所以短信验证码可被暴力破解,可登陆任何用户账号。
当然了,如果这时候能搞到内部人员的手机号之类的话,获取到web系统权限自然也有可能啦。
Warning: 各位看官请在遵循《网络安全法》的情况下,开展学习与实践活动。
四、验证码Response回显
通过前两章的内容,我们已经可以看到,验证码的不安全逻辑已经造成了严重的安全问题。 那么还有哪些高危问题值得我们关注呢?
想来想去也就剩下 验证码Response回显问题了….
有的研发人员想偷个懒,逻辑没有做清楚。
当你发送验证码的请求包之后…..甚至会在Response包里面看见验证码。
下面我们拿某学术平台,平台有两万余名会员,且大多会员来自全国各大高校教师。来举个例子:
发送获取验证码请求后,我们来抓到以下的返回包:
对….甚至帮你把爆破的事给你省了,直接在返回报里反馈了给你发送的短信所以说,没事抓个包看看…..有可能门口就有个高危等着你报呢。
Warning: 各位看官请在遵循《网络安全法》的情况下,开展学习与实践活动。
五、总结
手机验证码是整个web系统的入口处较为重要的功能业务,负责用户的注册与密码的找回等相当重要责任。所以未来在做安全渗透的时候,小伙伴们不妨可以在手机验证码里看一看,也许会有意外收获与惊喜。
本文作者EEE,转自嘶吼,原文地址: https://www.4hou.com/mobile/16442.html