1 XSS漏洞简介
- 定义:跨站脚本(Cross-Site Scripting),本应该缩写为CSS,但是该缩写已被层叠样式脚本Cascading Style Sheets所用,所以改简称为XSS。也称跨站脚本或跨站脚本攻击。
- 本质:是一种针对网站应用程序的安全漏洞攻击技术,是代码注入的一种 。
- 原理:跨站脚本攻击XSS通过将精心构造的代码注入到网页中,并由浏览器解释运行这段JS代码,以达到恶意攻击的效果,当用户访问该网页时,XSS脚本就会被提取出来,浏览器解析这段XSS代码,用户就已经被攻击了。
- 特点:XSS主要基于JavaScript完成恶意的攻击行为,由于JS可以非常灵活地操作html、css和浏览器,使得跨站脚本攻击的“想象”空间特别大。
- 攻击对象:被攻击者的浏览器。
- 一般的攻击过程:
- 攻击者将恶意代码注入到服务器中(如论坛、留言板、邮件等);
- 用户在没有防备的情况下访问了服务器;
- 服务器将含有恶意代码的网页响应给客户端;
- 在客户端浏览器中触发JS恶意代码。
2 XSS漏洞分类
2.1 反射型XSS
- 定义:反射型XSS又称非持久型XSS。
- 特点:这种攻击方式往往具有一次性。
- 攻击方式:攻击者通过电子邮件等方式将包含xss代码的恶意链接发送给目标用户。当目标用户访问该链接时,服务器接收该目标用户的请求并进行处理,然后服务器把带有xss代码的数据发送给目标用户的浏览器,浏览器解析这段带有xss代码的恶意脚本后,就会触发xss漏洞。
2.2 存储型XSS
- 定义:存储型XSS又称持久型XSS。
- 特点:攻击脚本将被永久地存放在目标服务器的数据库或文件中,具有很高的隐蔽性。
- 攻击方式:这种攻击多见于论坛、博客和留言板,攻击者在发帖的过程中,将恶意脚本连同正常信息一起注入帖子的内容中。随着帖子被服务器存储下来,恶意脚本也永久地被存放在服务器的后端存储器中 。 当其他用户浏览这个被注入了恶意脚本的帖子时,恶意脚本会在他们的浏览器中得到执行 。
- 反射型与存储型SCC对比:
如果我们能够谨慎对待不明链接,那么反射型XSS攻击将没有多大作为,而存储型XSS则不同,由于它注入在一些我们信任的页面,因此无论我们多么小心,都难免会受到攻击。
2.3 DOM型XSS
2.3.1 节点树模型
- DOM全称Document Object Model,使用DOM可以使程序和脚本能够动态访问和更新文档的内容、结构及样式 。
- HTML 的标签都是节点,而这些节点组成了 DOM 的整体结构一一节点树。通过HTML DOM,树中的所有节点均可通过JavaScript进行访问 。 所有HTML元素(节点)均可被修改,也可以创建或删除节点 。
2.3.2 DOM型XSS
- 定义:DOM型XSS其实是一种特殊类型的反射型XSS,它是基于DOM文档对象模型的一种漏洞 。
- 网页的生成及修改:
- 在网站页面中有许多元素,当页面到达浏览器时,浏览器会为页面创建一个顶级的Document object文档对象,接着生成各个子文档对象,每个页面元素对应一个文档对象,每个文档对象包含属性、方法和事件 。
- 可以通过JS脚本对文档对象进行编辑,从而修改页面的元素 。 也就是说,客户端的脚本程序可以通过DOM动态修改页面内容,从客户端获取DOM中的数据并在本地执行。由于DOM是在客户端修改节点的,所以基于DOM型的xss漏洞不需要与服务器端交互,它只发生在客户端处理数据的阶段。
- 攻击方式:用户请求一个经过专门设计的URL,它由攻击者提交,而且其中包含XSS代码。服务器的响应不会以任何形式包含攻击者的脚本。 当用户的浏览器处理这个响应时, DOM对象就会处理XSS代码,导致存在XSS漏洞 。
3 危害
恶意用户利用xss代码攻击成功后,可能会得到很高的权限,XSS漏洞主要有以下危害:
- 盗取各种用户账号;
- 窃取用户Cookie资料,冒充用户身份进入网站;
- 劫持用户会话,执行任意操作;
- 刷流量,执行弹窗广告;
- 传播蠕虫病毒。
- 等等
4 总结
- 掌握XSS的攻击过程;
- 掌握XSS的分类及各类原理;
- 了解XSS的危害。
参考文献
- 《Web安全攻防:渗透测试实战指南》
|