首页 | 安全文章 | 安全工具 | Exploits | 本站原创 | 关于我们 | 网站地图 | 安全论坛
  当前位置:主页>安全文章>文章资料>网络安全>文章内容
Content-Type 防范 XSS 绕过
来源:http://www.woyigui.cn 作者:woyigui 发布时间:2011-08-02  

一、前言
09 年写过一篇文章:json xss 防范(http://www.woyigui.cn/2009/04/28/json-xss/)。文章描述了控制Content-type类型,用于 json 回调 callback 函数接口(如:http://y.baidu.com/vote/data/detail_vote/290b873e69f2ec33a1e0c9f2?alt=html&callback=window.alert%28document.cookie%29&t=1294931209000 )XSS攻击的防范:

1
2
3
4
5
<?PHP
  header("Content-type: application/json");
  $woyigui = 

一、前言
09 年写过一篇文章:json xss 防范(http://www.woyigui.cn/2009/04/28/json-xss/)。文章描述了控制Content-type类型,用于 json 回调 callback 函数接口(如:http://y.baidu.com/vote/data/detail_vote/290b873e69f2ec33a1e0c9f2?alt=html&callback=window.alert%28document.cookie%29&t=1294931209000 )XSS攻击的防范:

1
2
3
4
5
___FCKpd___1

因为之前公司全使用的是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 方案即可。

GET
["xss"]; echo $woyigui; ?>

因为之前公司全使用的是PHP代码,所以针对PHP代码此方案是相当有效的。时过变迁,换了公司后开始接触java\MVC等等框架,发现之前XSS解决方案针对现有的场景已经失效。
二、漏洞描述
最近测试发现,当文件后缀为 .htm\.html 后缀的情况下设置 application/json 等头部时,在 IE 浏览器下将不起作用,脚本依旧会执行。比如:

___FCKpd___2

返回头部:

___FCKpd___3

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

___FCKpd___4

如果采用控制文件内容方案设置 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 方案即可。


 
[推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论:
  热点文章
·一句话木马
·samcrypt.lib简介
·教你轻松查看QQ空间加密后的好友
·web sniffer 在线嗅探/online ht
·Cisco PIX525 配置备忘
·用Iptables+Fedora做ADSL 路由器
·检查 Web 应用安全的几款开源免
·SPIKE与Peach Fuzzer相关知识
·Md5(base64)加密与解密实战
·asp,php,aspx一句话集合
·NT下动态切换进程分析笔记
·风险评估中的渗透测试
  相关文章
·PHP中的密码学算法及其应用2-对
·web sniffer 在线嗅探/online ht
·利用PHP编程防范XSS跨站脚本攻击
·asp,php,aspx一句话集合
·常见 Webshell 的检测方法及检测
·浅谈Ddos攻击攻击与防御
·浅谈新型的sql注入测试
·Web开发框架安全杂谈
·Auto pentesting. Nmap, SSLscan
·记录一次网站被黑抓马记
·从真实故事说起 读黑客战术社会
·麻烦的终结者
  推荐广告
CopyRight © 2002-2018 VFocuS.Net All Rights Reserved