对某网站进行XSS检测过程发现多个搜索页面调用同一函数,这些变量大部分都存在着过滤不严格的问题。大部分都是比较典型的XSS,对于典型XSS检测本站的大牛们在之前已经讲解的十分清晰了,我就不多说了。
主要向那些还未触及DOM XSS的初学者们分享一下我这次挖掘DOM XSS时学到的东西,起初在检测这个网站的这个变量时[http://XXXXXXXXXX/searchresult.html?title=]用的是各种闭合页面标签的方法进行测试,对反馈结果进行观察并没有发现XSS,接下来根据反馈的结果修改测试语句看看是否是[<>]或关键词被过滤,依然没有发现XSS。
这种情况下并不要急于放弃对这个函数进行检测,那样会漏掉DOM XSS。因为DOM XSS用上面的测试语句是无法被发现的,要检测出DOM XSS就需要对它的形成特性有最基础的了解
DOM XSS的特殊性就在于其要构成一个XSS需要拥有其构成的条件,这里引用一下大牛的文章内容作为参考资料方便初学者学习
以下就是DOM based XSS 的产生原因,我们只需要关注两个方面
A) 脏数据的输入 B) 脏数据的输出
location document.write(ln)
document.referrer innerHTML =
window.name outterHTML =
ajax response 写window.location 操作
jsonp 写javascript: (伪协议后内容的自定义)
form下的inputs框 eval、setTimeout 、setInterval 等直接执行
就以上面变量为例,介绍如何挖掘这种XSS首先将测试语句加到变量中http://www.2cto.com /searchresult.html?title=',alert(123),' 页面出现XSS
然后查看源代码找到',alert(123),'
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>',alert(123),'_快问搜索_PCgames快问</title>
<meta name="keywords" content="',alert(123),'" />
<script src="http://www.2cto.com /template/pcgames/header_js.jsp?title=',alert(123),'"></script>
前面的并没有问题,主要在于下面这个script 注入的脏数据被传进了上面这个链接,接着查看这个链接的源代码
document.writeln(' ',alert(123),' ');
页面中的document.write()输出了脏数据,导致了DOM XSS
出现这一 漏洞 原理是由于[IE的script src中引用的内容都会当作JS来渲染,无论后缀的特性]这样就造成了这个XSS。
寻找源代码中通过<script src="XXXXXXXXXX?title= 可控变量">代用的代码,观察 变量进入的src 页面,从中寻找可以利用' 用来 闭合标签,一个DOM XSS就被检测了出来 。
通过了解 形成DOM XSS必要条件去入手需找,这样就能发现 漏掉的DOM XSS。刚刚在强力SF教导下仔细修改了一下和初学者们分享一下因为是菜鸟所以写的有很多不妥和欠缺的地方,还请各位大牛们多多指导和纠正。
摘自 Fuck the w0rld!
查看更多关于基于DOM-XSS检测原理讲解 - 网站安全 - 自学php的详细内容...