XSS详解(一)
一、概述
- XSS(Cross Site Scripting)缩写为CSS,因易与层叠样式表CSS混淆,所以将跨站脚本攻击缩写为XSS。
- XSS攻击(跨站脚本攻击)通常指的是通过网页开发时留下的漏洞,注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。
- 产生的
原因
通常是在开发阶段没有实施过滤或净化措施
、或过滤的不严格
。 - 这些恶意网页程序通常是
JavaScript
,可以是Java,VBScript,ActiveX,Flash,甚至是普通的Html。 - 攻击成功后,攻击者可能得到更高的权限、私密网页内容、会话和Cookie等各种内容。
二、XSS的分类
- XSS大致分为以下三类
类型 | 定义 |
---|---|
反射型XSS | 最常见,将恶意脚本附加在URL中,诱使用户主动的去访问。 |
存储型XSS | 攻击者事先将恶意代码上传或存储至目标服务器,当受害者浏览包含恶意代码的页面即执行。 |
DOM型XSS | 与反射型XSS相似,但是作用于DOM文档对象模型的一种漏洞。 |
- 根据攻击点区分
类型 | 存储区 | 插入点 |
---|---|---|
反射型XSS | URL | HTML |
存储型XSS | 后端数据库 | HTML |
DOM型XSS | 前端存储 | 前端JavaScript |
2.1反射型XSS
反射型XSS是XSS分类中最常用的。
反射型 XSS 的利用一般是攻击者通过特定手法(如电子邮件),诱使用户去访问一个包含恶意代码的 URL,当受害者点击这些专门设计的链接的时候,恶意代码会直接在受害者主机上的浏览器执行。
此类 XSS 通常出现在网站的搜索栏、用户登录口等地方,常用来窃取客户端 Cookies 或进行钓鱼欺骗。
2.2存储型XSS
存储型XSS也称作持久型XSS
此类 XSS 不需要用户浏览特定 URL 就能执行跨站脚本,攻击者事先将恶意代码上传或储存到漏洞服务器中;当受害者浏览包含此恶意代码的页面就会执行恶意代码。
持久型 XSS 一般出现在交互性强的网站页面中,如
网站留言
、评论
、博客日志
等交互处。相对于反射型XSS,存储型XSS更加危险。反射型XSS的利用容易暴露,需要诱使用户区访问特定URL。而存储型只要等待用户访问就会触发。
2.3DOM型XSS
在网站页面中有许多页面的元素,当页面到达浏览器时浏览器会为页面创建一个顶级的Document object文档对象,接着生成各个子文档对象。
每个页面元素对应一个文档对象,每个文档对象包含属性、方法和事件。可以通过JS脚本对文档对象进行编辑从而修改页面的元素。
也就是说,客户端的脚本程序可以通过DOM来动态修改页面内容,从客户端获取DOM中的数据并在本地执行。基于这个特性,就可以利用JS脚本来实现XSS漏洞的利用。
三、常见XSS攻击向量
- alert()
//弹窗
<script>alert('xss')</script>
//方法用于显示一个带有指定消息和确定及取消按钮的对话框
<script>confirm('xss')</script>
//用于显示一个输入框和确定及取消的对话框
<script>prompt('xss')</script>
攻击向量是很多的,后期会尽量补全~