码迷,mamicode.com
首页 > 其他好文 > 详细

一个跨域请求的XSS漏洞再续

时间:2015-06-07 21:29:31      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:

    上回提到,由于需要使用代理页面解决POST请求的跨域请求,需要在代理页面上执行传递的函数。所以我们做了白名单只有我们认可的回调函数才能在页面上执行,防止执行非法的JS方法,做脚本攻击。

    我们所采用的方式是,把白名单以及过滤方法单独提出作为单独的文件引入页面,然后进行使用(这就为新的漏洞提供了机会)。 

    本次漏洞出现的原因有两个:

  • 屏蔽了白名单的JS文件
  • 当前页面如果检测不到这个方法就直接不过滤了(为什么这么处理呢?防止白名单失败之后,由于某些原因,导致某种请求失败,导致流程不通。真是因为这个原因,给漏洞提供了机会。) 

    如何轻松的控制这个白名单?该漏洞利用的是:浏览器的xss filter特性。当URL中检测到xss攻击时,浏览器会自动过滤页面上的这个JS内容。就是利用这个原理,禁用了页面的白名单过滤函数,加上没有限制,导致可以直接绕过过滤函数,在页面上执行了攻击代码。

 

    经查,浏览器为了防止XSS攻击,过滤了URL中存在的JS地址就行过滤。访问下面的地址:

https://www.baidu.com/?xss=%3Cscript%20type%3D%22text%2Fjavascript%22%20src%3D%22https%3A%2F%2Fss1.bdstatic.com%2F5eN1bjq8AAUYm2zgoY3K%2Fr%2Fwww%2Fcache%2Fstatic%2Fprotocol%2Fhttps%2Fjquery%2Fjquery-1.10.2.min_f2fb5194.js%22%3E%3C%2Fscript%3E

   会发现这样的报错:

 The XSS Auditor refused to execute a script in ‘https://www.baidu.com/?xss=%3Cscript%20type%3D%22text%2Fjavascript%22%20src…ocol%2Fhttps%2Fjquery%2Fjquery-1.10.2.min_f2fb5194.js%22%3E%3C%2Fscript%3E‘ because its source code was found within the request. The auditor was enabled as the server sent neither an ‘X-XSS-Protection‘ nor ‘Content-Security-Policy‘ header.

    导致页面无法加载jquery的JS,认为这个JS是一个XSS攻击。

    这里面查到http协议头里有这么一个字段可以控制是否开启浏览器的XSS过滤功能。那就是:X-XSS-Protection。 

    那什么是X-XSS-Protection呢?这个是为了防范XSS的。可以通过设置他的值来开启和关闭是否过滤XSS,当然最好是开启这个功能,这里讲到的就是为了了解和学习http协议中的这个字段。那应该怎么配置呢?  

0 – 关闭对浏览器的xss防护  

1 – 开启xss防护  

1; mode=block – 开启xss防护并通知浏览器阻止而不是过滤用户注入的脚本。  

1; report=http://site.com/report – 这个只有chrome和webkit内核的浏览器支持,这种模式告诉浏览器当发现疑似xss攻击的时候就将这部分数据post到指定地址。

    当开启XSS防护之后,浏览器会隐藏对反射性XSS的输出。

    在这里,我的解决方案有两个:

  • 将过滤方法放在页面内,不采用外联的形式;
  • 或者检测不到这个检测方法的时,直接阻止流程继续。 

    XSS的战斗不止。

 

 

参考资料:

https://www.imququ.com/post/web-security-and-response-header.html

http://drops.wooyun.org/tips/1166

http://blogs.msdn.com/b/ie/archive/2008/07/02/ie8-security-part-iv-the-xss-filter.aspx

http://blogs.msdn.com/b/ieinternals/archive/2011/01/31/controlling-the-internet-explorer-xss-filter-with-the-x-xss-protection-http-header.aspx

https://msdn.microsoft.com/en-us/library/dd565647(v=vs.85).aspx

 

 

一个跨域请求的XSS漏洞再续

标签:

原文地址:http://www.cnblogs.com/xiaoheimiaoer/p/4559092.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!