短信轰炸之横向轰炸和纵向轰炸

白帽子您好,横向轰炸不收,故此忽略,感谢提交。如有更多疑问可咨询平台客服小姐姐(QQ:3459476393),非常感谢对漏洞盒子与互联网安全的支持,对此给您带来的不便我们深感抱歉。

 

收到上面一条信息,

才知道短信轰炸也分横向轰炸和纵向轰炸。

从字面上猜猜,大概如下意思。

就我遇到的,目前可被横向轰炸的短信接口还是很多的,尤其是在web页面中,不对发短信接口做一些必要的限制,

导致存在被无限调用和滥用的情况。

由于手机号格式还算比较固定,以1打头,中文11位等,可用代码、存储过程瞬时批量生成100w条手机号

现有的工具比如Jmeter,将生成的手机号通过csv配置文件导入,然后通过http请求发送。还可以开始一定的线程数,分分钟给100w个手机号发短信。

假设一条短信1分钱,那分分钟1w元就被人发短信发掉了,还都是垃圾短信,影响收到的人群。算是也不小啊~~【好吧只能说我穷,1w元我觉得很多啊,我能买好多好多吃的,穿的,玩的~~~】

 

纵向轰炸,我也遇到过,现在一些新的api直接调运营商接口,由运营商返回,这种反而较少;倒是web页面中的,尤其老的web系统,代码页面掺杂在一起,通过一些.ation,validateRegisterOTP.do方法发SMS的比较多。

无意看到网上有很多短信轰炸机的案例,某人为了整蛊别人,在页面上填写别人的手机号,导致别人不停地收到短信,而且收短信的短信发送号码不固定,想拉黑名单都不可以。关机又怕错过重要电话。何必啊~~

看了短信轰炸机的原理,有的人调用纵向轰炸接口,有的是横向接口,集成了网络上许多的发短信的接口~~

作为测试,只能说,发短信接口只有目的的,为了验证你的手机号码正确且真实存在,不能只满足这样的功能,还要防机器人,加上一些限制,不能将自己的发短信方法变成别别人利用的工具。

测试不能只测功能,要有想法。

 

 

短信验证码: 

发送SMS:既要保证给指定手机号发送短信;又要保证不能被任意调用,随便发送短信;默认需要添加的限制: 同一手机号码一天5次,手机号码位数限制,手机号码1打头,(132,138,139,158,159,171,177,181,189,199)

横向和纵向不能随意调用

验证SMS:短信验证码不能被伪基站截取;短信验证码验证次数做限制,不能无限次验证。做项目伪基站的事你保证不了,短信验证的次数,比如下面的,短信运营商可以做,是否自己也需要做?

而且早期的项目,运营商是没有这个限制的。所以早期的项目,SMS被滥用的情况比较多。

 

总结一下短信验证码常见的漏洞:

1. 发送短信验证码的前提

  1. 在页面上添加图文验证码,只有正确通过图文验证码后,方可给输入的手机号发送短信

    这边就要注意一个问题,图文验证码一般缓存在session中,必然只能用一次,通过之后要清除,否则同一个图文验证码既可以给A用,又可以给后面BCD等等人群使用

    如果不设置图文验证码,比如现在很多的网站,会员注册和登录,都是直接通过手机号+短信验证码来操作,但是同一设备不会允许你发送很多次短信,比如第五次发送短信验证码的时候,弹出图文验证码框框

 

2. 发送短信验证码

  短信验证码发出去了,不允许进行重复点击发送,然而很多系统是在前端js实现的;在.action/validateRegisterOTP.do方法未做限制,绕过前端,便可无限发送短信了

  如果发送短信验证码前提有图文验证码这样的限制,重发短信验证码,是需要再次填写正确的图文验证码的

  如果没有图文验证码的前提,发送短信验证码的方法,需要添加判断,是否一分钟以内只能发送一条短信【这块短信运营商也可以操作,之前要说明】

 

 

 

3. 短信验证码的验证

  1. 短信验证码发出去了,但是操作的时候,未与业务功能关联,解释输入错误的验证码也能正常操作;这种验证码形同虚设。

  2. 短信验证码发出去了,chrome 浏览器发开F12, 可以看到返回信息,返回信息中含有了发出去的明文验证码; 这种验证码对开发和it打交道的人来讲,贻笑大方。

  3.短信验证码发出去了,短信验证码存在session中,原来是手机号11111111111的人发出去的验证码,手机号重新填写成22222222222,验证码输入收到的验证码,发现2222用户注册成功。这种验证码也。。。。

  4. 短信验证码发出去了,短信验证码和手机号进行绑定了,这时候一般是将验证码存DB了

      1. 验证的时候,如果用户第一次输入的验证码无效,是否可以立即输入新的短信验证码,短信验证码是否必须重新获取

      2 短信验证码发出去了,用户收到短信“1分钟内有效”,“30分钟内有效”,系统是否真的做了时效的限制

      3. 用户给自己发送了多条短信验证码,是否每次都到的短信验证码一模一样

      4. 用户给自己发送了多条短信验证码,每次不一样,验证的时候,是否必须用最新的一条

      5. 用户验证短信验证码,是否有次数的要求,短信验证码也是很固定的,一般是4位数字,或者6位数字,若不做次数的限制,用工具总是可以很快地可以试出正确的那个验证码