XSS跨站脚本攻击实例讲解,新浪微博XSS漏洞过程分析

2011年6月28日晚,新浪微博遭遇到XSS蠕虫攻击侵袭,在不到一个小时的时间,超过3万微博用户受到该XSS蠕虫的攻击。此事件给严重依赖社交网络的网友们敲响了警钟。在此之前,国内多家著名的SNS网站和大型博客网站都曾遭遇过类似的攻击事件,只不过没有形成如此大规模传播。虽然此次XSS蠕虫攻击事 件中,恶意黑客攻击者并没有在恶意脚本中植入挂马代码或其他窃取用户账号密码信息的脚本,但是这至少说明,病毒木马等黑色产业已经将眼光投放到这个尚存漏洞的领域。

如何能够更好地保护用户隐私信息?安全人员首先要做的就是深入了解SNS网站面临的安全问题。通过分析国内主流SNS网站, 研究人员发现出其两大主要安全问题:用户隐私保护不力和XSS蠕虫病毒攻击。在此基础上,我们还可以将问题进一步细化,如与隐私相关的信息泄露、钓鱼攻击、网络诈骗等,与XSS相关的恶意代码传播、大范围用户信息窃取及基于XSS的DDoS攻击等。下面我们结合实际情况对SNS网站面临的安全问题进行详 细的描述和分析。

唾手可得的隐私信息

用户隐私问题一直是互联网上一个比较敏感的话题,随着SNS网站的出现及快速发展,用户隐私问题也变得异常严重。从目前我国SNS网站的服务人群来看,主要的用户为学生、白领及其他一些特定的人群,且此类网站大多数为强制实名制,因此使得此类用户的隐私信息更容易暴露在其他用户面前,如果恶意黑客利用此类信息那么后果将难以想像。我们通过人人网的搜索功能,获取某一账 户的个人信息如图1所示。

▲图1:通过人人网搜索到的某用户隐私信息

从图1可以发现该用户的个人信息对外都是可见的,那么如果黑客结合搜索引擎进行“人肉搜索”的话,那么获取到的将会是更多可被黑客恶意利用的敏感信息,利用用户的个人信息或其他隐私信息,黑客便可以进行钓鱼攻击或者欺诈等。

跳板式获取的隐私信息

虽然某些SNS网站对用户信息相关数据有完备的隐私控制策略,但是这种策略并非不能够被黑客加以利用。在人人网上对用户的信息查看时,我们发现,如果用户设置了相应的隐私控制策略以后,一般用户是无法访问该用户的个人主页信息的,如图2所示。

 

▲图2:设置隐私相关策略后仍有可被黑客利用的信息

但是,从页面中我们仍然可以看到可以被黑客利用的内容,那就是该用户的好友信息,如图2中红框选中的部分。结合SNS网站所具有的极强交互性的特点,可以通过该交互寻找到不同用户之间的关系,即所谓的社交网络虚拟人际关系网,可以用图3所示。

 

▲图3:社交网络虚拟人际关系网

图中假设黑色头像所代表的是黑客希望获取相关隐私信息的用户,尽管黑客无法直接通过目标任务的账号信息获取到数据内容,但是通过SNS网站的交互性,黑 客可以通过其好友账号进行间接渗透攻击。当黑客获取到其好友账号信息以后,不但可以正常浏览目标用户的个人主页和个人隐私信息,还可以通过好友用户通过发私信或邮件的方式进行钓鱼攻击。

危机四伏的外挂程序

SNS网站泄露个人隐私信息不仅仅只是以上提到的两方面,很多第三方应用也会有不少安全问题。例如,网上很多针对SNS网站“刷人气”、“刷等级”外挂软件倍受用户青睐,而这些程序通常也会有这样那样的问题。

▲图4:人人网应用程序列表

通过瑞星安全人员的分析发现,网络上有很大一部分外挂或辅助软件为“伪外挂”程序,即该类软件根本无法实现“刷人气”、“刷等级”等作用,而其主要功能是盗取用户的账号密码信息等内容。由于该类软件对外宣称实现的是“刷人气”、“刷等级”的作用,所以“名正言顺”地要求用户在软件运行时输入SNS网站的个人账户及密码信息,而软件在获取账号密码信息以后除了向SNS网站发送该信息外,还会向黑客的服务器发送用户的账号和密码信息,如图5所示。

▲图5:外挂辅助软件盗取用户账号和密码信息

在图5所示的案例中用户的账号和密码信息被提交到了黑客的网站服务器w#w.clickaider.net,黑客在接收到用户账号和密码信息以后,就可以使用正确的账号和密码信息登录,由此而带来的危害是无法想像的。

新浪微博遭受XSS跨站脚本攻击实例分析

相对于用户隐私泄露,SNS网络的XSS蠕虫的危害更大。目前,Ajax语言在大型交互网站上广泛应用,然而在Ajax快速流行的同时,也带来了不安全的隐患。黑客可以使用Ajax语言编写蠕虫病毒,实现病毒的几何数级传播,其感染速度和攻击效果非常可怕。

XSS漏洞攻击过程分析

那么XSS漏洞又是怎么实现将代码植入到Web应用程序中的呢?跨站脚本攻击(Cross Site Scripting)是指攻击者利用网站程序对用户输入过滤不足,输入可以显示在页面上对其他用户造成影响的HTML代码,从而盗取用户资料、利用用户身 份进行某种动作或者对访问者进行病毒侵害的一种攻击方式。

XSS通常可以分为两大类:

一类是存储型XSS,主要出现在让用户输入数据, 供其他浏览此页的用户进行查看的地方,包括留言、评论、博客日志和各类表单等。应用程序从数据库中查询数据,在页面中显示出来,攻击者在相关页面输入恶意的脚本数据后,用户浏览此类页面时就可能受到攻击。这个流程简单可以描述为 —— 恶意用户的Html输入web程序 -> 进入数据库 -> web程序 -> 用户浏览器

另一类是反射型XSS,主要是将脚本加入URL地址的程序参数里,参数进入程序后在页面直接输出脚本内容,用户点击类似的恶意链接就可能受到攻击。

由此可见,如果Web应用程序对用户输入的数据信息没有做严格过滤的话,就会导致被写入的恶意代码被解析并执行,结合Ajax的异步提交功能,自然也就实现了在植入恶意代码的同时,又可以将恶意代码进行对外发送的功能,即实现了代码的感染,同时也实现了代码的传播,也就形成了XSS蠕虫。出现最早也是最 著名的XSS蠕虫病毒是MySpace的Samy XSS蠕虫了

Samy蠕虫实例回放

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在网络环境中的这一片净土。

 

附:

 

posted @ 2016-07-11 12:49  52php  阅读(4974)  评论(0编辑  收藏  举报