版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
网络安全与攻防技术
第12章
跨站脚本攻击XSS攻防
跨站脚本攻击(XSS)是一种在Web应用程序中广泛存在的安全漏洞,它在OWASP2017Top10安全风险榜中位居第三。近年来许多著名网站,包括Facebook、Twitter、百度、搜狐和新浪微博等,都曾发现过多个XSS的安全漏洞。这些漏洞的存在使得攻击者有机会通过注入恶意代码来窃取用户的敏感信息,甚至篡改网页内容,对用户构成严重的安全威胁。伴随着Web技术的飞速发展,多数主流浏览器及其扩展支持本地运行JavaScript、Flash、ActionScript和Silverlight等客户端脚本代码。这些技术的进步为XSS攻击创造了适宜的条件。攻击者可能会利用Web应用程序的安全漏洞,在网页中注入巧妙设计的客户端脚本,进而构造恶意攻击页面。在Web客户端浏览经过篡改的网页时,浏览器会自动载入并执行这些页面中嵌入的恶意客户端脚本。通过解析并运行这些脚本,使得客户端遭受攻击。利用这种手段,攻击者能够获取用户的敏感数据,包括用户名、密码和Cookie等,甚至可以在用户毫不知情的情况下执行恶意操作。章节导读职业能力目标与要求知识目标:
理解跨站脚本攻击技术原理。
熟悉跨站脚本攻击类型。
掌握跨站脚本攻击的防御措施。
能够发现XSS漏洞。
能够使用函数防御XSS漏洞。
能够模拟获取管理员权限。
能够模拟利用BeEF实现对受害机的控制。
理解XSS攻击对个人隐私、企业安全乃至国家安全的潜在威胁。
理解并遵守相关的网络安全法律法规,尊重用户隐私权。
面对XSS攻击技术的演进,具备自主学习新知识和新技术的能力。技能目标:素质目标:12.1跨站脚本攻击跨站脚本攻击主要利用网页开发过程中存在的安全漏洞,通过巧妙的手段将恶意代码注入网页中。当用户访问这些被注入恶意代码的网页时,这些代码会被加载并执行,从而执行攻击者精心设计的恶意脚本。这些恶意脚本程序大多数情况下是JavaScript,因为JavaScript是一种广泛使用的客户端脚本语言,可以在用户的浏览器上直接执行。实际上这些恶意脚本程序也包括Java、VBScript、ActiveX和Flash,甚至是普通的HTML。攻击成功后,攻击者可能获得更高的权限、私密网页内容、会话和Cookie等各种内容。12.1.1脚本JavaScript和VBScript等客户端脚本语言主要用于实现网页的交互性和动态功能。这些语言在用户的浏览器中执行各种任务,包括计算、页面布局调整、Cookie管理以及响应用户事件等。这些脚本是在客户端上运行,而不是在Web服务器上运行。因此它们能够直接与用户进行交互,并快速响应用户的各种操作。从用户的角度来看,这些脚本的运行非常流畅,以至于他们可能根本不知道网页内容正在被动态地改变。浏览器呈现给用户的界面与静态HTML页面无异,除非用户主动查看HTML源代码。尽管脚本本身不会直接造成安全威胁,然而当Web应用开发人员在利用这些脚本时,如果操作不当,就可能引发如XSS等安全缺陷。XSS漏洞使得攻击者能够在用户的浏览器中执行恶意脚本,通过这种方式,他们可能会窃取用户信息、执行恶意操作或进行其他类型的攻击。12.1.2XSS漏洞
Web服务器允许用户在表格或编辑框中输入不相关的字符。例如表格需要用户输入电话号码,显然有效的输入应该是数字,而其他形式的任何符号都是非法字符。如果服务器没有对这些输入进行适当的过滤或验证,就可能允许恶意代码的注入。
Web服务器存储并允许把用户的输入显示在返回给终端用户的页面中,而这个回显并没有去除非法字符或者重新进行编码。在大多数情况下,用户输入的是静态文本,这并不会引起问题。然而,如果攻击者输入的是表面正常却隐含了XSS内容的代码,那么终端用户的浏览器就会接收并执行这段代码。12XSS漏洞主要是由于Web服务器没有对用户的输入进行有效性检验或验证强度不够,而又轻易地将它们返回给客户端造成的,漏洞形成的主要原因有以下两点。12.1.3XSS攻击技术原理
与代码注入类似,XSS攻击的根源也在于Web应用程序对用户输入内容的安全检验与过滤不够完善。在许多流行的Web论坛、博客、留言本以及其他允许用户交互的Web应用程序中,用户可以提交包含HTML、JavaScript及其他脚本代码的内容。如果Web应用程序没有对这些输入的合法性进行检查与过滤,就很有可能让这些恶意代码逻辑包含在服务器动态产生或更新的网页中。然而与代码注入不同的是,XSS攻击的最终目标并非Web服务器本身。在XSS攻击中,Web服务器上的应用程序充当的角色更像是“帮凶”,而非“受害者”。真正的“受害者”是访问这些Web服务器上的其他用户。随着Web技术的飞速发展,最新的浏览器软件与插件平台已经普遍地支持JavaScript、Java和Flash等客户端脚本代码的本地执行,这为XSS攻击的流行提供了基础土壤。12.1.3XSS攻击技术原理
攻击者可以利用Web应用程序中的安全漏洞,在服务器端的网页中插入一些恶意的客户端脚本代码,从而在Web服务器上产生出一些恶意攻击页面。当其他用户访问这些网页时,他们使用的客户端浏览器就会下载并执行这些网页中的恶意客户端脚本,从而遭受攻击。攻击目的包括绕过客户端安全策略访问敏感信息、窃取或修改会话Cookie和进行客户端渗透攻击获取访问权限等。任何支持脚本的Web浏览器都容易受到这类攻击。12.2XSS攻击类型这种攻击不经过服务器后端,而是基于文档对象模型(DOM)的一种漏洞。攻击者通过URL传入参数来控制触发恶意脚本的执行。DOM型XSS攻击通常发生在客户端处理数据和更新页面内容的过程中。3.DOM型XSS攻击
也称为持久型XSS,这种攻击将恶意脚本存储在服务器的数据库、内存、文件系统等,使得每次用户请求目标页面时都会执行这些脚本。由于恶意脚本被永久存储,这种攻击可以持续影响所有访问受影响页面的用户,甚至可能导致蠕虫式传播。2.存储型XSS攻击
也称为非持久型XSS,这种攻击方式是一次性的,仅对当次页面访问产生影响。攻击者通过诱导用户点击一个包含恶意脚本的链接,当用户访问该链接时,恶意脚本被执行。反射型XSS攻击通常出现在网站的搜索栏、用户登录页面等地方,常用来窃取客户端Cookie或进行钓鱼欺骗。1.反射型XSS攻击根据攻击特征和对安全漏洞利用方法的不同,可以将跨站脚本攻击(XSS攻击)分为三种类型:反射型XSS攻击、存储型XSS攻击和DOM型XSS攻击。12.2.1反射型XSS攻击
在反射型XSS攻击的过程中,攻击者首先会寻找存在XSS安全漏洞的网页。一旦发现这样的目标,攻击者便会精心构造一个包含恶意脚本的URL。这个URL通常会被嵌入在电子邮件中,或者被放置在钓鱼网站上,作为一种诱饵。攻击者的目标是欺骗用户点击这个看似无害的链接,或者诱导用户访问某个特定的网页。12.2.1反射型XSS攻击当用户不慎点击了恶意链接或访问了恶意网页后,Web应用程序会将恶意代码作为响应返回给用户的浏览器。这样,恶意代码就会在用户的浏览器端得到执行。一旦恶意脚本在用户的浏览器上运行,它可能会执行各种恶意活动。例如,它可能会试图窃取用户的敏感信息,如Cookie和会话令牌,并把这些信息发送给攻击者。攻击者在获取了用户的会话信息后,就可以利用这些信息与Web服务器进行交互。这种交互可能会导致攻击者能够执行未经授权的操作,或者访问原本应该受到保护的数据。12.2.2存储型XSS攻击
存储型XSS漏洞是危害最为严重的XSS漏洞,它通常出现在那些允许用户输入内容,并将这些内容持久性地保存在Web服务器端的Web应用中。这些应用包括留言板、论坛、博客等。在这些应用中,用户可以输入各种内容,包括文本、图片、链接等。如果Web应用没有对用户输入的内容进行充分的安全检查和过滤,那么攻击者就可以通过输入包含恶意脚本代码的内容,将这些恶意代码注入Web服务器端。12.2.2存储型XSS攻击
当其他用户访问包含恶意代码的网站时,Web服务器会将这些恶意代码读取出来,然后再发送给用户,由于这些恶意代码被嵌入在看似正常的页面中,所以用户很难察觉到它们的存在。当用户在浏览器中打开这个页面时,浏览器会在用户的主机上解析并执行这些恶意代码。这样,攻击者就可以通过这种方式,影响到所有访问这些页面的Web用户。存储型XSS攻击的攻击代码持久性地保存在Web服务器中,不需要用户单击特定的URL就能够执行跨站脚本,并在用户端执行恶意代码。另外,利用存储型XSS漏洞可以编写危害性更大的XSS蠕虫,XSS蠕虫会直接影响到网站的所有用户,当一个地方出现XSS漏洞时,相同站点下的所有用户都可能被攻击。12.2.3DOM型XSS攻击文档对象模型(DocumentObjectModel,简称DOM)是一种独立于平台和编程语言的接口,它允许程序和脚本以动态的方式访问和更新文档的内容、结构以及样式。通过DOM处理后的结果,可以实时地反映在用户所浏览的页面上。在DOM中存在众多可供操作的对象,例如URL、location、refelTer等,是用户可以进行操控的。利用这些对象,客户端的脚本程序能够通过DOM,实现对页面内容的动态检查和修改。这一过程并不依赖于将数据提交至服务器端,而是直接在客户端获取DOM中的数据,并在本地执行。然而,在客户端获得并执行DOM中的数据过程中,如果这些数据没有经过严格的验证和过滤,就可能产生基于DOM的跨站脚本攻击漏洞。这类漏洞的存在,使得恶意代码有可能被注入DOM中,从而对用户的安全构成威胁。因此,对于DOM数据的处理,必须采取严谨的安全措施,以确保其安全性。传统的XSS漏洞都存在于用来向用户提供HTML响应页面的Web服务器中,而基于DOM的XSS漏洞则发生在客户端处理内容的阶段。基于DOM的XSS攻击源于DOM相关的属性和方法,在实现过程中被插入用于XSS攻击的脚本。XSS攻击是由于Web应用程序未对用户输入进行严格审查与过滤所引起的,但是恶意脚本却是在客户端的浏览器上执行,危害的也是客户端的安全。因此,对XSS的防范分为服务器和客户端两个方面。12.3XSS攻击的防御措施12.3.1服务器的防御措施
与其他输入验证不完备类型的安全漏洞类似,XSS漏洞的主要防御措施是对所有来自外部的用户输入进行完备检查,以“限制、拒绝、净化”的思路来进行严格的安全过滤。必须确定Web应用程序中用户输入数据被复制到响应页面中的每一种情况,这包括从当前请求中复制数据,以及用户之前输入的保存数据,还有通过带外通道的输入数据。为确保能够找出每一种情况,除仔细审查Web应用程序的全部源代码外,没有其他更好的办法。在确认出这些数据传递通道之后,为了消除XSS攻击风险,必须采取一种三重防御方法来阻止漏洞的发生,包括输入验证、输出净化和消除危险的注入点。12.3.1服务器的防御措施1.输入验证当Web应用程序在响应页面中展示用户输入的数据时,它必须对这些数据进行HTML编码,以净化任何潜在的恶意字符。所谓HTML编码,就是用相应的HTML实体替换掉那些变量字符。这一过程确保了浏览器能安全地处理那些可能包含恶意的字符,例如双引号“””、单引号“’”、尖括号“<>”以及符号“&”,将它们作为HTML文档的纯文本内容,而非结构元素。ASP、ASP.NET和PHP等开发平台都提供了HTMLEncode()函数,能够帮助应用程序开发人员完成HTML标签的编码转义,来减少XSS漏洞的风险。2.输出净化在Web应用的页面设计中,某些区域如果被用于插入用户输入的内容,将带来严重的安全威胁。因此,开发者需要努力寻找替代方案来执行必要的功能。例如,应当尽可能避免在现有的JavaScript代码中直接插入用户可以操控的数据。尽管Web应用可能会尝试以安全的方式在代码中插入数据,但这种做法可能会为攻击者提供机会,绕过应用所设置的防御性过滤器。一旦攻击者能够控制数据的插入点,他们就能轻易地注入恶意脚本命令,从而实施恶意操作。3.消除危险的注入点当Web应
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026陕西安科安全生产技术研究所有限公司招聘6人备考题库及一套完整答案详解
- 粉尘作业岗位职业健康防护
- 儿童服饰行业市场前景及投资研究报告:数据观察
- 茄子蓟马有效防治技术规范
- 呼吸防护用品使用管理办法
- 新员工三级安全教育考核办法
- 清淡饮食营养搭配规范
- 小麦条锈病流行预测应急预防方案
- 蔬菜轮作倒茬病虫害防控制度
- 农用运输车安全管理制度
- GB/T 45451.1-2025包装塑料桶第1部分:公称容量为113.6 L至220 L的可拆盖(开口)桶
- 自然灾害事故应急预案
- 邮政招聘笔试题库及答案
- 《土木工程力学(本)》形考作业1-5参考答案
- 暂予监外执行申请书
- 包神铁路公司站务管理细则
- 实验室高压气体安全应急演练方案
- 2023抽水蓄能电站水土保持技术规范
- DB51-T 2998-2023 四川省小型水库标准化管理规程
- 2024年航车安装维修合同范本
- 配电箱巡检表
评论
0/150
提交评论