记录黑客技术中优秀的内容, 传播黑客文化,分享黑客技术精华

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

2015-06-10 08:30

 上回提到,由于需要使用代理页面解决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的战斗不止。

知识来源: www.2cto.com/Article/201506/406232.html

阅读:102290 | 评论:0 | 标签:xss 漏洞

想收藏或者和大家分享这篇好文章→复制链接地址

“一个跨域请求的XSS漏洞再续”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

公告

关注公众号hackdig,学习最新黑客技术

推广

工具

标签云