01?漏洞描述
上篇文章介紹了Host頭攻擊,今天我們講一講HTTP.sys遠(yuǎn)程代碼執(zhí)行漏洞。
HTTP.sys是Microsoft Windows處理HTTP請(qǐng)求的內(nèi)核驅(qū)動(dòng)程序,為了優(yōu)化IIS服務(wù)器性能,從IIS6.0引入,IIS服務(wù)進(jìn)程依賴HTTP.sys。HTTP.sys遠(yuǎn)程代碼執(zhí)行漏洞實(shí)質(zhì)是HTTP.sys的整數(shù)溢出漏洞,當(dāng)攻擊者向受影響的Windows系統(tǒng)發(fā)送特殊設(shè)計(jì)的HTTP 請(qǐng)求,HTTP.sys 未正確分析時(shí)就會(huì)導(dǎo)致此漏洞,成功利用此漏洞的攻擊者可以在系統(tǒng)帳戶的上下文中執(zhí)行任意代碼。
主要存在Windows+IIS的環(huán)境下,任何安裝了微軟IIS 6.0以上的Windows Server 2008 R2/Server 2012/Server 2012 R2以及Windows 7/8/8.1操作系統(tǒng)都受到這個(gè)漏洞的影響。
02?漏洞知識(shí)拓展
說到HTTP.sys遠(yuǎn)程代碼執(zhí)行漏洞,不得不先介紹一下Range首部字段。
在“上古時(shí)代”,網(wǎng)絡(luò)并不是很好,下載大型文件很不容易。下載途中如果網(wǎng)絡(luò)中斷,就得重頭開始下。為了解決這個(gè)問題,HTTP/1.1引入了范圍請(qǐng)求。
在請(qǐng)求報(bào)文的Range首部字段中指定資源的byte范圍,告訴服務(wù)器,請(qǐng)求的是資源哪個(gè)范圍的內(nèi)容,讓斷點(diǎn)續(xù)傳和并行下載得以實(shí)現(xiàn)。
如果服務(wù)器支持范圍請(qǐng)求,響應(yīng)包中就會(huì)存在Accept-Ranges字段(且值不為“none”,bytes為資源范圍的單位),并在Content-Length字段中告訴客戶端資源的大小范圍。
如果沒有Accept-Ranges字段,則服務(wù)器可能不支持范圍請(qǐng)求,有的服務(wù)器會(huì)明確將值設(shè)為“none”。
服務(wù)器面對(duì)范圍請(qǐng)求,有三種響應(yīng):
請(qǐng)求成功:
響應(yīng)206Partial Content請(qǐng)求范圍越界:(范圍超過資源的大小)
響應(yīng)416Requested Range Not Satisfiable不支持范圍請(qǐng)求:
響應(yīng)200OK
而HTTP.sys遠(yuǎn)程代碼執(zhí)行漏洞正是利用Range字段注入惡意數(shù)據(jù)。該漏洞的檢測(cè),也是利用服務(wù)器面對(duì)范圍請(qǐng)求時(shí)的響應(yīng)特征來判斷。
當(dāng)然,范圍請(qǐng)求不止這些知識(shí)點(diǎn),詳情可查看RFC:
https://tools.ietf.org/html/rfc7233
03?漏洞檢測(cè)
HTTP.sys漏洞的檢測(cè)比較簡單,先判斷目標(biāo)環(huán)境是不是Windows+IIS,然后構(gòu)造Range字段進(jìn)行檢測(cè)即可。
檢測(cè)時(shí),在請(qǐng)求包中添加Range字段,如下:
Range: bytes=0-18446744073709551615
提交給服務(wù)器,查看服務(wù)器響應(yīng)。
服務(wù)器響應(yīng)400,證明不存在HTTP.sys遠(yuǎn)程代碼執(zhí)行漏洞。如果響應(yīng)416,則證明系統(tǒng)存在漏洞。
這里簡單說一下Range字段值的含義。18446744073709551615轉(zhuǎn)為十六進(jìn)制是 0xFFFFFFFFFFFFFFFF(16個(gè)F),是64位無符號(hào)整型所能表達(dá)的最大整數(shù),整數(shù)溢出和這個(gè)超大整數(shù)有關(guān)。
另外,Apache幾個(gè)老版本存在的Apache?HTTP?Server畸形Range選項(xiàng)處理遠(yuǎn)程拒絕服務(wù)漏洞,也是通過Range字段觸發(fā)的,有興趣的校友可以去了解了解。
04?漏洞修復(fù)
升級(jí)補(bǔ)?。?/p>
http://technet.microsoft.com/security/bulletin/MS15-034
禁用IIS內(nèi)核緩存(緩解方案):
https://technet.microsoft.com/en-us/library/cc731903(v=ws.10).aspx
05?免責(zé)聲明
安全小白團(tuán)是幫助用戶了解信息安全技術(shù)、安全漏洞相關(guān)信息的微信公眾號(hào)。安全小白團(tuán)提供的程序(方法)可能帶有攻擊性,僅供安全研究與教學(xué)之用,用戶將其信息做其他用途,由用戶承擔(dān)全部法律及連帶責(zé)任,安全小白團(tuán)不承擔(dān)任何法律及連帶責(zé)任。