漏洞概要 关注数(24) 关注此漏洞
缺陷编号:wooyun-2015-0155520
漏洞标题:你windows上开着QQ点了我的链接我就进了你的qq邮箱财付通等(任意腾讯xss拿qq的clientkey)
相关厂商:腾讯
漏洞作者: 呆子不开口
提交时间:2015-11-24 15:11
修复时间:2016-01-11 15:32
公开时间:2016-01-11 15:32
漏洞类型:设计缺陷/逻辑错误
危害等级:高
自评Rank:20
漏洞状态:厂商已经确认
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]
Tags标签: 无
漏洞详情
披露状态:
2015-11-24: 细节已通知厂商并且等待厂商处理中
2015-11-25: 厂商已经确认,细节仅向厂商公开
2015-12-05: 细节向核心白帽子及相关领域专家公开
2015-12-15: 细节向普通白帽子公开
2015-12-25: 细节向实习白帽子公开
2016-01-11: 细节向公众公开
简要描述:
你windows上开着QQ,然后点了我的链接,我就可以拿到你的QQ客户端的用于认证的clientkey,然后进入你的腾讯邮箱财付通等腾讯服务,利用条件仅需任意腾讯旗下产品的任意子域的xss即可,非QQ域的其他产品域也可。内有若干其他漏洞
详细说明:
整个利用过程会用到qq快速登陆功能的一些安全设计上的缺陷和几个xss漏洞
1、windows下qq的快速登陆功能的一些设计缺陷
首先,我们先来看看windows下qq客户端的快速登陆网页的流程
QQ软件会在本地开4300和4301(https使用)端口来让网页端调取,网页端快速登陆时,会先请求
用如上请求获取到当前登陆的QQ号后,用户点击快速登陆,会再请求
此请求会完成ptlogin2.qq.com域下的cookie的设置,有两个值,分别是clientuin和clientkey
设置完cookie后,再请求ptlogin2.qq.com域的如下url来完成对ptlogin2.qq.com域和qq.com域的认证cookie的设置,同时删除clientuin和clientkey这两个cookie值
最后跳到子服务的目标url,比如邮箱,这时候邮箱就是登陆状态的了
整个过程有些安全防护,比如QQ开的web服务只绑定了本地端口,并且有referer限制qq域和token校验,https://ssl.ptlogin2.qq.com/jump这个请求设置的cookie是httponly的,clientuin和clientkey在使用完后也删除了
但有如下问题:
快速登陆的主要获取clientkey的请求如下
一、这个请求的token校验没有经过服务端验证,直接就是看get参数里的pt_local_tk是否和cookie中的pt_local_token相等
这样的话,攻击者就可以更轻松的去伪造请求让用户快速登陆。而且,理论上本机localhost上的任何软件都可以很轻易的伪造请求来获取当前登陆qq的clientkey
二、set的cookie中clientuin和clientkey不是httponly的,虽然在设置完后,在正常流程中会被删除。但对攻击者来说,可以不走这个流程。所以clientuin和clientkey可能会被ptlogin2.qq.com域的xss偷走
三、qq绑定的接口支持多域名,如localhost.ptlogin2.qq.com,localhost.ptlogin2.paipai.com,localhost.ptlogin2.tenpay.com……等等十多个腾讯旗下产品的域名。导致攻击面增大
2、ptlogin2.qq.com域的一个存储xss
看完快速登陆的缺陷后,我们需要的就是一个ptlogin2.qq.com的XSS,这个xss可以伪造快速登陆请求让用户访问,然后再去偷clientuin和clientkey
我扶了扶镜框,发现一个:
这个页面会用innerhtml加载当前document.cookie,所以我们只要能在qq.com域的cookie中设置一些xss语句就可以了
而且这个页面也支持多域名,如ui.ptlogin2.paipai.com,ui.ptlogin2.tenpay.com,ui.ptlogin2.myapp.com,ui.ptlogin2.3366.com等
所以我们需要找一些接口,可以设置cookie。我找了一些可以设置cookie的接口,但是不是被waf拦截,就是有urlencode编码,利用起来很难
最后,只能求助xss了,找一个腾讯旗下任意产品的任意子域即可,然后往cookie中写xss
3、一个只能×自己的xss和一个自动登陆的csrf
我花了一个晚上也没找到一个比较好用的xss,赞一下腾讯的waf
我只找了一个只能×自己的xss,但可以配合一个自动登陆的csrf漏洞让用户登陆我们的账号,然后中招,然后去种我们的偷clientkey的xss进cookie
只能x自己的xss如下,编辑自己的帖子时会触发
这个xss支持chrome和Edge,IE貌似不支持,其他的我没测
无token保护的自动登陆的请求如下:
总结一下,攻击流程如下:
让用户自动登陆我们的账号,然后中了我们的self xss,然后往qq.com域写攻击xss语句。然后加载http://ui.ptlogin2.qq.com/assistant/troubleshooter.html,执行我们的cookie存储xss,然后ptlogin的xss往cookie中写一个假的pt_local_token,然后伪造快速登陆的流程,此时,clientuin和clientkey已在cookie中种下,然后我们的xss再去偷即可
使用clientkey可以登陆腾讯的所有网页服务,包括财付通等等……
此攻击的利用条件仅仅是需要任意腾讯产品域的任意子域的xss即可
漏洞证明:
修复方案:
修复方案都在我的详情描述中了
一些防护的细节一定要做好,任何小问题都可能会在攻击中被利用
版权声明:转载请注明来源 呆子不开口@乌云
漏洞回应
厂商回应:
危害等级:中
漏洞Rank:8
确认时间:2015-11-25 16:46
厂商回复:
非常感谢您的报告,问题已着手处理,感谢大家对腾讯业务安全的关注。如果您有任何疑问,欢迎反馈,我们会有专人跟进处理。
最新状态:
暂无