IIS作為一款流行的Web服務(wù)器,在當今互聯(lián)網(wǎng)環(huán)境中占有很大的比重,絕大多數(shù)的asp、asp.net網(wǎng)站都運行在它上面。因此,也引來了無數(shù)黑客們關(guān)注的目光。目前針對IIS的攻擊技術(shù)已經(jīng)非常成熟,而且相對技術(shù)門檻較低,所以很多初學(xué)者拿它來練手。許多網(wǎng)站因為網(wǎng)站治理 員的安全意識不高或技術(shù)上的疏忽而慘遭毒手。本文通過實例來談?wù)勧槍IS的攻擊技術(shù)與安全加固措施。
攻擊實例
IIS寫權(quán)限漏洞利用
我們先通過一個攻擊實例來演示如何利用IIS權(quán)限配置不當來快速攻陷一個網(wǎng)站,以此來提高廣大讀者對IIS安全性的重視。
目標網(wǎng)站IP:192.168.1.105
利用漏洞:IIS寫權(quán)限漏洞
用到的工具:IIS PUT Scaner、桂林老兵寫權(quán)限利用工具
1 檢測目標網(wǎng)站是否存在寫權(quán)限漏洞
打開IIS PUT Scanner,輸入目標網(wǎng)站的IP、端口號(默認為80端口),然后點擊“Scan”按鈕開始掃描,很快就返回了結(jié)果,如圖1所示:
圖1
2 IIS寫權(quán)限漏洞利用過程
根據(jù)掃描結(jié)果,我們可以確定目標網(wǎng)站存在IIS寫權(quán)限漏洞。下面我們來看下如何利用這個漏洞,來得到一個WebShell。
我們先將“<%eval request("cmd")%>”這段一句話木馬代碼保存成一個txt文檔,名字隨意。我這里命名為test.txt。接著打開桂林老兵寫權(quán)限利用工具,輸入目標網(wǎng)站的IP或域名,在“數(shù)據(jù)包格式”處的下拉菜單中選擇“PUT”數(shù)據(jù)包提交方式,最后點擊“數(shù)據(jù)包提交”按鈕,我們來看服務(wù)器返回的結(jié)果。如圖2所示:
圖2
服務(wù)器返回了201響應(yīng)碼,這標志著我們成功上傳了文件。
現(xiàn)在我們需要將剛剛上傳的txt文本修改為asp文件,否則服務(wù)器不會將它解析為asp文件。在“數(shù)據(jù)包格式”的下拉菜單中選擇“MOVE”數(shù)據(jù)包提交方式,在“Destination”處修改文件名稱,默認為shell.asp,這里我修改為cmd.asp。然后點擊“提交數(shù)據(jù)包”按鈕,我們來看服務(wù)器返回的信息。如圖3所示:
圖3
服務(wù)器同樣返回了“201”響應(yīng)碼,說明我們成功將test.txt修改為cmd.asp了。
現(xiàn)在我們用一句話木馬客戶端來連接剛上傳的一句話木馬,可以成功訪問。如圖4所示:
圖4
這樣我們就得到了一個WebShell。從整個攻擊過程來看,用的時間很短,而且技術(shù)門檻很低,一個一般 人運用工具也可以很快拿下一個網(wǎng)站。但遺憾的是,在實際的滲透測試過程中,依舊 有不少站點存在這樣的漏洞,希望通過這個實例能夠引起廣大網(wǎng)絡(luò)治理 員對安全的重視。
IIS6.0解析漏洞利用
a. 在WEB目錄下,當文件名稱為類似“a.asp;b.jpg”這種格式的時候,IIS會將它解析為asp文件,如圖5所示。
圖5
b. 在WEB目錄下,IIS6.0會將以“x.asp”這種格式命名的文件夾下的所有文件都解析為asp文件,如圖6所示。
圖6
上面這兩點屬于IIS設(shè)計的缺陷,但惋惜 微軟認為這是IIS的特性,一直沒有推出相應(yīng)的安全補丁。
在嘗試繞過文件上傳檢測時,這兩種方法有時非常有效,下面是在實際滲透測試過程中遇到的一個例子。
先登錄網(wǎng)站后臺,直接上傳一個asp木馬,提示非法文件,不同意上傳。接下來將它的名稱改為1.asp;2.jpg后再次上傳,發(fā)現(xiàn)成功上傳至網(wǎng)站目錄,如圖7所示。
圖7
安全加固
這部分我們通過跟蹤IIS從安裝到配置的整個過程,分析其中可能面臨的安全風險,并給出相應(yīng)的加固措施。
IIS安裝及版本的選擇
在IIS安裝過程中,根據(jù)具體的業(yè)務(wù)需求,只安裝必要的組件,以幸免安裝其他一切不必要的組件帶來的安全風險。如網(wǎng)站正常運行只需要ASP環(huán)境,那我們就沒必要安裝.net組件。
對于IIS版本,至少要在6.0以上,IIS5.0存在嚴峻 的安全漏洞,不過現(xiàn)在運行IIS5.0的服務(wù)器已經(jīng)非常少了,對于這一點不用太過擔心。
IIS配置
1 刪除IIS默認站點
把IIS默認安裝的站點刪除或禁用掉。
2 禁用不必要的Web服務(wù)擴展
打開IIS 治理 器,檢查是否有不必要的“Web服務(wù)擴展”,如果有則禁用掉。如圖8所示:
圖8
3 IIS訪問權(quán)限配置
如果IIS中有多個網(wǎng)站,建議為每個網(wǎng)站配置不同的匿名訪問賬戶。
方法:
a. 新建一個賬號,加入Guests組
b. “網(wǎng)站屬性”--->“目錄安全性”--->“身份驗證和訪問操縱 ”,把“啟用匿名訪問”處,用剛新建的賬戶代替默認賬戶,如圖9所示。
圖9
4 網(wǎng)站目錄權(quán)限配置
原則(如圖10):
目錄有寫入權(quán)限,一定不要分配執(zhí)行權(quán)限
目錄有執(zhí)行權(quán)限,一定不要分配寫入權(quán)限
網(wǎng)站上傳目錄和數(shù)據(jù)庫目錄一般需要分配“寫入”權(quán)限,但一定不要分配執(zhí)行權(quán)限
其他目錄一般只分配“讀取”和“記錄訪問”權(quán)限即可
圖10
5 只保留必要的應(yīng)用程序擴展
根據(jù)網(wǎng)站的實際情況,只保留必要的應(yīng)用程序擴展,其他的一律刪除,尤其是像cer、asa這樣極其危險的擴展,而且一般網(wǎng)站也不需要它,如圖11。
圖11
6 修改IIS日志文件配置
無論是什么服務(wù)器,日志都是應(yīng)該高度重視的部分。當發(fā)生安全事件時,我們可以通過分析日志來還原攻擊過程,否則將無從查起。有條件的話,可以將日志發(fā)送到專門的日志服務(wù)器保存。
先檢查是否啟用了日志記錄,如未啟用,則啟用它。日志格式設(shè)置為W3C擴展日志格式,IIS中默認是啟用日志記錄的。
接著修改IIS日志文件保存路徑,默認保存在“C:\WINDOWS\system32\LogFiles”目錄下,這里修改為自定義路徑。建議保存在非系統(tǒng)盤路徑,并且IIS日志文件所在目錄只同意Administrators組用戶和SYSTEM用戶訪問,如圖12。
圖12
7 防止信息泄露
a. 禁止向客戶端發(fā)送詳細的ASP錯誤信息
“IIS治理 器”--->“屬性”--->“主目錄”--->“配置”--->“調(diào)試”,選擇“向客戶端發(fā)送下列文本錯誤消息”項,自定義出錯時返回的錯誤信息,如圖13。
圖13
b. 修改默認錯誤頁面
“IIS治理 器”--->“屬性”--->“自定義錯誤”,用自定義的錯誤頁面替換默認的默認頁面。下面是我自定義的一個404錯誤頁面,當網(wǎng)站發(fā)生404錯誤時,將向客戶端返回這個頁面,如圖14。
圖14
8 自定義IIS Banner信息
默認Banner信息會泄露服務(wù)器類型、版本等相關(guān)信息,我們需要對其進行修改,這樣可以防止信息泄露,還可以騙過一些自動化掃描、攻擊工具。
a. 修改默認HTTP頭信息
在修改之前,我們先來看下默認的HTTP頭信息是什么樣的。我們向IIS服務(wù)器發(fā)一個請求,然后用抓包工具分析它返回的數(shù)據(jù),就可以發(fā)現(xiàn)HTTP頭信息,如圖15所示:
圖15
上圖用紅框標注的地方就是HTTP頭信息,通過它我們就可以確定目標網(wǎng)站使用的是IIS服務(wù)器。
現(xiàn)在我們來看下如何自定義HTTP頭信息。首先,打開“IIS治理 器”--->“屬性”--->“HTTP頭”,在“自定義HTTP頭”選中默認的HTTP頭信息,進行編輯,或者刪除掉默認的,自己添加一個新的HTTP頭信息。圖16中是我隨便自定義的一個HTTP頭。
圖16
在修改完成后,我們再來抓包分析一下,如圖17所示:
圖17
從圖上可以看到,現(xiàn)在IIS服務(wù)器返回的HTTP頭已經(jīng)是我們自定義了。
b. 修改默認IIS頭信息
修改默認IIS頭信息需要通過工具來完成。這里推舉 使用ServerMask,它是一款專門用來隱藏或修改IIS服務(wù)器默認Banner信息,防止信息泄露的工具。下圖18是該軟件的界面:
圖18
在修改之前,我們先來分析下IIS默認的頭信息,如圖19所示:
圖19
根據(jù)服務(wù)器返回的信息,我們很容易推斷 出目標網(wǎng)站使用的服務(wù)器是IIS,版本是6.0,操作系統(tǒng)是Windows Server 2003,這些信息對攻擊者確定下一步行動是非常有幫助的。
我們也可以使用掃描工具來完成刺探目標網(wǎng)站服務(wù)器相關(guān)信息的任務(wù),這類工具非常多,而且使用非常簡單,如圖20。
圖20
現(xiàn)在我們來把默認的IIS頭信息隱藏或修改掉,首先打開軟件,選中要保護的網(wǎng)站,在“Security Profile”處的下拉菜單中選擇相應(yīng)的策略,這里我自定義一個。
圖21
如圖21所示,我把IIS默認的頭信息修改成了Apache服務(wù)器的信息。這樣就可以迷惑攻擊者,有效隱藏網(wǎng)站的真實信息?,F(xiàn)在我們再來分析下修改后的IIS服務(wù)器返回的頭信息,如圖22:
圖22
現(xiàn)在IIS服務(wù)器返回的頭信息已經(jīng)是我們自定義的了,這里偽裝成了Apache服務(wù)器。
我們再用掃描工具掃描一下,看能否得到目標網(wǎng)站的真實服務(wù)器類型,結(jié)果如圖23:
圖23
根據(jù)上圖,我們可以看到現(xiàn)在掃描器已經(jīng)獵取 不到目標網(wǎng)站的服務(wù)器類型了。
對于一些自動化攻擊工具來說,因為獵取 不到目標服務(wù)器的類型和版本相關(guān)信息,自然也就無法進行下一步攻擊了。
總結(jié)
通過上面對IIS攻擊和安全加固的實例,相信讀者對IIS服務(wù)器的安全有了更加深入的認識。其實對于IIS的安全加固并不難,很多時候更重要的是治理 員的安全意識,只要有足夠的安全意識,加上上面介紹的安全加固方法,相信你一定可以打造一個安全的IIS服務(wù)器。