當前位置:
首頁 > 最新 > IIS深入淺出之短文件漏洞知多少

IIS深入淺出之短文件漏洞知多少

什麼是IIS

Internet Information Services(IIS,以前稱為Internet Information Server)互聯網信息服務是Microsoft公司提供的可擴展Web伺服器,支持HTTP,HTTP/2,HTTPS,FTP,FTPS,SMTP和NNTP等。起初用於Windows NT系列,隨後內置在Windows 2000、Windows XP Professional、Windows Server 2003和後續版本一起發行,但在Windows XP Home版本上並沒有IIS。IIS目前只適用於Windows系統,不適用於其他操作系統。

根據Netcraft在2017年2月的數據顯示,IIS在「百萬最繁忙網站」中的市場份額為10.19%,成為全球第三大網路伺服器,落後於Apache 41.41%和Nginx 28.34%。目前流行的Windows版本都默認安裝IIS服務,但同時IIS的安全性一直被業內詬病,一旦IIS出現高危漏洞威脅將會非常嚴重。

在接觸IIS漏洞之前我們先來了解下不同Windows系統下默認內置的IIS版本,以便更好的理解和區分IIS漏洞的影響範圍:

圖1 各Windows版本默認IIS版本

IIS漏洞大全

千里目實驗室搜集了下近十五載的IIS相關漏洞,中、高危漏洞共計39個,其中15年爆發的(MS15-034)HTTP.sys 遠程執行代碼漏洞和16年的(MS16-016)WebDAV 特權提升漏洞影響範圍尤其廣泛。

圖2 近15年IIS漏洞大全

看了上面IIS 近十幾年的漏洞後,你也許會問,怎麼沒有看到本文的主人公「IIS短文件漏洞」呢?!在了解IIS漏洞大家庭前,我們先通過IIS短文件來了解下Windows下IIS的一些特性。

IIS短文件

1. IIS短文件漏洞的由來

Microsoft IIS 短文件/文件夾名稱信息泄漏最開始由Vulnerability Research Team(漏洞研究團隊)的Soroush Dalili在2010年8月1日發現,並於2010年8月3日通知供應商(微軟公司)。微軟公司分別於2010年12月1日和2011年1月4日給予答覆下個版本修復。2012年6月29日,此漏洞公開披露(中危)。

此漏洞實際是由HTTP請求中舊DOS 8.3名稱約定(SFN)的代字元(?)波浪號引起的。它允許遠程攻擊者在Web根目錄下公開文件和文件夾名稱(不應該可被訪問)。攻擊者可以找到通常無法從外部直接訪問的重要文件,並獲取有關應用程序基礎結構的信息。

Microsoft IIS 波浪號造成的信息泄露是世界網路範圍內最常見的中等風險漏洞。這個問題至少從1990年開始就已經存在,但是已經證明難以發現,難以解決或容易被完全忽略。

2. IIS短文件漏洞影響範圍及危害

? 2.1受影響的版本

IIS 1.0,Windows NT 3.51

IIS 3.0,Windows NT 4.0 Service Pack 2

IIS 4.0,Windows NT 4.0選項包

IIS 5.0,Windows 2000

IIS 5.1,Windows XP Professional和Windows XP Media Center Edition

IIS 6.0,Windows Server 2003和Windows XP Professional x64 Edition

IIS 7.0,Windows Server 2008和Windows Vista

IIS 7.5,Windows 7(遠程啟用或沒有web.config)

IIS 7.5,Windows 2008(經典管道模式)

注意:IIS使用.Net Framework 4時不受影響

(以上數據來源:https://www.securityfocus.com/archive/1/523424)

經驗證,以上受影響範圍主要是針對HTTP GET方法,且需要同時安裝ASP.NET應用程序。該漏洞發現者在2014年再次披露:在測試IIS 7.5(Windows 2008 R2)和IIS 8.0(Windows 2012)過程中,當使用OPTIONS來代替GET 方法時,如果請求中的短文件名是存在的,IIS就會返回一個不一樣的錯誤信息。利用這種特點,攻擊者就可以在最新的IIS版本中,實現基於短文件名的文件或目錄掃描了。

目前IIS支持短文件名猜測的HTTP方法主要包括:DEBUG、OPTIONS、GET、POST、HEAD、TRACE六種,經千里目實驗室驗證,IIS 8.0、IIS 8.5和IIS 10.0的短文件名稱均可以通過OPTIONS和TRACE方法被猜測成功。所以上述受影響版本需要再加上如下版本:

IIS 8.0,Windows 8, Windows Server 2012

IIS 8.5,Windows 8.1,Windows Server 2012 R2

IIS 10.0,Windows 10, Windows Server 2016

可以看到,IIS全部版本都存在短文件名泄漏的問題,微軟似乎忽視了這個問題。從微軟回復該漏洞發現者的消息可以看出,IIS短文件漏洞未達到安全更新標準,且需要確定何時在下一個邏輯版本中解決它。

? 2.2漏洞危害

2.2.1 利用「~」字元猜解暴露短文件/文件夾名 (主要危害)

Windows 支持以 8.3 格式生成與 MS-DOS 兼容的(短)文件名,以允許基於 MS-DOS 或 16 位 Windows的程序訪問這些文件。在cmd下進入IIS網站根目錄C:inetpubwwwroot輸入「dir /x」即可看到短文件名的效果:

圖3 IIS短文件名

如上圖是Windows 10內置的IIS 10.0默認站點根目錄,iisstart.htm和iisstart.png是網站默認文件,文件名前綴字元長度均沒有達到9位,所以沒有短文件名。IIS10test.html是人為添加的網站文件,文件名前綴字元長度達到了9位,對應的短文件名為IIS10T~1.HTM。根據此特性,我們能夠通過訪問短文件名間接訪問它對應的文件。

由於短文件名的長度固定(xxxxxx~xxxx),因此攻擊者可直接對短文件名進行暴力破解 ,從而訪問對應的文件。

舉個例子,有一個資料庫備份文件 backup_20180101.sql ,它對應的短文件名是 backup~1.sql 。因此攻擊者只要暴力破解出backup~1.sql即可下載該文件,而無需破解完整的文件名。

IIS短文件名有以下幾個特徵:

1.只有前六位字元直接顯示,後續字元用~1指代。其中數字1還可以遞增,如果存在多個文件名類似的文件(名稱前6位必須相同,且後綴名前3位必須相同);

2.後綴名最長只有3位,多餘的被截斷,超過3位的長文件會生成短文件名;

3.所有小寫字母均轉換成大寫字母;

4.長文件名中含有多個「.」,以文件名最後一個「.」作為短文件名後綴;

5.長文件名前綴/文件夾名字元長度符合0-9和Aa-Zz範圍且需要大於等於9位才會生成短文件名,如果包含空格或者其他部分特殊字元,不論長度均會生成短文件;

我們可以在啟用.net的IIS下使用GET方法暴力列舉短文件名,原因是攻擊者使用通配符「*」和「?」發送一個請求到IIS,當IIS接收到一個文件路徑中包含「~」請求時,它的反應是不同的,即返回的HTTP狀態碼和錯誤信息不同。基於這個特點,可以根據HTTP的響應區分一個可用或者不可用的文件。如下圖所示不同IIS版本返回信息的不同:

圖4 IIS 5.0 ~ IIS 7.X短文件猜解HTTP響應信息

上圖是由此漏洞發現者Soroush Dalili在其研究報告中給出的IIS短文件合法和不合法猜解響應信息的圖解:

訪問構造的某個存在的短文件名,會返回404;

訪問構造的某個不存在的短文件名,會返回400;

圖5 利用IIS 狀態碼猜解過程

以上方法是在IIS較低版本+ASP.NET環境下使用GET方法反覆循環猜測,直到猜解出短文件名。

但是千里目實驗室在真實環境驗證發現,在IIS高版本(如:IIS 8.0/IIS 8.5/IIS 10.0),即使沒有安裝asp.net,通過OPTIONS和TRACE方法也可以猜解成功。這兩種方法猜解返回的HTTP狀態碼類型和上述截圖有些許出入,但是不失為另一種利用方式。

2.2.2 .Net Framework的拒絕服務攻擊 (副危害)

據Soroush Dalili在研究表明,攻擊者如果在文件夾名稱中向發送一個不合法的.Net文件請求,.NeFramework將遞歸搜索所有的根目錄,消耗網站資源進而導致DOS問題。微軟認為此危害是可恢復的DOS,將在後續SP版本修改,此處不做探討研究。

3. IIS短文件漏洞復現和利用

3.1 IIS短文件漏洞復現

3.1.1 漏洞環境搭建

? 基於Win 10安裝默認IIS 10.0 (未安裝APS.NET)

? IIS短文件漏洞掃描Java程序(需要配置Java環境變數)

3.1.2 漏洞環境調試準備

IIS 安裝成功以後,會默認在C盤目錄下生成intpub目錄,網站的根目錄位於C:inetpubwwwroot,此時查看下根目錄是否存在短文件名:

由上圖可知,默認IIS 10.0 網站根目錄不存在短文件名,只有默認的htm和png文件,且名稱長度未達到生成短文件的要求。下面使用IIS短文件掃描程序檢測下有無短文件信息泄漏漏洞:

通過Result欄位可以看到,由於不存在短文件名,所以結果為不存在短文件漏洞。

3.1.3 漏洞環境復現

? 手動創建網站長文件名「IIS10test.html」 ,自動生成對應短文件名「IIS10T~1.HTM」

? 使用IIS短文件掃描程序再次掃描,掃描發現存在短文件漏洞,且通過HTTP OPTIONS方法成功猜解出短文件名稱:IIS10T.HTM

? 修改漏洞掃描程序,注視掉OPTIONS方法,嘗試是否還有其他HTTP方法可以猜解成功。

驗證發現,除了OPTIONS方法外,HTTP TRACE方法也能成功猜解出短文件名稱。

3.1.4 IIS漏洞OPTIONS、TRACE方法猜解分析

? OPTIONS方法猜解分析

由於上述OPTIONS方法請求了196次才猜測出短文件名,猜測成功返回404,猜測失敗返回的是200,失敗的組合比較多,所以下面主要分析下404猜測成功的請求如何通過OPTIONS方法獲取短文件名IIS10T.HTM的。如下圖:

? TRACE方法猜解分析

通過TRACE方法猜解的過程基本同上,只不過此HTTP方法猜解失敗返回的狀態碼不是200,而是501(未執行)。

3.2 IIS短文件漏洞利用

1. 深入爆破猜測文件全名

通過IIS短文件漏洞猜測出來的短文件名稱,需要繼續猜測出全名才可以在IIS上進行訪問,即IIS由於安全原因不支持短文件名訪問。以下是Soroush Dalili給出的幾種猜測文件全名的方法:

1) 通過對目標網站或同類型網站進行爬蟲,爬出建立一個字典庫,再與得到的短文件名來猜剩下的字元 ;

2) 利用fuzzdb(一個應用程序模糊測試(fuzzing)資料庫)來猜解;

3) 結合OWASP的dirbuster(一款路徑及網頁暴力破解的工具)。

Github上有研究人員已經用python將上述方法實現,並且獲取到了網站後台的用戶名和密碼,很好的利用了IIS短文件漏洞。

註: 研究報告地址:https://webbreacher.com/2014/10/23/tilde-enumeration/(推薦)

python程序下載:https://github.com/WebBreacher/tilde_enum(推薦)

2. 結合支持短文件特性軟體(Apache、Wordpress)

Acunetix研究指出當Apache運行在windows下,如果創建了一個長文件,那麼無需猜解長文件,直接用短文件就可以下載了。例如一個backup_20180101.sql的長文件,其短文件是BACKUP~1.SQL,攻擊者只需要提交BACKUP~1.SQL就可以直接訪問並下載該文件。

此外,有學者表明,其在安裝Wordpress備份插件之後,通過短文件名成功地訪問到了了WordPress博客的備份文件。

3. 繞過Basic and Windows認證

Soroush Dalilide研究中還提到,在某些IIS伺服器配置下,可以繞過Basic and Windows認證,猜解出認證目錄下的文件。舉例,如果需要訪問一個開啟認證的目錄下文件時,比如這個目錄是「AuthNeeded」,那麼可以通過如下方式訪問:

/AuthNeeded::$Index_Allocation/*~1*/.aspx 或者

/AuthNeeded:$I30:$Index_Allocation/*~1*/.aspx

4. IIS短文件漏洞局限性

此漏洞存在以下幾個局限點:

1) 此漏洞只能確定前6個字元,如果後面的字元太長、包含特殊字元,很難猜解;

2) 如果文件名本身太短(無短文件名)也是無法猜解的;

3) 如果文件名前6位帶空格,8.3格式的短文件名會補進,和真實文件名不匹配;

4) 如果文件夾名前6位字元帶點「.」,掃描程序會認為是文件而不是文件夾,最終出現誤報;

5) 不支持中文文件名,包括中文文件和中文文件夾。一個中文相當於兩個英文字元,故超過4個中文字會產生短文件名,但是IIS不支持中文猜測。

IIS短文件漏洞解決方案

通用漏洞修復方案

1) CMD關閉NTFS 8.3文件格式的支持

舉例:(1代表關閉,0代表開啟)

Windows Server 2008 R2:

? 查詢是否開啟短文件名功能:fsutil 8dot3name query

? 關閉該功能:fsutil 8dot3name set 1

Windows Server 2003:

? 關閉該功能:fsutil behavior set disable8dot3 1

不同系統關閉命令稍有區別,該功能默認是開啟的,對於大多數用戶來說無需開啟。

2) 修改註冊表禁用短文件名功能

? 快捷鍵Win+R打開命令窗口,輸入regedit打開註冊表窗口

? 找到路徑:

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlFileSystem,將其中的 NtfsDisable8dot3NameCreation這一項的值設為 1,1代表不創建短文件名格式

? 修改完成後,需要重啟系統生效

註:此方法只能禁止NTFS8.3格式文件名創建,已經存在的文件的短文件名無法移除,需要重新複製才會消失。

以下兩種方法僅適用於緩解GET 方法,其他方法依舊可以猜解。

3) 關閉Web服務擴展- ASP.NET

4) 升級netFramework至4.0以上版本

千里目實驗室解決方案

1) 強烈推薦使用深信服安全及服務-信服雲眼對IIS網站進行檢測掃描是否存在短文件漏洞,新用戶可申請30天免費試用,全天24小時不間斷進行事前監測;

2) 強烈推薦使用深信服AF下一代防火牆,在對應IIS伺服器區域配置IPS

策略,並升級最新IPS規則庫,對各種IIS短文件漏洞惡意猜測攻擊進行事前防禦。

參考鏈接:

[1] Windows如何從長文件名生成8.3文件名,URL:http://support.microsoft.com/kb/142982/en-us

[2] Soroush Dalili IIS短文件漏洞研究報告地址:

https://soroush.secproject.com/downloadable/microsoft_iis_tilde_character_vulnerability_feature.pdf

[3] SecurtiyFocus漏洞信息:https://www.securityfocus.com/archive/1/523424

[4] Acunetix研究結果:https://www.acunetix.com/blog/web-security-zone/windows-short-8-3-filenames-web-security-problem/

[5] Webbreacher研究結果:https://webbreacher.com/2014/10/23/tilde-enumeration/


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 千里目安全實驗室 的精彩文章:

基於區塊鏈域名的殭屍網路病毒分析

TAG:千里目安全實驗室 |