“不知道为啥,貌似还可以类似的利用,局域网内嗅探出请求地址,然后貌似没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:
本文介于专业和非专业之间,腾讯在各个安全领域如账户安全,业务安全等都是国际领先的,但个人认为切不可在整个安全基础架构中最核心的一环掉链子。本文有些问题并未深入描叙,如有不妥或疑惑,可与本人私下讨论,谢谢。
今天更新了下本文,把本文的暗坑给挖出来,仅供腾讯的同学参考。