本篇致力于介绍xss漏洞基础,xss高阶将在不久发布,希望各位师傅能够相互学习,同时也希望能为萌新指导一些方向。
xss漏洞原理
跨站脚本Cross Site Scripting ,简称为xss或跨站脚本或跨站脚本攻击)是针对网站应用程序的安全漏洞攻击技术,是代码注入的一种,它允许恶意用户将代码注入网页,其他用户在浏览网页时就会受到影响 用户利用xss代码攻击成功后,可能层到很高的权限(如执行 些操作〉、私密网页内容、会话和cookie等各种内容。
xss攻击可以分为三种:反射型、存储型和DOM型。
1.反射性xss
反射型xss又称非持久型xss ,这种攻击方式往往具有 一次性。
攻击方式:攻击者通过电子邮件等方式将包含xss代码的恶意链接发送给目标用户。当目标用户访问该链接时,服务器接收该目标用户的请求并进行处理,然后服务器把带有xss代码的数据发送给目标用户的浏览器,浏览器解析这段带有xss代码的恶意脚本后,就会触发xss漏洞。
2.存储型xss
存储型xss又称持久型xss ,攻击脚本将被永久地存放在目标服务器数据库或文件中,具有很高的隐蔽性。
攻击方式这种攻击多见于论坛、博客和留言板,攻击者在发帖的过程中,将恶意脚本连同正常信息一起注入帖子的内容中。随着帖子被服务器存储下来,恶意 脚本也永久地被存放在服务器的后端存储器中 当其他用户浏览这个被注入了恶意脚本的帖子时,恶意脚本会在他们的浏览器中得到执行。
例如恶意攻击者在留言板中加入以下代码
<script>alert(/hacker by hacker/)</script>
当其他用户访问留言板时,就会看到一个弹窗。可以看到,存储型xss 的攻击方式能够将恶意代码永久地嵌入一个页面中,所有访问这个页面的用户都将成为受害者。如果我们能够警慎对待不明链接,那么反射型xss攻击将没有多大作为,而存储xss则不同,由于它注入在某些我们信任的页面,因此无论我们多么小心,都难免会受到攻击。
3.DOM型xss
DOM全称Document Object Model ,使用DOM可以使程序和脚本能够动态访问和更新文档的内容、结构及样式。DOM xss其实是一种特殊类型的反射型xss ,它是基于DOM文档对象模型的一种漏洞。HTML的标签都是节点,而这些节点组成了 DOM 的整体结构一一节点树。通过HTML DOM ,树中的所有节点均可通过JavaScript进行访问。所有HTML元素(节点)均可被修改,也可以创建或删除节点 HTML
DOM树结构如图
在网站页面中有许多元素,当页面到达浏览器时,浏览器会为页面创建一个顶级的Document object文档对象,接着生成各个子文档对象,每个页面元素对应一个文档对象,每个文档对象包含属性、方法和事件 可以通过JS脚本对文档对象进行编辑,从而修改页面的元素 也就是说,客户端的脚本程序可以通过DOM动态修改页面内容,从客户端获取DOM 中的数据并在本地执行。由于DOM是在客户端修改节点的,所以基于DOM型的xss漏洞不需要与服务器端交互,它只发生在客户端处理数据的阶段。