天下网吧 >> 网吧天地 >> 网吧技术 >> 网吧安全 >> 正文

跨站脚本攻击的危害及cookie盗窃

2009-7-251CTO康凯

  五、XSS蠕虫

  一直在线的Web应用程序,诸如webmail、社交网络、聊天室、在线多人游戏、在线赌场或者一切需要用户交互以及需要在用户间相互发送某种形式信息的Web应用程序,都容易受到XSS蠕虫的攻击。XSS蠕虫充分地利用了Web应用程序的特性来自我传播。例如,Webmail应用中的XSS蠕虫利用了攻击者能够捕获受害者的联系人名单与发送电子邮件的事实。

  当受害者点击了指向HTML注入的链接时,XSS就会被激活,由此触发脚本的执行。 脚本将搜索受害者的联系人名单,然后发送电子邮件到受害者的联系人名单中的每个联系人。每个联系人将收到一封来自有信誉的发件人(受害者)的电子邮件,该邮件会邀请联系人单击一些链接。一旦他单击了该链接,这个联系人就会变成了另一个受害者,然后他的联系人也会收到他的来信。

  XSS蠕虫以极快的速度繁衍,能够在短期内感染许多用户,并引起大量的网络流量。对于传播其它攻击诸如钓鱼攻击等,非常有效。更为有趣的是,攻击者有时候会向Web应用程序添加隐藏的HTML 内容以便对浏览器发动多种攻击。如果用户运行的Web 浏览器不是最新的,攻击者就能够完全控制用户的机器。本例中,XSS用来传递某些其他弱点。

  上面部分介绍了跨站脚本的危害,下面介绍攻击者是如何诱骗受害者的。

  六、诱捕受害者

  现在,我们已经知道如何寻找HTML注入点,以及如果攻击者能够使用户单击指向注入的HTML的链接的话,他能够做哪些事情。有时候,注入的HTML会在正常的用户交互过程中被激活。也就是说,有许多有效的方法。然而,通常情况下攻击者必须使用户单击了指向注入的HTML代码的链接才能激活攻击过程。本节简要讨论如何促使受害者去单击一个链接。

  现在假设您就是攻击者。如果您发现可以在http://search.engine.com/search?p= 注入HTML,并且在http://evil.org/e.js处设计了一个恶意的脚本。 现在,你只要设法让人们点击下列链接就行了:

http://search.engine.com/search?p=

  但是,究竟会有多少人会点击上述的链接呢?对电脑知识稍有了解的用户一眼就能看出点击上述链接肯定不会有好事。因此,攻击者需要给这个链接化化妆,然后引诱用户单击一些更诱人的东西。

  七、隐蔽指向注入的HTML的链接

  可以用不同的方法来隐蔽链接,例如通过anchor标签、使用URL缩短技术站点、博客以及为攻击者所控制的网站等。

  第一个建议十分简单,大多数Web应用程序会自动在URL周围封装上锚标签以便于用户跟随链接。如果攻击者可以写入他自己的超链接,诸如在一个webmail应用程序中,那么攻击者就能够构造一个如下所示的链接:

http://goodsite.com/cuteKittens.jpg

  这个链接会作为http://goodsite.com/cuteKittens.jpg出现,然而,当受害者点击这个链接时,将被带至注入的HTML(即实际上点击的是攻击者注入的HTML)。

  用于缩短URL的Web应用程序,诸如TinyURL、YATUC、ipulink.com、get-shorty.com(以及所有实现get-shorty功能的网站)等等,都能把冗长的URL转换成简短的URL。这些站点都是通过将URL映射到一个较短的URL,而较短的URL又重定向到一个长URL来实现的。

  由于使用了较短的URL把冗长的URL隐藏了起来,这样就更容易获取人们(甚至一些老道的计算机用户)的信任,从而单击恶意链接,例如,对于下面这个容易露馅的HTML注入:

http://search.engine.com/search?p=

  我们可以把它映射成一个单独的URL,如下所示:

http://tinyurl.com/2optv9

  目前,就算是警惕性很高的计算机用户也很少有人知道类似的TinyURL的提供URL缩短服务的站点。这样,我们可以通过不太流行的提供URL缩短技术的Web应用程序获取更多有经验的计算机用户的信任,从而使他们去毫无疑虑的点击我们的链接;此外,我们也可以创建自己的web页面,并在其中放入下列内容:

  注意,document.location的字符串中的标签在上述JavaScript被执行之前是作为HTML出现的。对于POST方式的HTML注入,您可以编写下面的代码:

〈html〉
〈body〉
〈!-- something distracting like a cute kitten --〉
〈img src=cuteKitten.jpg〉
〈!-- and some HTML injection --〉
〈form action="http://search.engine.com/search" method="POST"
name="evilForm"〉
〈input type="hidden" name="p" value="〈script〉a_lert(1)〈/script〉"〉
〈/form〉
〈script〉
document.evilForm.submit()
〈/script〉
〈/body〉
〈/html〉

  现在,把上述代码放到您自己的Web站点或者blog中——如果没有的话,现在有许多免费的Web站点以及blog托管站点可用。
一种不错的隐蔽技术是滥用IE的MIME类型不匹配问题。例如,创建一个文本文件,将其命名为cuteKitten.jpg,然后放入下列内容:

〈iframe style="display:none"
src="http://search.engine.com/search?p=〈script〉a_lert(1)"〉〈/iframe〉
〈img src="someCuteKitten.jpg"〉

  上载cuteKitten.jpg,例如放到http://somwhere.com/cuteKitten.jpg。当用户点击该链接时,IE会认出cuteKitten.jpg根本就不是一张图像,所以它继而将其作为HTML进行解释。这样在显示图像someCuteKitten.jpg的时候实际上会在后台利用一个注入的HTML代码。

  最后,攻击者只要注册一个听起来很正规的域名并且将该html注入寄放在该域名中即可。例如,googlesecured.com就是一个看上去很真可信的域名。

  八、促使用户单击注入的HTML代码

  利用“免费色情图片”以及“伟哥甩卖”来引诱别人已经成为过去,现在,攻击者通常会促使用户去做一些普通大众经常做的事情,诸如单击一个新闻链接、欣赏一副可爱的小猫的图片等等,当然使用的方法在前面我们已经说过了。

  例如,快到情人节了,大多数年轻人都希望给爱人一个惊喜。攻击者就会考虑利用“阅读本文以了解如何您的爱人一个与众不同的情人节”之类的文字来诱惑用户单击链接。借助于XSS蠕虫,如果人们看到这封邮件来自其好友的话,那么人们会毫不犹豫地点击它。

  然而,攻击者放入的文字越多,越容易引起潜在受害者的疑虑。现今,最有效的信件应当只发给潜在的受害者一个链接,而根本不附加任何文字。好奇是人类的本性,在这种强烈的本能的驱使下,点击该链接将大有人在。

  至此,攻击手法的介绍已经告一段落,下面开始简要介绍针对跨站脚本攻击的防御措施。

本文来源:51CTO 作者:康凯

声明
声明:本站所发表的文章、评论及图片仅代表作者本人观点,与本站立场无关。文章是出于传递更多信息之目的。若有来源标注错误或侵犯了您的合法权益,请作者持权属证明与本网联系,我们将及时更正、删除,谢谢。 Email:support@txwb.com,系统开号,技术支持,服务联系微信:_WX_1_本站所有有注明来源为天下网吧或天下网吧论坛的原创作品,各位转载时请注明来源链接!
天下网吧·网吧天下
  • 本周热门
  • 本月热门
  • 阅读排行