IIS6中的解析漏洞
下面是iis6文件解析的原理:
1、當WEB目錄下,文件名以 xxx.asp;xxx.xxx 來進行命名的時候,此文件將送交asp.dll解析(也就是執行腳本)
2、當WEB目錄下,在訪問以 xxx.asp 命名的目錄下的任意文件時,此文件將送交asp.dll解析(也就是執行腳本)
我們都知道IIS6中間件主要解析的就是asp語言的文件,如果你放入一個JAVA語言的文件,php語言的文件他是不會進行解析的,只能當做文本文件進行顯示出來,而里面語法所表達的意思是不會執行的。那么從iis底層審計原理和測試發現IIS6在解析文件時存在如下問題:
1、后綴如下會被當做asp程序進行執行 .asp .cer .asa .cdx
2、IIS 6.0在處理含有特殊符號的文件路徑時會出現邏輯錯誤,從而造成文件解析漏洞。這一漏洞有兩種完全不同的利用方式: /test.asp/test.jpg test.asp;.jpg
為什么說這樣的解析我們叫做漏洞呢?而不叫做多一種解析方式呢?
主要的原因是很多研發在編寫上傳功能的時候會進行黑名單活著白名單的判斷,而往往不了解這種解析漏洞,忽略了這種校驗,從而被其他人繞過上傳能解析的大小馬。
比如:有一個頭像上傳功能,開發者后臺只允許上傳后綴為jpg的文件,其他文件不允許上傳,而黑客利用第二條解析漏洞上傳了個1.asp;.jpg這時候能順利的將該文件上傳到服務器中,如果服務器只是將其按照圖片解析,那么里面插入的asp馬腳本就解析不成功無法發揮馬的作用,但是iis6會將其安裝asp文件解析,因此這個馬就能起到馬的作用,從而被黑客利用。
而iis6由于是設計上的缺陷,因此該漏洞沒有廠家的修復方案,只要研發在本身上傳功能上對上述漏洞進行過濾。
IIS7/IIS7.5中的解析漏洞
漏洞影響 IIS7 及IIS7.5 在使FastCGI方式調用php時,在php.ini里設置cgi.fix_pathinfo=1
使得訪問任意文件URL時,在URL后面添加“/x.php”等字符時,該文件被iis當php文件代碼解析。
如制作1.gif圖片馬(在圖片中插入php馬腳本)正常情況下訪問 http://127.0.0.1/1.gif 的內容為正常的圖片,里面的php腳本并不會執行,因為IIS7/IIS7.5只會按照圖片的解析格式來進行解析。當訪問 http://127.0.0.1/1.gif/1.php可以看到1.gif里的php代碼被iis解析執行了。 那么“黑客”在具體利用網站漏洞的時候,先可以通過網站提供的圖片上傳功能(也可以是其他的手段)上傳一個包含了惡意PHP代碼的圖片文件。然后通過上面描敘方法,讓iis解析執行任意惡意的php代碼,控制網站及主機,最終導致網站被“脫庫”、“掛馬”、“植入非法seo鏈接”等等嚴重后果。
IIS7/IIS7.5解析漏洞的修復方案有如下幾個:
第1種方案:繼續使用FastCGI方式調用PHP,要解決這個安全問題可以在php.ini里設置 cgi.fix_pathinfo=0 ,修改保存后建議重啟iis(注意可能影響到某些應用程序功能)。
第2種方案:使用ISAPI的方式調用PHP。(注意:PHP5.3.10已經摒棄了 ISAPI 方式)
第3種方案:可以使用其他web服務器軟件,如Apache等。
IIS漏洞發展史
在文章的最后我們引用“千里目實驗室“搜集的近十五載的IIS相關漏洞,中、高危漏洞共計39個,其中15年爆發的(MS15-034)HTTP.sys 遠程執行代碼漏洞和16年的(MS16-016)WebDAV 特權提升漏洞影響范圍尤其廣泛。