当前位置:   article > 正文

DOM型XSS

dom型xss

一、介绍
反射型和存储型都是通过后台输出,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);
}
  • 1
  • 2
  • 3
  • 4
  • 5

例子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>
  • 1
  • 2
  • 3
  • 4

如果这个脚本用于请求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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

在浏览器中访问该页面http://localhost/test.html#<img src=1 onerror=alert(1)>,即可弹框。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/335360
推荐阅读
相关标签
  

闽ICP备14008679号