网站地图    收藏   

主页 > 后端 > 网站安全 >

Content-Type 防范 XSS 绕过 - 网站安全 - 自学php

来源:自学PHP网    时间:2015-04-17 14:46 作者: 阅读:

[导读] 一、前言09 年写过一篇文章:json xss 防范(http://www.2cto.com/Article/200904/37645.html)。文章描述了控制Content-type类型,用于json 回调callback 函数接口(如:http://y.baidu.com/vote/data/deta......

 

一、前言

09 年写过一篇文章:json xss 防范(http://www.2cto.com/Article/200904/37645.html)。

文章描述了控制Content-type类型,用于json 回调callback 函数接口(如:http://y.baidu.com/vote/data/detail_vote/290b873e69f2ec33a1e0c9f2?alt=html&callback=window.alert%28document.cookie%29&t=1294931209000 )

XSS攻击的防范:

 

 <?PHP

  header("Content-type: application/json");

  $woyigui = $_GET["xss"];

  echo $woyigui;

?>

 

因为之前公司全使用的是PHP代码,所以针对PHP代码此方案是相当有效的。时过变迁,换了公司后开始接触java\MVC等等框架,发现之前XSS解决方案针对现有的场景已经失效。

二、漏洞描述

最近测试发现,当文件后缀为.htm\.html 后缀的情况下设置application/json 等头部时,在IE 浏览器下将不起作用,脚本依旧会执行。比如:

 

xss.html?callback=<script>alert(1)</script>

返回头部:

 

HTTP/1.1 200 OK

Date: Mon, 11 Jul 2011 06:17:05 GMT

Server: Apache

Content-Type: application/json;charset=GBK

此时,在firefox 等浏览器里面执行会提示下载,脚本执行不成功,而当在IE 里面去访问这个文件的时候,脚本就会执行的。

比如utf-7 xss 的问题:

 

xss.htm?callback=%2B%2Fv9%20%2BADwAaAB0AG0APgA8AGIAbwBkAHkAPgA8AHMAYwByAGkAcAB0AD4AYQBsAGUAcgB0ACgAMQApADsAPAAvAHMAYwByAGkAcAB0AD4APAAvAGIAbwBkAHkAPgA8AC8AaAB0AG0APg-

如果采用控制文件内容方案设置application/json 头部去防范XSS,脚本也会执行的。

测试发现:

1、.html : 可被绕过

2、.htm:可被绕过

3、.txt:可被绕过

4、.php:可以防范

5、.do:可以防范

6、other:未测试

测试环境:

1、windows xp + ie6 + ie8

2、windows 7 + ie8 + ie9

 

三、原因

当请求的http url 文件名扩展为:.htm .html 时,IE 首先会优先根据文件扩展名来判断解析文件内容(而非优先选择application/json 头部做为首要依据),进而造成XSS 攻击成功,绕过防范方法;

联想:IE 图片XSS解析漏洞、utf-7 xss 等等以内容解析而非以扩展名解析的攻击例子。

 

四、细节

1、application/javascript 等类型在IE下也是不起作用的。

2、设置头部:Cache-Control: max-age=0,no-cache 后,在IE访问漏洞URL时,需要请求两次。

 

五、解决方案

解决方案众多,在生成的扩展为.html 等框架中,不要使用控制Content-Type 方案即可。

 

转载请注明:woyigui's blog

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论