再谈QQ史上最大的“后门”

来源:互联网 发布:西古德森数据 编辑:程序博客网 时间:2024/05/17 09:14

“不知道为啥,貌似还可以类似的利用,局域网内嗅探出请求地址,然后貌似没IP限制……外网也OK”


没找到出处,转载自:http://hi.baidu.com/reverseman/item/3b19c5d8bacaca3849e1dd3f



1.腾讯单点登录中心的HOST是ptlogin2.qq.com,打开wireshark,设置一个filter, http.host==ptlogin2.qq.com

 

2.点击QQ菜单栏上的使用各个服务,比如微博,EMAIL,QZONE,paipai等,大家应该知道是不需要输密码的,这个就是所谓的一键登录。

3.抓包以后我们可以直接看到其实一键登录就是访问了一个URL

 

 

4.这个URL的关键就是我红条涂掉的第一行clientkey,同时服务端返回一个叫skey的cookie值,您这就算登录了。




5.该URL即是单点登录的认证URL,格式如下:

http://ptlogin2.qq.com/jump?ptlang=2052&clientuin=QQ号码&clientkey=64个字节的KEY&u1=需要登陆的QQ服务网站地址

 

 6.上面其实只是腾讯单点登录系统的基础部分,单点登录系统还包含一个IE插件即网页中的一键登录

 

点击快速登录后会产生如下格式的认证URL

http://ptlogin2.qq.com/jump?clientuin=QQ号&clientkey=192位字节的KEY&keyindex=9&u1=需要登陆的QQ服务网站地址

 

科普完毕后就可以解答之前关于clientkey的一些疑问:

 

这两日有朋友在微博上问起clientkey是什么,于是引发了各种爆料,clientkey到底是啥呢?

clientkey是串联腾讯所有在线服务的单点登录系统的关键密钥。

说得专业一点类似web程序中session机制中靠URL传递的session id的session url。

说得通俗一点就是你QQ的密码,是通过加密算法将你的QQ密码二次加密后会有时间限制的密码。

 

那这里到底有什么安全问题呢?

腾讯的这套单点登录系统直接就是HTTP明文通信的,如果您觉得某些服务不重要的话,确实可以用明文,但是如果N个服务,连带您的QB,您的隐私等等还不够重要的话,那也就是没什么安全问题了。

clientkey的时效性问题,clientkey的URL并不是一次性的,可重复使用。

clientkey的客户端验证问题,clientkey无法正确验证客户端。

 

还会产生什么高级安全问题?

我们知道局域网可以sniffer,你嗅探到了这个clientkey的话,就等于掌控了人家所有的QQ服务。

快速登陆插件的安全问题,这个问题某牛09年就以安全公司的身份正式通报给腾讯了,似乎腾讯没有什么安全公告,值得庆幸的是10年该插件的漏洞才算基本修补完毕,并给快速登陆插件生成的clientkey加入了IP限制,不过客户端第一种64位clientkey仍然无任何IP限制。

或许还有未知的0DAY,大牛们从未公布。

 

 如何修补这个安全问题?

非常简单,在腾讯3000亿市值中抽点钱将单点登陆服务的通信都加密,最少弄个HTTPS不。

clientkey的时效性问题,我的微博中有个腾讯的同学@我说这是个简单的问题,在不牺牲性能的情况下clientkey可以做成一次性的,用完了就失效,其实这也是我想说的,如果对于腾讯来说是简单问题,那就just do it吧。

clientkey无法正确验证客户端,仅仅靠IP是不够的,您在架构该系统的同时是否真正想过了验证QQ号的主人在使用 clientkey。

 

PS:

本文介于专业和非专业之间,腾讯在各个安全领域如账户安全,业务安全等都是国际领先的,但个人认为切不可在整个安全基础架构中最核心的一环掉链子。本文有些问题并未深入描叙,如有不妥或疑惑,可与本人私下讨论,谢谢。

今天更新了下本文,把本文的暗坑给挖出来,仅供腾讯的同学参考。


原创粉丝点击