一.反射型XSS
定义:反射型XSS通常出现在搜索等功能中,需要被攻击者点击对应的链接才能触发,通常在URL中构造,将恶意链接发送给目标用户。当用户访问该链接时候,会向服务器发起一个GET请求来提交带有恶意代码的链接。造成反弹型XSS ,主要是GET类型且受到XSS Auditor、NoScript等防御手段的影响较大。可以通过报错的sql语句构造xss。
攻击流程
DOM型XSS
定义:DOM型XSS不同之处在于DOM型XSS一般和服务器的解析响应没有直接关系,而是在JavaScript脚本动态执行的过程中产生的。不经过后端,DOM-XSS漏洞是基于文档对象模型(Document Objeet Model,DOM)的一种漏洞,DOM-XSS是通过url传入参数去控制触发的,其实也属于反射型XSS。在网站页面中有许多页面的元素,当页面到达浏览器时浏览器会为页面创建一个顶级的Document object文档对象,接着生成各个子文档对象,每个页面元素对应一个文档对象,每个文档对象包含属性、方法和事件。可以通过JS脚本对文档对象进行编辑从而修改页面的元素。也就是说,客户端的脚本程序可以通过DOM来动态修改页面内容,从客户端获取DOM中的数据并在本地执行。基于这个特性,就可以利用JS脚本来实现XSS漏洞的利用。
二.储存型XSS
定义:储存型XSS相比反射型来说危害较大,此类xss不需要用户点击特定的url就能执行跨站脚本,攻击者事先将恶意JavaScript代码上传或存储漏洞服务器中,把攻击载荷存入服务器中,造成持久化的攻击。只要受害者浏览包括含此恶意的代码的页面就会执行恶意代码。常见的就是在博客留言板、反馈投诉、论坛评论、将恶意代码和正文都存入服务器的数据库。每次访问都会触发恶意代码。
攻击流程
Blind型XSS
定义:Blind XSS是储存型XSS的一种,它保存在某些存储中,当一个“受害者”访问这个页面时执行,并且在文档对象模型(DOM)中呈现payload。它被称为Blind的原因是因为它通常发生在通常不暴露给用户的功能上。
三.反射型和存储型区别:
反射性 | 存储型 |
---|
绝大部分情况下,输入在哪里,输出就在哪里 | 输入在 A 处进入数据库, 而输出则可能出现在其它任何用到数据的地方 | 输入大部分位于地址栏或来自 DOM 的某些属性,也会偶尔有数据在请求中(POST 类型) | 输入大部分来自 POST/GET 请求,常见于一些保存操作中 |
四.HttpOnly绕过
HttpOnly简介:如果在cookie中设置了HttpOnly属性,那么通过js脚本将无法读取到cookie信息,这样能有效的防止XSS攻击
绕过方法:
- 浏览器未保存账号密码:需要xss产生登录地址,利用表单劫持
- 浏览器保存账号密码:产生在后台的xss,存储型xss如留言等,浏览器读取账号密码
五.自动化工具说明
- XSStrike
- burpsuit
|