漏洞概要
关注数(24)
关注此漏洞
漏洞标题:你windows上开着QQ点了我的链接我就进了你的qq邮箱财付通等(任意腾讯xss拿qq的clientkey)
相关厂商:腾讯
提交时间:2015-11-24 15:11
修复时间:2016-01-11 15:32
公开时间:2016-01-11 15:32
漏洞类型:设计缺陷/逻辑错误
危害等级:高
自评Rank:20
漏洞状态:厂商已经确认
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
厂商回复:
非常感谢您的报告,问题已着手处理,感谢大家对腾讯业务安全的关注。如果您有任何疑问,欢迎反馈,我们会有专人跟进处理。
最新状态:
暂无
漏洞评价:
评价
-
2015-11-25 16:48 |
zhchbin ( 实习白帽子 | Rank:72 漏洞数:19 | 要走得再远一些!)
-
2015-11-25 16:49 |
zeracker ( 普通白帽子 | Rank:1077 漏洞数:139 | 多乌云、多机会!微信公众号: id:a301zls ...)
进了这词语明显不符合伟哥的风格,一般都是 『上了』两字用的比较多
-
2015-11-25 16:56 |
Format_smile ( 普通白帽子 | Rank:279 漏洞数:104 | ···孰能无过,谁是谁非!)
进了这词语明显不符合伟哥的风格,一般都是 『上了』两字用的比较多
-
2015-11-25 17:03 |
大师兄 ( 路人 | Rank:29 漏洞数:7 | 每日必关注乌云)
test,从邮箱发现了一个小伙伴帐号,测试发个评论。
-
2015-11-25 17:08 |
迪南 ( 普通白帽子 | Rank:185 漏洞数:47 | 我真是一个大菜比)
-
2015-11-25 17:10 |
Mark0smith ( 实习白帽子 | Rank:99 漏洞数:36 )
-
2015-11-25 17:12 |
呆子不开口 ( 普通白帽子 | Rank:370 漏洞数:34 | 求各种兼职)
@zhchbin 就是,给9个又怎么了,是不是优客劳徳科技技术有限公司开始按wb找厂商收费了?
-
2015-11-25 17:21 |
luwikes ( 普通白帽子 | Rank:532 漏洞数:79 | 潜心学习~~~)
-
2015-11-25 17:37 |
78基佬 ( 实习白帽子 | Rank:84 漏洞数:20 | 不会日站的设计师不是好产品经理)
-
2015-11-25 17:45 |
px1624 ( 普通白帽子 | Rank:1072 漏洞数:180 | px1624)
-
2015-11-25 18:14 |
Martial ( 普通白帽子 | Rank:2048 漏洞数:292 | 竟然还有人冒充我,醉了,骗子QQ445697541...)
-
2015-11-25 18:38 |
随风的风 ( 普通白帽子 | Rank:188 漏洞数:63 | 微信公众号:233sec 不定期分享各种漏洞思...)
进了这词语明显不符合伟哥的风格,一般都是 『上了』两字用的比较多
-
2015-11-25 19:17 |
青空 ( 路人 | Rank:9 漏洞数:1 | 向各位学习、致敬。)
-
2015-11-25 20:07 |
Honker红颜 ( 普通白帽子 | Rank:156 漏洞数:52 | 皖南人士,90后宅男,自学成才,天朝教育失败....)
进了这词语明显不符合伟哥的风格,一般都是 『上了』两字用的比较多
-
2015-11-25 21:17 |
imp0rt ( 普通白帽子 | Rank:109 漏洞数:51 | 剑影。。。)
进了这词语明显不符合伟哥的风格,一般都是 『上了』两字用的比较多
-
2015-11-25 21:40 |
onpu ( 普通白帽子 | Rank:140 漏洞数:35 | 勿忘初心)
你windows上开着wooyun点了我的链接我就进了你的wooyun账号
-
2015-11-25 21:45 |
f4ckbaidu ( 普通白帽子 | Rank:208 漏洞数:28 | 开发真是日了狗了)
-
2015-11-25 22:15 |
泪雨无魂 ( 普通白帽子 | Rank:180 漏洞数:50 )
进了这词语明显不符合伟哥的风格,一般都是 『上了』两字用的比较多
-
2015-11-26 08:25 |
香草 ( 实习白帽子 | Rank:99 漏洞数:14 | javascript,xss,jsp、aspx)
-
2015-11-26 08:26 |
香草 ( 实习白帽子 | Rank:99 漏洞数:14 | javascript,xss,jsp、aspx)
-
2015-11-26 08:49 |
一只猿 ( 普通白帽子 | Rank:509 漏洞数:92 | 硬件与无线通信研究方向)
进了这词语明显不符合伟哥的风格,一般都是 『上了』两字用的比较多
-
2015-11-27 10:06 |
那一夜不得已 ( 路人 | Rank:15 漏洞数:3 | 有个号就不错了,还要神马简介)
这个目测是QQ的wormhole吧?几个月前给TSRC提过,你猜他们怎么说?“不就一个JSONP嘛”,废尽口舌才给了两分,你运气真好。
-
2015-11-27 11:50 |
px1624 ( 普通白帽子 | Rank:1072 漏洞数:180 | px1624)
cookie的话 8分差不多,clientkey感觉起码15+
-
2015-11-27 12:51 |
呆子不开口 ( 普通白帽子 | Rank:370 漏洞数:34 | 求各种兼职)
@那一夜不得已 jsonp获取不到这个,他有token和referer校验
-
2015-11-27 12:54 |
呆子不开口 ( 普通白帽子 | Rank:370 漏洞数:34 | 求各种兼职)
@那一夜不得已 还有,即使有jsonp漏洞,clientkey也不是在response body里面的,是在cookie里面的,jsonp拿不到。我运气一点也不好,你运气不错,还能拿到两分
-
2015-11-27 15:18 |
香草 ( 实习白帽子 | Rank:99 漏洞数:14 | javascript,xss,jsp、aspx)
-
2015-11-30 09:31 |
那一夜不得已 ( 路人 | Rank:15 漏洞数:3 | 有个号就不错了,还要神马简介)
@呆子不开口 别激动,不是我定义为JSONP,是TSRC给我下的结论,当时我提交了POC,可以盗取本地所有已经登录的QQ skey,也提出了tocken只要不为空就可以绕过tocken检测,只要来路为白名单域名就可以绕过referer。后来他们把tocken检测修复了,可惜也只是验证cookie里面的值是否等于get参数tocken的值,这同样也是漏洞,因为xss可以控制cookie。至于怎么获取clientkey没有深入挖掘,因为skey已经有大部分功能了
-
2015-11-30 11:11 |
呆子不开口 ( 普通白帽子 | Rank:370 漏洞数:34 | 求各种兼职)
-
2015-12-01 11:52 |
1937nick ( 普通白帽子 | Rank:123 漏洞数:40 | 水能载舟,亦能煮粥。物尽其用,人尽其能。)
-
2015-12-11 22:36 |
VMApire ( 路人 | Rank:6 漏洞数:1 | ★财神网络★欢迎各位大牛加入)