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

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

缺陷编号:wooyun-2015-0110075

漏洞标题:PPTV(PPlive)客户端批量刷会员漏洞

相关厂商:PPTV(PPlive)

漏洞作者: 问题来了

提交时间:2015-04-24 11:29

修复时间:2015-07-23 15:00

公开时间:2015-07-23 15:00

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

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-04-24: 细节已通知厂商并且等待厂商处理中
2015-04-24: 厂商已经确认,细节仅向厂商公开
2015-04-27: 细节向第三方安全合作伙伴开放
2015-06-18: 细节向核心白帽子及相关领域专家公开
2015-06-28: 细节向普通白帽子公开
2015-07-08: 细节向实习白帽子公开
2015-07-23: 细节向公众公开

简要描述:

嘿嘿,可以量产会员.....

详细说明:

pptv最近和s6搞了活动,送会员...
俺就在想,他是肿么判断俺的手机是不是s6咧,非常有可能是通过Build.MODEL

build.png


于是俺把自己N5的model改成SM-9250了.

adb shell cat /system/build.prop |grep model
ro.product.model=SM-G9250


果然进去就可以领到土豪码了,这设计太low了.

pp-1.png


pp-2.png

漏洞证明:

这样就完了么?如果想批量刷会员了.
接下来抓包看看.

post.png


哟呵,改包不行会提示签名失败.通信做了签名,跟追下tk这个绝逼是HMAC的参数

sign.png


这段代码印证了很多猜想,包括之前的build.model.现在HMAC的算法也出来了.只是简单的拼接字符串后两次md5.

localJSONObject.put("tk", MD5.MD5_32(MD5.MD5_32(str + Build.MODEL + "C42F31B008BF257067ABF115E0346E292313C746B3581FB0")));


md5.png


同样也解决了批量了问题,pplive判断是否同一台设备是通过下面这段代码

String str = UUIDDatabaseHelper.getInstance(this.context).getUUID();
localJSONObject.put("udid", str);


屏幕快照 2015-04-24 11.14.48.png


我擦咧,这不就是imei么,只要hook住这个函数的返回值就可以轻松批量了,当然这是我这个app安全人员的看法,其实pplive根本没对设备id的合法性进行效验(只验证了唯一性)
所以是可以在PC上写脚本一键刷的..这里我只给出如何在手机上批量刷的poc(见测试代码)

device1.png


device2.png


device3.png


修复方案:

这样需要客户端同步修复的感觉很麻烦咧.

版权声明:转载请注明来源 问题来了@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:10

确认时间:2015-04-24 14:58

厂商回复:

感谢反馈,处理中.

最新状态:

暂无