IIS伺服器漏洞分析

2021-12-30 03:52:11 字數 2118 閱讀 9583

4月15日,在微軟補丁日上微軟公布了多個高危漏洞,其中乙個ms15-034 漏洞影響面最廣,會造成iis伺服器藍屏崩潰,特殊環境下或導致資訊洩露。阿里巴巴安全研究實驗室著重分析這一高危漏洞以及給國內網際網路帶來的影響。

一、資料

本次漏洞測試所使用網上流傳的poc進行修改。 

二、測試環境 

在win7 32 + iis 7環境下,使用前述的poc將可以使得win7藍屏從而導致iis被遠端拒絕服務。

三、漏洞原因 

經過簡單的分析,http!ulparseheader負責處理客戶端傳送的http頭部資料,本次漏洞出現在對http header 中」range」欄位的處理。

「range」欄位由http!ulpparserange負責解析,在該函式中有如下**:

以前述的poc為例,使用的range欄位為: 

range: bytes=2-18446744073709551615",即range.start =2,range.length=18446744073709551615-range.start+1=0xfffffffffffffffe,並將該結構儲存至httpparser物件結構中(偏移0x5b8)。(網上流傳的poc構造的range.start為0,導致這裡計算出來的range.length會溢位)

接著在函式uladjustrangestocontentsize中,相關**會將range.length與http get所請求的檔案大小進行對比,若range.length + range.start大於http請求檔案的真實大小, range.lenth將會被修復為正確的合法長度。在本例中,range.length已被構造為0xfffffffffffffffe,range.length+range.start將會發生溢位,從而可以繞過這個重置的**。

http.sys會使用ulbuildfastrangecachemdlchain來快取請求的資料,並使用iobuildpartialmdl來繫結mdl。

void iobuildpartialmdl(__in pmdl sourcemdl, __inout pmdl targe***l, __in pvoid virtualaddress, __in ulong length );本次測試中,iobuildpartialmdl的length引數已被修改為超長數值,直接導致系統藍屏。

若特殊環境之下,超長length對映成功,則可能導致資訊洩露。

四、補丁比對

借助ida的patchdiff2,對http.sys進行補丁比對,得知補丁進行了更改的函式如下所示:

檢視修補情況,發現修補後的**新增了rtlulonglongadd來防止前述溢位的問題。

http!uladjustrangestocontentsize的比較結果如下:

其中補丁還用同樣的方法修補了另乙個整數溢位的地方http!ulpduplicatechunkrange。

IIS伺服器配置

1.安裝iis服務,可以用3中方法同時發布兩個站點。1 不同的虛擬目錄分配 2 通過不同的埠分配 3 通過用不同的ip位址訪問 1 在預設的web站點新建虛擬目錄,例如乙個是caiwu目錄,乙個是renshi。在目錄的屬性中的文件選項新增index.html首頁。在ie中輸入,ip位址 caiwu或...

伺服器解析漏洞

伺服器解析漏洞算是歷史比較悠久了,但如今依然廣泛存在。在此記錄彙總一些常見伺服器的解析漏洞,比如iis6.0 iis7.5 apache nginx等方便以後回顧溫習。一 iis5.x 6.x解析漏洞 使用iis5.x 6.x版本的伺服器,大多為windows server 2003,比較古老,開發...

FTP伺服器漏洞

目標系統通過serv u搭建了乙個ftp服務。請嘗試利用軟體的漏洞獲取目標伺服器系統的flag.txt檔案內的flag值並提交。1.ftp伺服器 1 定義 ftp伺服器 file transfer protocol server 是在網際網路上提供檔案儲存和訪問服務的計算機,它們依照ftp協議提供服...