微軟已經證實在其發布的WEB服務器產品Internet Information Server 4.0中存在一個嚴重的系統漏洞,該漏洞導致對於IIS服務器的“服務拒絕攻擊”,在這種情況下,可能導致任何2進制代碼在服務器上運行。有關該漏洞的補丁將在近期發布,請所有IIS用戶密切關注。 漏洞介紹: IIS支持多種需要服務器端處理的文件類型,譬如:ASP、ASA、IDC、HTR,當一個WEB用戶從客戶端請求此類文件時,相應的DLL文件將自動對其進行處理。然而在ISM.DLL這個負責處理HTR文件的文件中被發現存在嚴重的安全漏洞。(注:HTR文件本身是用來遠程管理用戶密碼的) 該漏洞包含了一個在ISM.DLL中未經驗證的緩沖,它可能對WEB服務器的安全運作造成兩方面的威脅。首先,是來自服務拒絕攻擊的威脅,一個來自非正常的對.HTR文件請求將導致緩存溢出,從而直接導致IIS崩潰,當這種情況發生時,無須重啟服務器,但是IIS WEB 服務器必須重新啟動。另一個威脅更令人頭痛,通過使用一個精心構建過的文件請求將可以利用標准的緩存溢出手段導致2進制代碼在服務器端運行,在這種情況下,什麼都可能發生!該漏洞不包括提供用來管理用戶密碼的功能的.HTR文件。 原理分析: 至少在一個IIS的擴展名中(例如:ASP,IDC,HTR)存在溢出。我們推測溢出將在IIS把完整的URL傳遞給DLL去處理擴展名時發生。如果ISAPI DLL 沒有正確的檢查限制范圍從而導致INETINFO.EXE產生一個溢出,用戶就從可以遠端執行2進制代碼。攻擊方法:向IIS發一個如下的HTTP請求:"GET /[overflow].htr HTTP/1.0",IIS將崩潰。這裡的[overflow]可以是3K長的代碼。 大家可能對.HTR文件不是很熟悉,其實IIS具有讓NT用戶通過WEB目錄/iisadmpwd/更改自己的口令的能力。而這個功能正是由一組.HTR文件和ISAPI的一個擴展DLL: ISM.DLL實現的。當一個完整的URL傳遞到ISM.DLL時,由於沒有適當的大小限制的檢查,就會導致溢出產生,從而使得服務器崩潰。HTR/ISM.DLL ISAPI 是IIS4缺省安裝。 解決途徑: 由於目前微軟尚未發布可供使用的補丁程序,因此我們只能做一些應急的防范。 1、將.HTR擴展名從ISAPI DLL 的列表中刪除 在你的NT桌面上,點擊“開始”—>“程序”—>“Windows NT 4.0 Option Pack”—>“Microsoft Internet Information Server”—>“Internet 服務管理器”;雙擊“Internet Information Server”;鼠標右鍵單擊計算機名稱並選擇“屬性”;在“主屬性”下拉式菜單中選擇“WWW服務”並點擊“編輯”按鈕;選擇“主目錄”文件夾,並點擊“配置”按鈕,在“應用程序映射”列表框中選中.HTR的相關映射,選擇“刪除”,並確定。 2、安裝微軟提供的補丁程序,請密切關注以下網址 可能一些朋友會感到不解,自學教程,為什麼我在ASP篇17、18期連續利用兩大篇幅著重討論IIS、ASP的安全性問題,如果你是一個WEB開發者、ASP程序員,我想你就應該能夠體會我的用意。我們進行網絡編程、開發交互性的網站,當然首先是為了發展、建設自身網站,但是這一些都是建立在安全的基礎上,這裡的安全包括對自己辛辛苦苦開發的ASP或其他網絡應用程序代碼的保護、確保網站服務器安全正常的運行、確保用戶信息的安全及認證等等,當今後電子商務成為真正廣泛運作的一種商務運行手段後,安全性更是關鍵之關鍵。我們中的很多朋友在作為ASP程序員的同時又身兼網絡管理員的職責,因此熟悉系統的運作、及時了解系統漏洞、第一時間解決安全性問題就顯得十分重要和必要,因此在本文的結尾,作者將整理的一些關於NT、IIS系統配置的安全性建議羅列出來,希望能給大家一些幫助。 1、使用最新版本的Microsoft Internet Information Server4.0,並安裝NT最新版本的Service Pack5,服務器的文件系統不要使用FAT,應該使用NTFS。 2、把IIS中的sample、scripts、iisadmin和msadc等web目錄設置為禁止匿名訪問並限制IP地址。在微軟還沒有提供補丁之前,把ism.dll有關的應用程序映射刪除。 3、有條件的話就采用防火牆機制,最簡單的如web服務開在前台,目錄放在後台,如果能一個服務一台機當然最好。 4、Web目錄,CGI目錄,5自學網,scripts目錄和winnt目錄等重要目錄要用NTFS的特性設置詳細的安全權限,包含注冊表信息的Winnt目錄只允許管理員完全控制,一般的用戶只讀的權限也不要給。凡是與系統有關的重要文件,除了Administrator,其它帳號都應該設置為只讀權限,而不是everyone/完全控制 。 5、只開你需要的服務,block掉所有不應該打開的端口,如NetBios端口139,這是一個典型的危險端口;怎樣禁止這些端口?除了使用防火牆外,NT的Tcp/IP設置裡面也提供了這種功能:打開控制面板-網絡-協議-TCP/IP-屬性-高級-啟用安全機制-配置,這裡面提供了TCP和UDP端口的限制和IP協議的限制功能。 6、管理員的帳號要設置得復雜一些,建議加入特殊字符。 7、把FTP,Telnet的TCP端口改為非標准端口,通常我都是設置到10000~65000的范圍 8、刪除可以刪除的所有共享,包括打印機共享和隱藏的共享如ICP$,Admin$等,微軟說這些特殊共享資源很重要,大多數情況下不能刪除,而實際上放在Internet上的機器大多數不需要共享。 IPC$: 適用於遠程管理計算機和查看共享資源,在網上最好不要用 Admin$: 實際上就是 c:\winnt,也沒有必要共享 C$: 登錄為Admin和Backup-operator的用戶可以用\\計算機名\C$的方式訪問C盤,雖然僅限於局域網,但是遠程黑客也有辦法偽裝成局域網的登錄用戶,所以都應該關掉。 Print$: 這是放打印機驅動程序的目錄,與上面的一樣也是個很危險的入口。 Netlogon: 這是處理域登錄請求的共享。如果你的機器為主域控制器,域內有其它機器要登錄進來,就不要刪除它,否則照樣可以刪除。 如何關閉這些共享?用“服務器管理器”—>“共享目錄”—>“停止共享”
9、將ASP的目錄集中管理,ASP的程序目錄設置詳盡的訪問權限,一般建議不要使用“讀”權限。 10、把winnt下的sam._文件改名,實踐證明這個可能洩露密碼的文件可以刪除不要。 11、對於已知的NT安全漏洞,都應該在自己的機器上做測試檢查。並及時安裝補丁程序。 12、有必要的情況下采用IIS4.0提供的SSL安全通信機制來防止數據在網上被截獲。