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