h5的漏洞和安全_第1页
h5的漏洞和安全_第2页
h5的漏洞和安全_第3页
h5的漏洞和安全_第4页
全文预览已结束

下载本文档

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

文档简介

HTML5安全问题分析将HTML5安全问题分为以下主要的三类:HTML5安全漏洞、HTML5新型攻击机制、HTML5新特性滥用HTML5安全漏洞:XSS(Reflected,Stored)和DOMXSS(跨站漏洞)。HTML5新型攻击机制:跨域伪造请求CSRF、点击劫持Clickjacking、离线应用缓存、本地存储攻击。HTML5新特性滥用:Webshell/WebScanner,地理位置信息泄露、僵尸网络。HTML5安全漏洞HTML5中引入了新标签audio、video以及新属性onerror、autofocus等,这些新标签与新属性能够触发JavaScript脚本执行,如果对标签、属性的参数没有进行严格过滤,那么就有可能引起跨站洞。例如新的多媒体类标签所引起的跨站漏洞:audio〉Vsourceonerror=”javascript:alert(document,cookies)”〉新属性如'formaction','autofocus’也易产生跨站漏洞:bodyoninput=alert(document.cookie)>Vinputautofocus>HTML5新引入了一些增强用户体验与交互的特性,如“拖拽”等,这些功能仅需鼠标就能完成相关操作,浏览器通过后台捕捉到相关事件进行处理,在这个过程中,也可能引发跨站脚本漏洞。文件对象模型(DOM)是浏览器重要的一部分,用来渲染Web内容。在HTML5中,升级的DOMlevel3在支持HTML5和XHR的同时,也增加了很多新的特性:XPATH处理、DOMUser-Data等等,这使得基于DOM的跨站漏洞明显增加。在使用DOM函数document.*、eval()的过程中,如果Web应用在调用这些函数时没有经过仔细处理,那么很容易造成基于DOM的跨站漏洞。与此同时,浏览器允许在URL中使用#号分割并将参数直接传递给DOM,这个过程中不需要与服务器进行交互,例如:/wiki/Wiki#Characteristics浏览器直接到达Characteristics一节所在的位置,如果攻击者诱使受害者点击了如下链接:/wiki/Wik#http:///那么DOM会直接处理http:///这个链接上的恶意代码,从而发起一次攻击。无论是新出现的Web应用XSS漏洞,还是基于DOM的XSS与重定向漏洞,都需要对传入的数据进行严格的审查和过滤,才能有效防范与避免。HTML5新型攻击机制跨域请求伪造攻击是当前一种非常流行的攻击方式,攻击者通过各种手段窃取受害者身份(cookie、token等),进而伪装受害者身份进行各种破坏活动。由于引入了跨域共享机制(COR),HTML5中出现了新的跨域请求伪造方式。HTML5中存在几种不同方法实现跨域资源共享,HTTP头中的“origin”控制着跨域资源共享是否使用,在针对HTML5的跨域伪造请求攻击过程中,攻击者可以使用POST方法,通过XHR建立一个隐蔽的连接,同时将“withCredential”属性设置为真,就能够实现CSRF中最重要的Cookie窃取与重放攻击。在HTML5中解决跨域请求伪造攻击的一个重点防御措施是严格定义跨域请求的范围。点击劫持(Clickjacking)又称界面伪装劫持,是一个近年来比较流行的攻击方式,特别是在社交网络流行的情况下,这种攻击的效果更加明显。点击劫持是攻击者使用透明网页覆盖在一个正常网页上,诱使用户点击正常网页上的按钮,在用户不知情的情况下,同时点击了透明页面上的按钮,从而触发攻击者预先设置的恶意代码。在HTML5中,由于引入了新标签和新层叠样式表(CSS-level3),使得点击劫持变得更加容易。由于HTML5在iframe中引入了沙箱属性,允许在iframe中载入非同源域名,如果设置不严格,在使用iframe的同时又允许脚本执行,就会出现跨站脚本攻击的可能性,如下:iframesandbox="allow-same-originallow-formallow-scripts”〉很多网站为了解决点击劫持问题,使用了frame-busting技术:用一段Javascript脚本来检查form中是否存在覆盖页面,然而沙箱属性禁止JavaScript运行,从而导致使用沙箱就能绕过frame-busting检查:iframesrc=〃untrusted,html"sandbox〉V/iframe〉跨域共享劫持在HTML5中,还出现了新的劫持方式:称作跨域共享劫持(CORjacking),在Web应用运行的过程中,可能需要调用各种不同服务器上的资源(Flash、音频、视频)来丰富用户的体验,这些都是通过文件对象模型(DOM)来解析执行的,跨域请求的这些资源也可以通过DOM进行控制,从而能够造成跨域资源共享劫持,例如:某网站加载一个flash的程序:Objectclassid=”clsid:D27CDB6E-AE6D-11cf-96B8-444553540000”Id="Login”width=“100%”height="1000%”Codebase=/get/falshplayer/current.ash.cabparamname=”movie”value=”Login.swf”/〉当Flash文件加载完成后,浏览器通过DOM来控制里面的参数其中document.getElementByName('login').item(0).src不仅具有只读的属性,而且是可写的,攻击者可以通过跨域共享机制替换一个恶意链接,这样就完全劫持了原有网页的login插件,用户很容易泄露自己重要信息。离线缓存攻击HTML5支持缓存Web应用,方便用户线下使用,代码中只需通过:htmlmanifest=”/appcache.manifest”同时列出想要缓存的页面,就可以将当前列出的Web应用进行缓存,这样很容易造成离线缓存攻击。假设场景一:在一个公共AP访问a,com网站,HTTP请求通过这个不安全的AP提交给服务器,服务器进行应答,此时攻击者通过AP控制了服务器的应答数据包,可以将一个隐藏的包含有src=http://的iframe加入到应答数据包中,这样受害者便不知不觉就访问(是一个需要输入用户名和密码的网站),在发送请求后,攻击者应答数据包中包含了cache.manifest,要求客户端缓存B网站的数据。场景二:受害者在一个安全网络中登陆准备输入自己的信息时,浏览器直接加载缓存好的程序(包括里面的恶意JavaScript),当用户输入在登陆位置输入用户名和密码时,里面的Javascript脚本将该信息上传到攻击者控制的服务器上。这样就成功执行了一次应用缓存攻击。解决离线缓存攻击的问题主要集中在客户端,用户需要在每次上网前对本地缓存进行清除,特别对一些应用,可能会提示用户是否进行本地缓存,如果涉及个人隐私:如电子邮件、网上商城等,不应当允许缓存,这对用户的安全意识与知识提出了更高要求。本地存储攻击HTML5引入了本地存储技术(WebStorage),用来取代cookie的功能,同时解决客户端应用数据存储问题。本地存储技术的引入,在方便Web应用的同时,也容易引起会话劫持、信息泄露等问题:会话劫持在Web应用建立会话的过程中,经常需要使用cookie,由于cookie内包含一个随机数(令牌),可以使建立的会话不被第三方窃取。在HTML5中,cookie被sessionlD取代,如果一个网站存在XSS漏洞,那么当受害者浏览该网站并触发XSS漏洞,用户的会话ID将会被窃取:script〉document.write(〃Vimgsrc='?sessionlD=〃+localStorage.getItem('SessionlD')+〃'〉〃);V/script〉如上所示,XSS攻击依然是窃取会话cookie的手段,HTML5并没有改变这一点,然而攻击者需要修改攻击的JavaScript代码以获取sessionID(取代cookie)。需要说明的是,在HTML5之前,HTTPonly标签用来阻止通过JavaScript窃取cookie,但HTML5本地存储中不再支持HTTPonly标签,使得本地存储的防护能力反而削弱了。信息泄露,通过XSS漏洞不仅可以获得当前的会话cookie,也可以获得本地存储的其它信息,特别是当一些隐私数据存储到本地时,这种情况便更加危险。另外,当一个Web网站由多个程序员编写各自的应用,而仅通过不同路径进行区分时,本地存储的信息往往是跨域名共享的,那么攻击者在/app1上存在XSS漏洞情况下,能够读取/app2应用的存储数据。注入攻击,由于HTML5支持在浏览器中部署一个轻量级的数据库,那么SQL语句的查询和读取也成为一种必然,从而引起SQL注入等威胁。解决本地存储攻击的方法应注意一下几点:首先客户端尽量不要存储敏感信息,敏感信息应该保存在服务器端;其次使用cookie存储会话信息取代本地存储,这样可以使用HTTPonly标签对会话信息进行保护,考虑到本地存储的信息直到浏览器关闭才会清除,使用cookie能够更好的保护会话信息;最后,在一个域名下运行多个Web应用,同时仅通过路径区别不同应用的情况下,尽量不要使用本地存储。HTML5新特性的滥用滥用网络API和SOCKETHTML5支持WebSocket和XMLHttpRequestlevel2。这些功能为攻击者提供了构造各种恶意代码的可能性。WebSocket定义了独特的事件模型,可以使用相关的状态信息进行有效地TCP跨域扫描和通信。滥用WebSocket和XHRlevel2是HTML5面临的最大威胁之一:攻击者可以通过浏览器对目标内网进行主机扫描,而且这些扫描由于通过浏览器进行而往往不会被防火墙过滤。在2010年Blackhat大会上,Kuppan详细讲解了使用Web-Socket扫描的技术细节,并发布了一个概念验证工具“JSRecon”,该工具可以通过受害主机对内网进行扫描。使用COR通过HTTP协议建立一个隐蔽管道,从而获取内网主机浏览器的行为。2010年BlackHat大会上,Kuppan也发布了“shellofthefuture”,详细介绍了通过持续劫持受害者的会话session,进而使用客户端浏览器来劫持受害者的浏览器。目前,仅在服务器端部署安全措施巳经不可能完全解决潜在的安全问题,但是服务器的一些安全配置可以解决绕过访问控制的问题:严格定义Access-Control-Allow-Origin的参数从而限制跨域请求的URL,而不是把该参数设置为通配符星号。滥用地理位置信息HTML5支持用户通过本地浏览器获取地理位置信息。这些信息泄露后,在社会工程攻击领域应用非常广泛,例如:攻击者可以谎称自己是某个权利部门,谎称受害者还没有交税,并且知道受害者的地理位置,如果一天之内不缴纳罚款,将会受到处罚等等。攻击者可以建立关于受害者的地理位置信息数据库,一些不法分子会专门购买一些富人的信息,想知道他们哪些时间不在家,以便进行入室行窃等犯罪行为。地理位置信息泄露的潜在风险不容小觑,从防护的角度考虑:一方面,在服务器端,必须要求Web应用在获取用户地理信息位置时给用户提示信息。另一方面,客户端用户必须谨慎操作,只给信任的网站或者应用授予获取地理位置的权限。使用WebWorkers特性构造僵尸网络使用WebWorkers允许后台运行多个Javascript线程是HTML5引入的新特性之一,攻击者可以利用这个特性构建僵尸网络。攻击者仅需要在浏览器执行一段相同的Javascript代码,就能够在PC机、苹果、iPhone、Android手机等等设备多处运行,而且基于Javascript的僵尸程序仅运行在内存中,不会驻留在硬盘上,使得发现这种僵尸网络变得异常困难。基于WebWorkers的僵尸网络用途很多,但是首先存在如下两点不同特征:通过跨站脚本攻击执行Javascript僵尸程序基于浏览器的僵尸程序不会像传统僵尸程序持久运行,当受害用户关闭浏览器标签时,僵尸程序同时也被关闭。攻击者可以使用其它方法,比如点击劫持或者tabnabbing攻击以获取程序更持久的运行时间。基于浏览器的僵尸网络攻击手段也非常丰富,主要可以分为以下几类:分布式拒绝服务攻击:通过GET方法(含COR)对目标网页服务器发送请求,即便目标网页服

温馨提示

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

评论

0/150

提交评论