FreeBuf上有比較詳細的介紹了,我就copy下呀舔,記錄下對我來說有用的東西吧!
0x00 什么是IIS
Internet Information Services(IIS,以前稱為Internet Information Server)互聯(lián)網(wǎng)信息服務是Microsoft公司提供的可擴展Web服務器外恕,支持HTTP,HTTP/2乡翅,HTTPS鳞疲,F(xiàn)TP,F(xiàn)TPS蠕蚜,SMTP和NNTP等尚洽。起初用于Windows NT系列,隨后內置在Windows 2000波势、Windows XP Professional翎朱、Windows Server 2003和后續(xù)版本一起發(fā)行,但在Windows XP Home版本上并沒有IIS尺铣。IIS目前只適用于Windows系統(tǒng)拴曲,不適用于其他操作系統(tǒng)。
根據(jù)Netcraft在2017年2月的數(shù)據(jù)顯示凛忿,IIS在“百萬最繁忙網(wǎng)站”中的市場份額為10.19%乐纸,成為全球第三大網(wǎng)絡服務器,落后于Apache 41.41%和 Nginx 28.34%抵知。目前流行的Windows版本都默認安裝IIS服務 ,但同時 IIS的安全性一直被業(yè)內詬病,一旦IIS出現(xiàn)高危漏洞威脅將會非常嚴重委乌。
在接觸IIS漏洞之前我們先來了解下不同Windows系統(tǒng)下默認內置的IIS版本,以便更好的理解和區(qū)分IIS漏洞的影響范圍:
0x01 什么是IIS短文件
1. IIS短文件漏洞的由來
Microsoft IIS 短文件/文件夾名稱信息泄漏最開始由Vulnerability Research Team(漏洞研究團隊)的Soroush Dalili在2010年8月1日發(fā)現(xiàn)荣回,并于2010年8月3日通知供應商(微軟公司)遭贸。微軟公司分別于2010年12月1日和2011年1月4日給予答復下個版本修復。2012年6月29日心软,此漏洞公開披露(中危)壕吹。
此漏洞實際是由HTTP請求中舊DOS 8.3名稱約定(SFN)的代字符(?)波浪號引起的。它允許遠程攻擊者在Web根目錄下公開文件和文件夾名稱(不應該可被訪問)删铃。攻擊者可以找到通常無法從外部直接訪問的重要文件耳贬,并獲取有關應用程序基礎結構的信息。
Microsoft IIS 波浪號造成的信息泄露是世界網(wǎng)絡范圍內最常見的中等風險漏洞猎唁。這個問題至少從1990年開始就已經(jīng)存在咒劲,但是已經(jīng)證明難以發(fā)現(xiàn),難以解決或容易被完全忽略诫隅。
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(遠程啟用<customErrors>或沒有web.config)
IIS 7.5沛硅,Windows 2008(經(jīng)典管道模式)
注意:IIS使用.Net Framework 4時不受影響
經(jīng)驗證眼刃,以上受影響范圍主要是針對HTTP GET方法,且需要同時安裝ASP.NET應用程序摇肌。該漏洞發(fā)現(xiàn)者在2014年再次披露:在測試IIS 7.5(Windows 2008 R2)和IIS 8.0(Windows 2012)過程中擂红,當使用OPTIONS來代替GET 方法時,如果請求中的短文件名是存在的围小,IIS就會返回一個不一樣的錯誤信息昵骤。利用這種特點,攻擊者就可以在最新的IIS版本中肯适,實現(xiàn)基于短文件名的文件或目錄掃描了变秦。
目前IIS支持短文件名猜測的HTTP方法主要包括:DEBUG、OPTIONS框舔、GET蹦玫、POST赎婚、HEAD、TRACE六種樱溉,經(jīng)千里目實驗室驗證挣输,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
2.2漏洞危害:
2.2.1 利用“~”字符猜解暴露短文件/文件夾名 (主要危害)
Windows 支持以 8.3 格式生成與 MS-DOS 兼容的(短)文件名绢馍,以允許基于 MS-DOS 或 16 位 Windows的程序訪問這些文件。在cmd下進入IIS網(wǎng)站根目錄C:\inetpub\wwwroot輸入“dir /x”即可看到短文件名的效果:
如上圖是Windows 10內置的IIS 10.0默認站點根目錄肠套,iisstart.htm和iisstart.png是網(wǎng)站默認文件,文件名前綴字符長度均沒有達到9位猖任,所以沒有短文件名你稚。IIS10test.html是人為添加的網(wǎng)站文件,文件名前綴字符長度達到了9位朱躺,對應的短文件名為IIS10T~1.HTM刁赖。根據(jù)此特性,我們能夠通過訪問短文件名間接訪問它對應的文件长搀。
由于短文件名的長度固定(xxxxxx~xxxx)宇弛,因此攻擊者可直接對短文件名進行暴力破解 ,從而訪問對應的文件源请。
舉個例子枪芒,有一個數(shù)據(jù)庫備份文件 backup_20180101.sql ,它對應的短文件名是 backup~1.sql 谁尸。因此攻擊者只要暴力破解出backup~1.sql即可下載該文件舅踪,而無需破解完整的文件名。
IIS短文件名有以下幾個特征:
1.只有前六位字符直接顯示良蛮,后續(xù)字符用~1指代抽碌。其中數(shù)字1還可以遞增,如果存在多個文件名類似的文件(名稱前6位必須相同决瞳,且后綴名前3位必須相同)货徙;
2.后綴名最長只有3位,多余的被截斷皮胡,超過3位的長文件會生成短文件名痴颊;
3.所有小寫字母均轉換成大寫字母;
4.長文件名中含有多個“.”胸囱,以文件名最后一個“.”作為短文件名后綴祷舀;
5.長文件名前綴/文件夾名字符長度符合0-9和Aa-Zz范圍且需要大于等于9位才會生成短文件名,如果包含空格或者其他部分特殊字符,不論長度均會生成短文件裳扯;
我們可以在啟用.net的IIS下使用GET方法暴力列舉短文件名抛丽,原因是攻擊者使用通配符“*”和“?”發(fā)送一個請求到IIS,當IIS接收到一個文件路徑中包含“~”請求時,它的反應是不同的饰豺,即返回的HTTP狀態(tài)碼和錯誤信息不同亿鲜。基于這個特點冤吨,可以根據(jù)HTTP的響應區(qū)分一個可用或者不可用的文件蒿柳。如下圖所示不同IIS版本返回信息的不同:
上圖是由此漏洞發(fā)現(xiàn)者Soroush Dalili在其研究報告中給出的IIS短文件合法和不合法猜解響應信息的圖解:
訪問構造的某個存在的短文件名,會返回404漩蟆;
訪問構造的某個不存在的短文件名垒探,會返回400;
以上方法是在IIS較低版本+ASP.NET環(huán)境下使用GET方法反復循環(huán)猜測怠李,直到猜解出短文件名圾叼。
但是千里目實驗室在真實環(huán)境驗證發(fā)現(xiàn),在IIS高版本(如:IIS 8.0/IIS 8.5/IIS 10.0)捺癞,即使沒有安裝asp.net夷蚊,通過OPTIONS和TRACE方法也可以猜解成功。這兩種方法猜解返回的HTTP狀態(tài)碼類型和上述截圖有些許出入髓介,但是不失為另一種利用方式惕鼓。
2.2.2 .Net Framework的拒絕服務攻擊 (副危害)
據(jù)Soroush Dalili在研究表明,攻擊者如果在文件夾名稱中向發(fā)送一個不合法的.Net文件請求唐础,.NeFramework將遞歸搜索所有的根目錄箱歧,消耗網(wǎng)站資源進而導致DOS問題。微軟認為此危害是可恢復的DOS一膨,將在后續(xù)SP版本修改叫胁,此處不做探討研究。