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

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

缺陷编号:wooyun-2015-0125060

漏洞标题:饿了么逻辑漏洞之免费吃喝不是梦

相关厂商:饿了么

漏洞作者: 计算姬

提交时间:2015-07-07 10:40

修复时间:2015-07-29 16:12

公开时间:2015-07-29 16:12

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

危害等级:高

自评Rank:20

漏洞状态:厂商已经修复

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-07-07: 细节已通知厂商并且等待厂商处理中
2015-07-07: 厂商已经确认,细节仅向厂商公开
2015-07-17: 细节向核心白帽子及相关领域专家公开
2015-07-27: 细节向普通白帽子公开
2015-07-29: 厂商已经修复漏洞并主动公开,细节向公众公开

简要描述:

饿了么-中国最专业的网上订餐平台

详细说明:

自认为思路还是屌屌的,没见过类似的漏洞啊,能打雷么~
问题是在饿了么早餐的地方,饿了么早餐真心方便啊
早餐最近出了个活动,可以领10元抵用券

11.png


输入信息后,领取成功

11.png


这一步其实是收集信息,后面的一个请求才是真的申领红包抵用券的请求
测试发现,一个手机号只能领2个红包

11.png


于是就开始fuzz
1)正常情况,只能2次,无法多次获取红包

{"flag":2,"phoneNo":"18xxxxxxx33"}


{"status":"ERROR","data":null,"message":"该用户最多只能领取2次"}


2)测试是否仅对phoneNo做校验,在手机号后面加字母测试

{"flag":2,"phoneNo":"18xxxxxxx33ff"}


{"status":"SUCCESS","data":"获取成功","message":null}


是可以发送成功的,只是因为手机号错误的原因,我们收不到短信
3)那么思路就来了,只要phoneNo每次不同,绕过服务端的校验,同时,该值作为发送短信的目标又是真实可达的,就好了
也就是说,服务端直接检验phoneNo是否超过2次,同时不经过处理,就直接丢给短信发送平台进行红包短信发送(这是我猜的)
最容易想到的就是手机号前面加86了

{"flag":2,"phoneNo":"8618xxxxxxx33"}


发送成功,手机也成功收到短信,这样一个手机号就有4个红包了
4)那再测试手机号前面加+86

{"flag":2,"phoneNo":"+8618xxxxxxx33"}


手机木有收到短信,该方法无效
5)那再测试第一种手机号后面加非数字的情况

{"flag":2,"phoneNo":"18xxxxxxx33!"}


手机也木有收到短信,不过我自己手机测试,是可以发送成功的啊

11.png


如上图,自己测试,是能收到短信的,不知道平台为嘛不行
6)还是那样,只要phoneNo的值能让平台成功发送短信即可,那我又想到了使用小号
用的阿里的小号

11.png


{"flag":2,"phoneNo":"13216994045!"}


成功收到小号转发过来的短信

11.png


这样结合上面的两个成功的方法,就可以获得8个红包啦~~
阿里小号每个月可以有3次免费临时小号的使用
那么就可以获得4*(1+3)=16个红包啦~
感觉红包应该够用了啊,但是我不是为了福利,是为了安全啊,继续看看还有没有其他问题
7)那继续测,想着手机群发的时候,貌似以逗号,分隔号码,测试下

{"flag":2,"phoneNo":"18xxxxxxx33,138xxxxxxx"}


手机没有收到短信,此时在这个点也fuzz的很长时间,没有用,,就不多说了
8)后来又想到分号;作为分隔

{"flag":2,"phoneNo":"18xxxxxxx33;138xxxxxxx"}


测试发现,只有分号前面的手机号可以收到短信,不过目的已经达到了,保持分号前面手机号不变,分号后面任意内容,即可无限制获取红包抵用券的短信

漏洞证明:

总结一下
正常情况可以成功

{"flag":2,"phoneNo":"18xxxxxxx33"}


手机号前面加86可以成功

{"flag":2,"phoneNo":"8618xxxxxxx33"}


短号,小号,可以转发短信的。例如阿里小号,亲情小号等

{"flag":2,"phoneNo":"13216994045!"}


分号分隔可以成功,可无限获取红包

{"flag":2,"phoneNo":"18xxxxxxx33,138xxxxxxx"}


11.png


3天的早餐只要5毛钱,给饿了么点个赞啊

11.png

修复方案:

phoneNo的值要经过提纯再进入短信发送平台进行发送

版权声明:转载请注明来源 计算姬@乌云


漏洞回应

厂商回应:

危害等级:低

漏洞Rank:3

确认时间:2015-07-07 11:03

厂商回复:

漏洞已经确认,感谢你对饿了么安全的关注

最新状态:

2015-07-29:漏洞已修复。谢谢你们的关注。