作者:JasonXie | 来源:互联网 | 2014-05-22 21:46
相对于用户隐私泄露,SNS网络的XSS蠕虫的危害就要更大了。蠕虫是指可以通过网络进行传播和感染的恶性病毒,其最大的特点就是可以自己借助网络环境进行自我复制和感染。
新浪微博遭受XSS跨站脚本攻击实例分析
相对于用户隐私泄露,SNS网络的XSS蠕虫的危害就要更大了。蠕虫是指可以通过网络进行传播和感染的恶性病毒,其最大的特点就是可以自己借助网络环境进行自我复制和感染。自从Ajax技术出现后,Web也变得越发人性化,网页内容动态更新的效果使得Ajax在大型交互网站上广泛应用,然而在Ajax快速流行的同时,也带来了不安全的隐患。如果说过去的XSS漏洞只是脚本漏洞利用的一个简单技巧的话,那么现在,结合了Ajax技术的XSS漏洞就可以实现对Web应用程序中存在的XSS漏洞进行自动化利用和传播的XSS蠕虫病毒,它可以将用户数据信息发送给Web应用程序,然后再将自身代码传递进入Web应用程序,当其他用户访问Web应用程序时,XSS蠕虫自身将又开始进行新一轮的传播与感染。XSS蠕虫的感染速度是可以实现随着Web应用程序的用户访问量几何级数递增的,传播和感染的速度及攻击效果非常可怕。
XSS漏洞攻击过程分析
那么XSS漏洞又是怎么实现将代码植入到Web应用程序中的呢?这里我们先了解一下XSS攻击的定义和分类。跨站脚本攻击(Cross Site Scripting)是指攻击者利用网站程序对用户输入过滤不足,输入可以显示在页面上对其他用户造成影响的HTML代码,从而盗取用户资料、利用用户身份进行某种动作或者对访问者进行病毒侵害的一种攻击方式。
XSS通常可以分为两大类:一类是存储型XSS,主要出现在让用户输入数据,供其他浏览此页的用户进行查看的地方,包括留言、评论、博客日志和各类表单等。应用程序从数据库中查询数据,在页面中显示出来,攻击者在相关页面输入恶意的脚本数据后,用户浏览此类页面时就可能受到攻击。这个流程简单可以描述为——恶意用户的Html输入web程序?进入数据库?web程序?用户浏览器。另一类是反射型XSS,主要是将脚本加入URL地址的程序参数里,参数进入程序后在页面直接输出脚本内容,用户点击类似的恶意链接就可能受到攻击。
由定义和分类我们可以了解到,如果Web应用程序对用户输入的数据信息没有做严格过滤的话,就会导致被写入的恶意代码被解析并执行,那么结合Ajax的异步提交功能,自然也就实现了在植入恶意代码的同时,又可以将恶意代码进行对外发送的功能,即实现了代码的感染,同时也实现了代码的传播,也就形成了XSS蠕虫。出现最早也是最著名的XSS蠕虫病毒应该属于MySpace的Samy XSS蠕虫了。
国内外社交网站遭受XSS攻击实例回放
MySpace支持交友功能,好友信息会显示在个人空间的好友列表中,但是,如果想通过MySpace添加其他人为自己的好友,需要得到对方的验证通过才可以。2005年10月,一个名叫Samy的人在网上发布了一片文章,在文章中他说找到了一种方法可以借助MySpace网站自身存在的漏洞实现自动化添加自己到别人的空间中,并且经过测试,在3个小时内添加了2429个好友,同时收到了6373个来自MySpace上其他人添加自己为好友的请求,由此而导致了大量的恶意数据和垃圾信息在MySpace上传播,对网站和用户都造成了巨大损害。
最近几年,XSS蠕虫在大型SNS网络上爆发也很常见,自2005年MySpace Samy XSS蠕虫爆发以后,2009年,著名的社交网络及微博网站Twitter在这一年的时间里连续6次爆发多规模传播的XSS蠕虫攻击病毒。在我国国内最近几年,大型SNS网站及其他一些博客网站也有XSS蠕虫爆发的记录,如人人网的多次XSS蠕虫攻击事件、搜狐博客网站的XSS蠕虫攻击事件、百度空间的XSS蠕虫攻击事件及最近刚刚爆发的新浪微博XSS蠕虫大规模攻击事件等。在2007年10月,人人网爆发XSS蠕虫攻击事件中,攻击者没有植入任何恶意代码,所做的事情仅仅是测试一下蠕虫的传播效果,其中流量效果图如图6所示。
图6:人人网XSS蠕虫爆发期恶意代码所在网站流量监测状态图
从图6中我们可以看到恶意攻击者用于测试的网站流量在几天时间里大增,这些天应该是蠕虫感染的时间。日访问人数从0猛增到每天500人/百万人。也就是说,攻击者测试的地址每天会被访问5亿次,考虑到传播过程中会存在一个人访问多次的现象,所以粗略估计至少有几百万人受到该XSS蠕虫的攻击。值得庆幸的是,本次XSS蠕虫攻击事件攻击者仅仅是为了测试蠕虫的传播效果,如果将恶意挂马行为或者是钓鱼攻击行为与XSS蠕虫攻击相结合的话,由此造成的损失将是巨大的。
新浪微博遭受XSS攻击实例分析
通过以上对SNS网站面临的主要问题的了解可以发现,一旦SNS网站存在安全漏洞,那么恶意黑客攻击者通过安全漏洞可以做的事情是相当丰富的,诸如窃取账号密码信息、传播恶意代码、盗取用户隐私等,那么真实的此类攻击事件又是如何发生和进行的呢?下面我们结合新浪微博的XSS蠕虫攻击事件,对黑客恶意利用漏洞至XSS蠕虫大范围扩散的过程进行详细分析和描述,并对该XSS蠕虫的恶意脚本文件进行一下简要的分析。
首先,黑客通过对新浪微博的分析测试发现新浪名人堂部分由于代码过滤不严,导致XSS漏洞的存在,并可以通过构造脚本的方式植入恶意代码。通过分析发现,在新浪名人堂部分中,当提交http://weibo.com/pub/star/g/xyyyd">?type=update时,新浪会对该字符串进行处理,变成类似http://weibo.com/pub/star.php?g=xyyyd">?type=update,而由于应用程序没有对参数g做充足的过滤,且将参数值直接显示在页面中,相当于 weibo.com 在页面中嵌入了一个来自于 2kt.cn的JS脚本。该JS脚本是黑客可以控制的文件,使得黑客可以构造任意JS脚本嵌入到weibo.com的页面中,且通过Ajax技术完全实现异步提交数据的功能,进而黑客通过构造特定的JS代码实现了受此XSS蠕虫攻击的客户自动发微博、添加关注和发私信等操作。
然后,黑客为了使该XSS蠕虫代码可以大范围的感染传播,会通过发私信或发微博的方式诱惑用户去点击存在跨站代码的链接,尤其是针对V标认证的用户,因为此类用户拥有大量的关注者,所以如果此类用户中毒,必然可以实现蠕虫的大范围、快速的传播。
图7:大量用户中毒后发送的含毒微博信息
最后,当大量的加V认证账户和其他普通用户中毒后,这些用户就会通过发微博和发私信的方式将该XSS蠕虫向其他用户进行传播,进而导致了该XSS蠕虫的大范围、快速的传播与感染。
图8:含毒微博信息的主要内容和XSS蠕虫链接
新浪微博攻击事件发生之后,我们第一时间发现了2tk.cn网站上面的恶意脚本,文件名为t.js,链接地址为 www.2kt.cn/images/t.js,经过提取保存,脚本代码如下:
图9:新浪微博XSS蠕虫病毒代码
通过分析发现,虽然该XSS蠕虫在传播过程中没有插入恶意的挂马代码,但是却严重影响了用户对正常数据的浏览与访问,且该XSS蠕虫会在用户不知情的情况下就执行相应的恶意操作,因此认为该脚本属于恶意脚本范畴。通过进一步详细分析发现该XSS蠕虫执行以下三个操作:
操作1:发表一篇微博信息,代码如图10所示。
图10:XSS蠕虫代码中自动发布微博功能代码
从代码中我们可以看到,执行的第一个操作即是在受到XSS蠕虫攻击的用户自己的页面上发布一条微博,微博的题目为随机题目,且这些题目均为目前网络环境中比较热门或有争议的题目,如“郭美美事件的一些未注意到的细节”、“建党大业中穿帮的地方”、“让女人心动的100句诗歌”等。如此热门的题目也必然会引来更多的XSS蠕虫攻击受害者。
操作2:就是关注恶意攻击者的微博账号,代码如图11所示。
图11:XSS蠕虫代码中自动关注恶意攻击者微博账号的功能代码
从代码中我们可以看到,第二个操作就是关注加uid为2201270010的账户,该账户就为此次攻击事件的操纵者,即名称为hellosamy的用户。
操作3:通过私信的方式发送给受攻击账户的好友,将这些带毒链接进行传播,代码如图12所示。
图12:XSS蠕虫代码中自动向好友发送含毒私信功能代码
从代码中我们可以了解到恶意攻击者除了通过发布微博信息传播恶意链接以外,还会通过私信的方式将带有恶意链接的信息发送到好友账号中,且题目仍然为上面提到的热门话题,进而实现恶意链接的快速传播和感染。
SNS网站的用户和流量是巨大的,同时也容易招致严重的安全问题和隐患。如何能够保护用户的隐私信息不被窃取,保护用户不受到恶意代码的攻击,这不仅仅是网站管理员必须关心的问题,同时也是我们广大SNS用户需要关注的问题,这些都需要管理员和用户共同去维护,保护SNS在网络环境中的这一片净土。