黑客风云——风云网络
设为首页 加入收藏 我要投稿 网站地图

您现在的位置: 黑客风云 >> 黑客文章 >> 黑客进阶 >> 脚本入侵 >> 正文
·没有路由密码权限时的鸽08-23·上网安全 Vista自我防范10-11
·让濒临崩溃的Windows XP10-11·有备无患,快速自制救急10-11
·要你好看!Windows看图工10-11·空间赞助网提供不同类型10-11
·讨论net.exe和net1.exe的10-10·让3389远程桌面传输更通10-10
·巧妙入侵渗透赌博站10-10·Aspx空间扫权限工具10-10
·Windows2003最新提权工具10-10·易淘乐提供100M免费全能10-10
·系统开机密码忘了不着急10-09·中意网络提供免费100M免10-09
·与众不同 Windows XP开始10-08·让桌面图标翻跟斗 在XP上10-08
·上海宽元站长资助计划-提10-08·个性化Windows XP的任务10-07
·趣盘提供3G免费网络硬盘10-07·秀山热线提供200MB免费全10-07
·一次艰辛的提权过程10-06·成功入侵IT大卖场的渗透10-06
·mysqlhack- MYSQL利用工10-06·lanker一句话PHP后门客户10-06
·WIXI提供3G免费多媒体网10-06·新人网络提供100M/ftp免10-06
·如何利用QQ带来高流量10-05·UuShare提供免费网络文件10-05
[组图]百度空间多处XSS漏洞续篇
        ★★★★★

百度空间多处XSS漏洞续篇

文章整理发布:黑客风云 文章来源:www.05112.com 更新时间:2008-7-16 10:03:42

XSS 7: 百度搜藏XSS

这个漏洞有点特别。搜藏可以从很多地方点进去,这里不赘述。

打开搜藏页面后,控制网址的内容为 javascript:alert(/XSS/);

页面打开时候是没有问题的,但是点击“添加收藏”后,则会执行我们的JS

实际上,这里baidu是用ajax来做了一系列操作,比如判断URL是否重复,判断提交是否成功。
ajax的返回是用json来做的,主要处理返回结果的js为 itemadd.js
返回页面:

以下是引用片段:
{
resultNo:
"url重复" ,
resultBool:
false,
resultNum:30005,
userLogin: "1",
itemId: "026aec1d90a1e9e5ea1182a1"
}

如果仅仅是分析HTML页面,是看不到任何执行了我们JS的地方的,但我们的小框框确实是弹出来了。

这又是一个典型的DOM XSS

原因出在这里,在itemadd.js中:

以下是引用片段:
function checkForm(){
var f=document.fadd,oit=f.it,oiu=f.iu,odc=f.dc,otn=f.tn,vst=0;
if(f.st.checked==true)
vst=1;
if(chek_submit(oit,oiu,odc,otn)){
var vit=oit.value,viu=oiu.value,vdc=odc.value,vtn=otn.value,url=’/do/cm’;
var p_pars=’iu=’+encode(viu)+’&st=’+encode(vst)+’&dc=’+encode(vdc)+’&it=’+encode(vit)+’&tn=’+encode(vtn);
var pars=’ct=5&’+p_pars;
new Ajax.Request(url,{
method:’post’,
parameters:pars,
onComplete:function(xmlHttp){
var jsonResults=’(’+xmlHttp.responseText+’)’;
var retno=eval(jsonResults);
if(parseInt(retno.userLogin)==0){
if(nw==true)
location.href=”http://passport.baidu.com/?login&tpl=fa1&next_target=_blank&skip_ok=1&u=”+checkUrl(location.href,1800);
else location.href=”http://passport.baidu.com/?login&tpl=fa&skip_ok=1&u=”+checkUrl(location.href,1800);
return
}
var retTxt=retno.resultNo;
var resultNum=retno.resultNum;
if(retTxt==”url重复”){
var itemId=retno.itemId;
if(confirm(”url重复,是否覆盖?”)){
new Ajax.Request(url,{
method:’post’,
parameters:”iid=”+itemId+”&ct=8&”+p_pars,
onComplete:function(xmlHttp){
var jsonResults=’(’+xmlHttp.responseText+’)’;
var retno=eval(jsonResults);
if(parseInt(retno.userLogin)==0){
if(nw==true)
location.href=”http://passport.baidu.com/?login&tpl=fa1&next_target=_blank&skip_ok=1&u=”+checkUrl(location.href,1800);
else
location.href=”http://passport.baidu.com/?login&tpl=fa&skip_ok=1&u=”+checkUrl(location.href,1800);
return
}
var retTxt=retno.resultNo;
var resultNum=retno.resultNum;
checkResult(retTxt,resultNum)
}
})
}
}
else{
checkResult(retTxt,resultNum)
}
}
})
}
else
return false
};
……
function checkResult(retTxt,resultNum){
if(nw==true){
if(retTxt==”添加成功”){
hide(G(”DivShm”));
window.resizeTo(600,507);
hide(G(”iaMain”));
hide(G(”iaMain”));
G(”DivSucess”).innerHTML=”<p><table align=’center’ width=’50%’><tr><td height=’50px’></td></tr><tr><td style=’text-align:center;height:100px;font-size:16px;’><img src=’/-/imgs/icn_ok.gif’/>&nbsp;恭喜您,添加搜藏成功!</td></tr& gt;<tr><td align=’center’ style=’font-size:12px;color:#808080′>本窗口将在<span id=’autoTime’>3</span>秒内自动关闭…</td></tr><tr& gt;<td align=’center’><input type=’button’ onclick=’javascript:self.close();’ value=’&nbsp;&nbsp;立即关闭&nbsp;&nbsp;’></td>< /tr></table></p>”;
show(G(”DivSucess”));
IntervalObj3=window.setInterval(”w_close()”,1000)
}
else{
switch(resultNum){
case 30101:showEM(document.fadd.it.parentNode.childNodes[1],errmsg[1]);
break;
case 30102:showEM(document.fadd.dc.parentNode.childNodes[1],errmsg[3]);
break;
case 30103:showEM(document.fadd.tn.parentNode.childNodes[1],errmsg[4]);
break;
case 30100:showEM(document.fadd.iu.parentNode.childNodes[1],errmsg[2]);
break;
default:{hide(G(”DivShm”));hide(G(”iaMain”));
window.resizeTo(600,507);
var c=G(”errDiv”);
show(c);
var s=”<p>添加失败!”+retTxt+”&nbsp;&nbsp;<a href=’javascript:back();’>点击返回</a></p>”;
c.innerHTML=s
}
}
}
}
else{
if(retTxt==”添加成功”)
location.href=redirectUrl;
else{
switch(resultNum){
case 30101:showEM(document.fadd.it.parentNode.childNodes[1],errmsg[1]);
break;
case 30102:showEM(document.fadd.dc.parentNode.childNodes[1],errmsg[3]);
break;
case 30103:showEM(document.fadd.tn.parentNode.childNodes[1],errmsg[4]);
break;
case 30100:showEM(document.fadd.iu.parentNode.childNodes[1],errmsg[2]);
break;
default:{var c=G(”errDiv”);
show(c);
var s=”<p>添加失败!”+retTxt+”&nbsp;&nbsp;<a href=’javascript:back();’>点击返回</a></p>”;
c.innerHTML=s;
hide(G(”DivShm”));
hide(G(”iaMain”))
}
}
}
}
};
根据这段JS,可以看到如果返回页面为真,则改变location.href
if(retTxt==”添加成功”)
location.href=redirectUrl;
而在这里,redirectUrl却不在这个js里,我找了半天,最后发现这个变量是定义在html文件里的
在style标签下面就定义了这个变量
以下是引用片段:
</style>
<script src=”/-/js/base.js?v=1.1″></script>
<script src=”/-/js/checkform.js?v=1.1″></script>
<script src=”/-/js/suggest.js?v=1.1″></script>
<script src=”/-/js/itemadd.js?v=1.2″></script>
<script language=’javascript’>
<!–
var redirectUrl=”javascript:alert(2);”;
var s_tags=”未分类”;
var s1_tags=”";
var a_tags = [];

而最要命的就是,这个变量是直接取了我们输入进去的网址的值。

所以在ajax提交后,页面返回后,会重新赋值location.href,改变ajax的 redirectUrl
从而会以伪协议执行我们的javascript,所以可爱的小框框就弹出来了。

分析到这里,我们就顺便发现了另外一个XSS漏洞,就是出在

以下是引用片段:
var redirectUrl=”javascript:alert(2);”;

上一页  [1] [2] [3] 下一页

文章录入:cainiaowang    责任编辑:xinlian 
【字体:
Copyright @2006 黑客风云 ●业务联系:QQ 联系怪人 联系奇人 Email:给怪人发邮件 给奇人发邮件
ICP备案:冀06009886