XSS跨站脚本攻击漏洞之1原理及分类

说在开头:文章是我通过查询资料后按照自己的理解总结出来的,所以如果有说法不对的地方,欢迎大佬指正~


一、XSS漏洞介绍

1.简介

XSS全称跨站脚本(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故缩写为XSS。
跨站点脚本(XSS)攻击是一种针对网站应用程序的注射型攻击,攻击者在可信的网页中嵌入恶意代码,用户访问可信网页时触发XSS而被攻击。

2.原理

攻击者在有XSS漏洞的前端页面嵌入恶意代码,导致受害者访问页面再不知情的情况下触发恶意代码,获取到受害者的信息。
形成XSS漏洞的原因,是对输入输出的内容过滤不严格,构造的恶意js代码被前端执行。

3.攻击过程

画个图来展示一下它的大致攻击过程:
XSS跨站脚本攻击漏洞之1原理及分类_第1张图片

  • 常见的恶意JS脚本有获取用户的cookie、或者是键盘钩子来记录用户的键盘输入。

二、XSS的分类

XSS漏洞分为三个类型:反射型、存储型、DOM型。

1.反射型

反射型XSS是一次性的,非持久型攻击。

可能的攻击方式:
攻击者可以通过电子邮箱等方式将包含XSS的恶意js代码的链接发送给目标用户。当用户访问该链接时,攻击者的恶意服务器接收该目标用户的请求并进行处理,然后恶意服务器把带有XSS代码的数据发送给目标用户的浏览器,浏览器解析这段恶意js代码以后,就会触发XSS漏洞。

2.存储型

存储型XSS是一种持久型XSS,攻击脚本将被永久的存放在目标服务器的数据库或文件中,具有很高的隐蔽性。

可能的攻击方式:
这种攻击方式多见于论坛博客和留言板,攻击者在发帖的过程中将恶意脚本连同正常信息一起注入帖子的内容中,随着帖子被服务器存储下来,恶意脚本也永远地被存放在服务器的后端存储器中,当其他用户浏览这个被注入了恶意脚本的帖子时,恶意脚本会在他们的浏览器中得到执行。

3.DOM型

DOM:Document Object Model,它的作用是可以使程序和脚本能够动态访间和更新文档的内容、结构及样式。
DOM型XSS也是反射型XSS的一种,它是基于DOM文档对象模型的一种漏洞。

HTML的标签都是节点,而这些节点组成了DOM的整体结——节点树。
通过HTML DOM,树中的所有节点均可通过JavaScript进行访问。
所有HTML元素(节点)均可被修改,也可以创建或删除节点。
再画个图来展示一下HTML DOM树的结构:
XSS跨站脚本攻击漏洞之1原理及分类_第2张图片

在网站页面中有许多元素,当页面到达浏览器时,浏览器会为页面创建一个顶级的Document object文档对象,接着生成各个子文档对象,每个页面元素对应一个文档对象,每个文档对象包含属性、方法和事件。可以通过JS脚本对文档对象进行编辑,从而修改页面的元素。

也就是说,客户端的脚本程序可以通过DOM动态修改页面内容,从客户端获取DOM中的数据并在本地执行。由于DOM是在客户端修改节点的,所以基于DOM型的XSS漏洞不需要与服务器端交互,它只发生在客户端处理数据的阶段。

  • 如果这几段理论知识读得你云里雾里、依然搞不懂到底什么是DOM型XSS,不要着急,我稍后会发表的两篇文章,是在DVWA和Pikachu中对XSS进行利用和绕过,结合实例来理解应该会比较好懂~

可能的攻击方式:
攻击者提交一个经过专门设计的URL,其中包含XSS代码。当用户请求这个URL时, 服务器的响应不会以任何形式包含攻击者的脚本。而当用户的浏览器处理这个响应时,DOM对象就会处理XSS代码,导致存在XSS漏洞。

根据上面对三种类型XSS的原理分析,也不难看出它们三者的危害程度:
存储型>反射型>DOM型

你可能感兴趣的:(XSS,web安全攻防)