首頁 | 安全文章 | 安全工具 | 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
·SPIKE與Peach Fuzzer相關知識
·Cisco PIX525 配置備忘
·用Iptables+Fedora做ADSL 路由器
·檢查 Web 應用安全的幾款開源免
·asp,php,aspx一句話集合
·Md5(base64)加密與解密實戰
·NT下動態切換進程分析筆記
·風險評估中的滲透測試
  相關文章
·PHP中的密碼學算法及其應用2-對
·web sniffer 在線嗅探/online ht
·利用PHP編程防范XSS跨站腳本攻擊
·asp,php,aspx一句話集合
·常見 Webshell 的檢測方法及檢測
·淺談Ddos攻擊攻擊與防御
·淺談新型的sql注入測試
·Web開發框架安全雜談
·Auto pentesting. Nmap, SSLscan
·記錄一次網站被黑抓馬記
·從真實故事說起 讀黑客戰術社會
·麻煩的終結者
  推薦廣告
CopyRight © 2002-2020 VFocuS.Net All Rights Reserved
期本期特码