IIS是一種Web(網(wǎng)頁)服務(wù)組件,其中包括Web服務(wù)器、FTP服務(wù)器、NNTP服務(wù)器和SMTP服務(wù)器,分別用于網(wǎng)頁瀏覽、文件傳輸、新聞服務(wù)和郵件發(fā)送等方面,它使得在網(wǎng)絡(luò)(包括互聯(lián)網(wǎng)和局域網(wǎng))上發(fā)布信息成了一件很容易的事。
IIS的安全脆弱性曾長時(shí)間被業(yè)內(nèi)詬病,一旦IIS出現(xiàn)遠(yuǎn)程執(zhí)行漏洞威脅將會(huì)非常嚴(yán)重。遠(yuǎn)程執(zhí)行代碼漏洞存在于 HTTP 協(xié)議堆棧 (HTTP.sys) 中,當(dāng) HTTP.sys 未正確分析經(jīng)特殊設(shè)計(jì)的 HTTP 請(qǐng)求時(shí)會(huì)導(dǎo)致此漏洞。 成功利用此漏洞的攻擊者可以在系統(tǒng)帳戶的上下文中執(zhí)行任意代碼,可以導(dǎo)致IIS服務(wù)器所在機(jī)器藍(lán)屏或讀取其內(nèi)存中的機(jī)密數(shù)據(jù)。
1. 漏洞介紹及成因
IIS Server在Web服務(wù)擴(kuò)展中開啟了WebDAV,配置了可以寫入的權(quán)限,造成任意文件上傳。
版本:IIS 6.0
2. 漏洞復(fù)現(xiàn)
1)開啟WebDAV和寫權(quán)限;
2) 利用burp測試抓包,將GET請(qǐng)求改為OPTIONS;
3)利用工具進(jìn)行測試;
成功上傳,再上傳一句話木馬,然后用菜刀連接,getshell;
3. 漏洞修復(fù)
關(guān)閉WebDAV和寫權(quán)限;
1. 漏洞介紹及成因
IIS的短文件名機(jī)制,可以暴力猜解短文件名,訪問構(gòu)造的某個(gè)存在的短文件名,會(huì)返回404,訪問構(gòu)造的某個(gè)不存在的短文件名,返回400。
2. 漏洞復(fù)現(xiàn)
1)在網(wǎng)站根目錄下添加aaaaaaaaaa.html文件;
2)進(jìn)行猜解;
3. 漏洞修復(fù)
修復(fù)方法:
1)升級(jí).net framework;
2)修改注冊表禁用短文件名功能;
快捷鍵Win+R打開命令窗口,輸入regedit打開注冊表窗口,找到路徑:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem,將其中的 NtfsDisable8dot3NameCreation這一項(xiàng)的值設(shè)為 1,1代表不創(chuàng)建短文件名格式,修改完成后,需要重啟系統(tǒng)生效。
3)CMD關(guān)閉NTFS 8.3文件格式的支持;
4)將web文件夾的內(nèi)容拷貝到另一個(gè)位置,如c:\www到d:\w,然后刪除原文件夾,再重命名d:\w到c:\www。
修復(fù)后:
4. 局限性
1) 此漏洞只能確定前6個(gè)字符,如果后面的字符太長、包含特殊字符,很難猜解;
2) 如果文件名本身太短(無短文件名)也是無法猜解的;
3) 如果文件名前6位帶空格,8.3格式的短文件名會(huì)補(bǔ)進(jìn),和真實(shí)文件名不匹配;
1. 漏洞介紹及成因
在IIS6.0處理PROPFIND指令的時(shí)候,由于對(duì)url的長度沒有進(jìn)行有效的長度控制和檢查,導(dǎo)致執(zhí)行memcpy對(duì)虛擬路徑進(jìn)行構(gòu)造的時(shí)候,引發(fā)棧溢出,從而導(dǎo)致遠(yuǎn)程代碼執(zhí)行。
2. 漏洞復(fù)現(xiàn)
1)漏洞環(huán)境搭建
在windows server 2003 r2 32位上安裝iis6.0;
2)觸發(fā)漏洞
在本地執(zhí)行exp,exp如下:
執(zhí)行成功后,服務(wù)器端彈出計(jì)算器:
3. 漏洞修復(fù)
1)關(guān)閉WebDAV服務(wù);
2)使用相關(guān)防護(hù)設(shè)備;
1. 漏洞介紹及成因
IIS 6.0在處理含有特殊符號(hào)的文件路徑時(shí)會(huì)出現(xiàn)邏輯錯(cuò)誤,從而造成文件解析漏洞。這一漏洞有兩種完全不同的利用方式:
/test.asp/test.jpg
test.asp;.jpg
2. 漏洞復(fù)現(xiàn)
利用方式1
第一種是新建一個(gè)名為”test.asp”的目錄,該目錄中的任何文件都被IIS當(dāng)作asp程序執(zhí)行(特殊符號(hào)是“/”);
利用方式2
第二種是上傳名為”test.asp;.jpg”的文件,雖然該文件真正的后綴名是”.jpg”,但由于含有特殊符號(hào)”;”,仍會(huì)被IIS當(dāng)做asp程序執(zhí)行;
IIS7.5文件解析漏洞
test.jpg/.php
URL中文件后綴是.php,便無論該文件是否存在,都直接交給php處理,而php又默認(rèn)開啟”cgi.fix_pathinfo”功能,默認(rèn)會(huì)對(duì)文件進(jìn)行“修理”,何謂“修理”呢?舉個(gè)例子,當(dāng)php遇到路徑為”/aaa.xxx/bbb.yyy”的時(shí)侯,若”/aaa.xxx/bbb.yyy”不存在,則會(huì)去掉最后的“bbb.yyy”,然后判斷”/aaa.xxx”是否存在,若存在,則把“/aaa.xxx”當(dāng)作文件。
若有文件test.jpg,訪問時(shí)在其后加/.php,便可以把”test.jpg/.php”交給php,php修理文件路徑”test.jpg/.php”得到”test.jpg”,該文件存在,便把該文件作為php程序執(zhí)行了。
3. 漏洞修復(fù)
1)對(duì)新建目錄文件名進(jìn)行過濾,不允許新建包含‘.’的文件;
2)曲線網(wǎng)站后臺(tái)新建目錄的功能,不允許新建目錄;
3)限制上傳的腳本執(zhí)行權(quán)限,不允許執(zhí)行腳本;
4)過濾.asp/xm.jpg,通過ISApi組件過濾。
1、當(dāng)WEB目錄下,文件名以 xxx.asp;xxx.xxx 來進(jìn)行命名的時(shí)候,此文件將送交asp.dll解析(也就是執(zhí)行腳本)
2、當(dāng)WEB目錄下,在訪問以 xxx.asp 命名的目錄下的任意文件時(shí),此文件將送交asp.dll解析(也就是執(zhí)行腳本)
我們都知道IIS6中間件主要解析的就是asp語言的文件,如果你放入一個(gè)java語言的文件,php語言的文件他是不會(huì)進(jìn)行解析的,只能當(dāng)做文本文件進(jìn)行顯示出來,而里面語法所表達(dá)的意思是不會(huì)執(zhí)行的。那么從iis底層審計(jì)原理和測試發(fā)現(xiàn)IIS6在解析文件時(shí)存在如下問題:
1、后綴如下會(huì)被當(dāng)做asp程序進(jìn)行執(zhí)行 .asp .cer .asa .cdx
2、IIS 6.0在處理含有特殊符號(hào)的文件路徑時(shí)會(huì)出現(xiàn)邏輯錯(cuò)誤,從而造成文件解析漏洞。這一漏洞有兩種完全不同的利用方式: /test.asp/test.jpg test.asp;.jpg
為什么說這樣的解析我們叫做漏洞呢?而不叫做多一種解析方式呢?
主要的原因是很多研發(fā)在編寫上傳功能的時(shí)候會(huì)進(jìn)行黑名單活著白名單的判斷,而往往不了解這種解析漏洞,忽略了這種校驗(yàn),從而被其他人繞過上傳能解析的大小馬。
比如:有一個(gè)頭像上傳功能,開發(fā)者后臺(tái)只允許上傳后綴為jpg的文件,其他文件不允許上傳,而黑客利用第二條解析漏洞上傳了個(gè)1.asp;.jpg這時(shí)候能順利的將該文件上傳到服務(wù)器中,如果服務(wù)器只是將其按照?qǐng)D片解析,那么里面插入的asp馬腳本就解析不成功無法發(fā)揮馬的作用,但是iis6會(huì)將其安裝asp文件解析,因此這個(gè)馬就能起到馬的作用,從而被黑客利用。
而iis6由于是設(shè)計(jì)上的缺陷,因此該漏洞沒有廠家的修復(fù)方案,只要研發(fā)在本身上傳功能上對(duì)上述漏洞進(jìn)行過濾。
漏洞影響 IIS7 及IIS7.5 在使FastCGI方式調(diào)用php時(shí),在php.ini里設(shè)置cgi.fix_pathinfo=1
使得訪問任意文件URL時(shí),在URL后面添加“/x.php”等字符時(shí),該文件被iis當(dāng)php文件代碼解析。
如制作1.gif圖片馬(在圖片中插入php馬腳本)正常情況下訪問 http://127.0.0.1/1.gif 的內(nèi)容為正常的圖片,里面的php腳本并不會(huì)執(zhí)行,因?yàn)镮IS7/IIS7.5只會(huì)按照?qǐng)D片的解析格式來進(jìn)行解析。當(dāng)訪問 http://127.0.0.1/1.gif/1.php可以看到1.gif里的php代碼被iis解析執(zhí)行了。 那么“黑客”在具體利用網(wǎng)站漏洞的時(shí)候,先可以通過網(wǎng)站提供的圖片上傳功能(也可以是其他的手段)上傳一個(gè)包含了惡意PHP代碼的圖片文件。然后通過上面描敘方法,讓iis解析執(zhí)行任意惡意的php代碼,控制網(wǎng)站及主機(jī),最終導(dǎo)致網(wǎng)站被“脫庫”、“掛馬”、“植入非法seo鏈接”等等嚴(yán)重后果。
IIS7/IIS7.5解析漏洞的修復(fù)方案有如下幾個(gè):
第1種方案:繼續(xù)使用FastCGI方式調(diào)用PHP,要解決這個(gè)安全問題可以在php.ini里設(shè)置 cgi.fix_pathinfo=0 ,修改保存后建議重啟iis(注意可能影響到某些應(yīng)用程序功能)。
第2種方案:使用ISAPI的方式調(diào)用PHP。(注意:PHP5.3.10已經(jīng)摒棄了 ISAPI 方式)
第3種方案:可以使用其他web服務(wù)器軟件,如apache等。