xss dom型
1、发生场景
目标网站某处,响应页面中包含脚本,会读取数据作为eval等危险函数的参数或者直接赋值为innerHTML等敏感属性,从而造成危害。
参数来源可能是地址栏中的直接参数、路径参数或者hash,也可能是保存在cookie或本地存储中,还可能是当前页面的js变量、html元素的属性值或文本中。
换个角度来说,参数可能是在存在dom型漏洞响应页面对应的请求中,也可能是早已被攻击者存储到服务端的数据。
2、利用过程
攻击者测试发现dom型漏洞,有两种情况。
(1)对应反射型,受害者用户提交的请求中包含payload,或者在hash部分
(2)对应存储型,攻击者先提交payload保存到服务端,再由受害者用户访问
dom型漏洞,payload可能并不会提交到服务端
3、测试步骤
目前并没有太好的自动化分析方法,主要是分析可受攻击者控制的参数的流向,以及响应html中的敏感函数或属性。
判断,是否可以构造导致执行危害代码。
4、防护
((1)dom型xss的防护主要由前端进行,因为有可能payload并不会发送到服务端,以及payload长期保存在cookie和本地存储等情况
(2)尽量避免使用eval等危险函数,或者innerHTML等敏感属性
(3)参数在被危险函数或敏感属性使用前,进行敏感字符检查和字符转义