赞
踩
一、介绍
反射型和存储型都是通过后台输出,DOM xss是纯前台的漏洞
• 反射型
发出请求时,XSS代码出现在URL中,作为输入提交到服务器,服务器解析后响应,在响应的内容中出现这段XSS代码。大多只能影响单一用户。
• 存储型
提交的XSS代码会存储在服务端(数据库、内存、文件系统等),下次请求目标页面时不用再提交XSS代码。可能会影响到网站的众多用户。
• DOM型
DOM XSS的XSS代码并不需要服务器解析响应的直接参与,触发XSS靠的就是浏览器端的DOM解析,可以认为完全是客户端的事情,无法通过WAF防护。
二、哪里有DOM XSS
1、js中,从url中获得参数并将其作为js执行
检查eval(), execScript(), setInterval(), setTimeout(),Function()参数是否通过URL可控。
这些关键字中,它们的参数作为js/html的代码进行执行,即可以动态执行代码。
2、如果输出的来源是用户,则有XSS风险
innerHTML、document.write
例子1:访问http://job.csdn.net/?alert(1)就会弹框(location.search返回当前 URL 的查询部分)。
zzsc.js代码为:
var i=0;
if(self.location.search!=""){
var V=self.location.search;
eval(V);
}
例子2:见https://www.cnblogs.com/fairyting/p/12630548.html
innerHTML属性导致
例子3:HTTP 请求 http://www.DBXSSed.site/welcome.html?name=zhangsan 使用以下的脚本打印出登录用户zhangsan的名字,即
<script>
var pos=docmnent.URL.indexOf("name=")+5 :
document.write(document.URL.substring(pos,document.URL.length)) ;
</script>
如果这个脚本用于请求http://www.DBXSSed.site/wPJconle.welcome?name=<script>alert("XSS")</script>
时,就导致 XSS 攻击的发生。
例子4:
https://10.122.22.33/a/b/c?d=javascript:alert(1)%2F%2F 会弹框
原因是查看F12源码,会把d的值输入到iframe的src中,导致xss
<iframe src="javascript:alert(1)//?token=1234567" >
例子5:jquery的dom xss漏洞 CVE-2016-7103
location.hash获取URL的锚部分(从#号开始的部分)
启动nginx,建立test.html页面,内容如下:
<html>
<head>
<title>JQuery-xss-test</title>
<script src="https://code.jquery.com/jquery-1.6.1.min.js"></script>
<script>
$(document).ready(function(){
try { $(location.hash) } catch(e) {}
})
</script>
</head>
<body>
Jquery xss test.
</body>
</html>
在浏览器中访问该页面http://localhost/test.html#<img src=1 onerror=alert(1)>
,即可弹框。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。