ASP教程:第十九篇 最新的ASP、IIS安全漏洞

當ASP以其靈活、簡單、實用、強大的特性迅速風靡全球網站的時候,其本身的一些缺陷、漏洞也正威脅著所有的網站開發者,繼上一篇中介紹了一些IIS的系統漏洞及ASP的安全問題後,本期中將針對最新的ASP、IIS安全漏洞進行詳細的探討,請所有的ASP網站開發者密切關注,提高警惕。

  本月初微軟再次被指責對其出品的WEB伺服器軟體的安全問題不加重視。在微軟的流行產品IIS SEVER4.0中被發現存在一種被稱為「非法HTR請求」的缺陷。據微軟稱,此缺陷在特定情況下會導致任意代碼都可以在伺服器端運行。但用發現這一漏洞的Internet安全公司eEye的CEO Firas Bushnaq的話說:這只是冰山一角而已。Bushnaq說,微軟隱瞞了些情況,比如黑客可以利用這一漏洞對IIS伺服器進行完全的控制,而恰恰許多電子商務站點是基於這套系統的。    下面羅列出了該IIS系統漏洞的詳細情況:

   IIS的最新安全漏洞

   受影響的系統:

   Internet Information Server 4.0 (IIS4)

   Microsoft Windows NT 4.0 SP3 Option Pack 4

   Microsoft Windows NT 4.0 SP4 Option Pack 4

   Microsoft Windows NT 4.0 SP5 Option Pack 4

   公布日期:6.8.1999

   microsoft已經證實了這個漏洞,但目前還沒有提供可用的補丁程序。

   微軟安全公告 (MS99-019):

   主題:"非正常的 HTR 請求" 漏洞

   發布時間: 6.15.1999

  摘要:

  微軟已經證實在其發布的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、安裝微軟提供的補丁程序,請密切關注以下網址

   http://www.microsoft.com/security

   http://www.microsoft.com/security/products/iis/CheckList.asp

  可能一些朋友會感到不解,為什麼我在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目錄,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安全通信機制來防止數據在網上被截獲。

文章來自: ASP技術網站(www.aspjs.net) 詳文參考:http://www.aspjs.net/aspjs1html/ASPjiaocheng/ASPjishuziliao/65.html

推薦閱讀:

如何保護伺服器免受 Meltdown 和 Spectre 漏洞的波及
ParseDroid漏洞:針對Android開發者和安全分析人員
Intel CPU漏洞技術解讀:都是緩存惹的禍!

TAG:安全 | 漏洞 | 教程 | 安全漏洞 | 最新 |