赞
踩
原理:
DOM是一个树状的模型,js可以对树中的文档对象进行修改,而改变页面的元素,dom型xss就是通过函数获取到输入的值,然后拼接到代码中,如果包含恶意代码,则当js代码执行去改变页面元素的时候会导致恶意代码被执行,从而发生xss。
特点:
和反射型xss及存储型xss不同的是,DOM型xss不经过服务端,只在前端执行
实例:
以pikachu靶场中的xss_dom_x为例
将'><img src="#" οnmοuseοver="alert('xss')">输入输入框中
点击请说出你的伤心往事按钮,可以看到url中text的值
再点击有些费劲心机想要……这段话,代码执行成功
我们来分析它的代码
这是输入框的代码
点击输入框提交后,这里会接收到test值,并且触发函数中的代码,所以我们就看到了有些费劲心机……这些字,可以看到οnclick=‘domxss()’这里,点击就会触发domxss()
接下来我们来看domxss()的代码,location.search的作用是设置或返回当前 URL 的查询部分(问号 ? 之后的部分),即返回了?text=我们输入的值,第二段代码str. split("text=")[1]),将str以text=隔开形成一个数组,也就是[?,我们的值],[1]就是取数组的第二个值,txss就是我们输入的值了,下面的正则表达式的意思是,最前面的“/”与最后面的“/”是分隔符,g是全局变量,+代表一个或连续多个,将\替代为空。由于我们输入的值没有\,所以xss还是等于我们的值,然后我们输入的值就被拼接到了下面,我们的代码将前面的值提前闭合了,并在后面加入了我们的js代码,所以导致我们的代码被执行,从而发生xss。
代码审计篇:
location.hash
location.search
document.referer
innerHTML
indexOf
document.getElementById
防御方法:
主要是检查输入的地方,和会发生dom型xss的函数
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。