一、Windows IIS環境
由于Wmdows+IIS+CGT本身的安全性并不好,所以會出現的問題比較多。好比說PsKey最近發現的一批LB5000論壇的漏洞吧,這些漏洞都是基于Windows+IIS平臺的。因為在Windows+IIS環境中,CGI程序文件權限沒有可執行相和不可執行一說。所以,只要是在有腳本執行權限的虛擬目錄里,CGT文件都會被執行。這就帶來了很多安全上的問題。PsKey發現的幾個漏洞都是往.CGI文件里寫入符合Peri語法的語句,來構造一個小型的WebShell。而對于一個功能強大的CGI程序來說,其自然不可能面面俱到,多多少少部會存在一些問題也屬正常。但只要控制好虛擬目錄的權限,危險性將會大大降低。
現在我們以LB為例"對于LB來說,它本身很多地方已經做得很好了,但其安全問題大多就是由干對一些字符的過濾不嚴所造成的。在IIS中默認情況下,子目錄將繼承父目錄的權限,如果一個目錄被設置了 "腳本和可執行程序"權限,那么其子目錄也將有"腳本和可執行程序"權限。所以,只要將LB5000論壇所在目錄設置為可執行,將其子目錄全設為不可執行。這些問題就迎刃而解了。因為即使你可以往其子目錄的一些文件里寫入WebShell。但由于子目錄沒有執行權限,一樣沒用。
LB的CGI程序和數據文件結構是這樣設計的:將需要執行的CGI程序文件與一些.cgi后綴的數據文件放在不同的目錄中。我們強烈建議寫程序時這樣做,因為這樣。管理員就只需要按照要求去設置虛擬目錄的權限了
現在,讓我們來一步一步對IIS虛擬目錄進行設置吧.
1.開始→運行,輸入:%SystemRoot%System32Intestrviis.msc打開 "Intenet服務管理器"。
2.選中將要設置的門IIS虛擬目錄。點右鍵→屬性,將LB論壇的cgi-bin目錄設置為許執行"純腳本"。
3.然后再逐一對cgi-bin目錄的子目錄進行設置,比如cgi-bin/data目錄進行設置,選中data目錄,點右鍵→屬性,將可執行設置為"無",這樣一來.在此目錄中的CGT程序將不允許被執行。
按照這個方法。將cgi-bin目錄下的每一個子目錄的可執行權限都設置為 "無"。最后,還要將non-cgi目錄進行設置,一般也將可執行權限設置為 "無"。
好了,我們對論壇的目錄權限設置就結束了。這樣一來,即使論壇再被發現有什么過濾不嚴密的漏洞只要他無法執行被竅人WebShell的文件。一樣不能達到人侵的目的。但我不敢保證就不出現任何問題,因為對于CGI漏洞的攻擊千奇百怪,出其不意,很難說將來會不會出現什么新的攻擊方法。但是,這樣設置絕對可以很大程度地降低CGI程序本身所帶來的威脅?! ?/p>
二、Windows十APACHE環鏡
由于默認安裝APACHE服務器建以SYSTEM僅限啟動。這一點它和IIS不同。在IIS中,如果CGI程序解釋程序不在LM/W3SVC/InProcessIsapiApps中的話。它的權限疑繼:敢DLLHOST.EXE;的IWA.M_-MACHINENAME權限。但APJACHE一旦啟動,所有的CGI程序都會繼承apache.ex.e的SYSTEM權限,所以距危險。一旦一個CGT程序出現問題。那么服務器將完全被控制。如果你真的想在Windows上跑APACHE的話,強烈建議另建一個CUESTS組的用戶,用這個新建的用戶啟動APACHE服務。這種情況下對CGI程序本身來說。安全性要比IIS中稍好些。因為APACHE中,CGI程序的解釋器是在程序的首行定義的,如:#!c:/perl/bin/perl,而IIS則是是在LM/W3SVVC/ScriptMaps中。如果商行沒有定義,那么CGI程序運行將出錯。所以。如果要想利用程序漏洞寫出一個可以成功執行的WebShell是有一定難度的,但這并不代表不可以。我在測試中發現,其實首行不需要定全路徑的,寫成這樣也可以:#!peri。因為在安裝ActivePerl的時候,其會在環境變量的PATH中自動加上peri.exe的路徑。所以我們成功利用這種漏洞的困難減少了。當然在這種環境下,我們也可以對APACHE配置文件httpd.conf進行合理的配置以降低來自CGI程序本身帶來的威脅.
下面我們來對APACHE服務及其配置文件httpd.conf進行配置。
1.在正確安裝好APACHE服務器后,新建一個用戶。并將其從原來的USERS組中刪除,將它加到GUESTS組中,命令如下;
net user apacheuser newpassword/add
net localgroup users apacheuser/del
net localgroup guests apacheuser/add
2.將APACHE安裝目錄(如:C:apache)的權限設置為apacheuser只讀和執行,其他非administrators組用戶拒絕訪問,還要將C:apachelogs目錄設置為可寫和可修改,不然APACHE會運行出錯,不能啟動.命令如下:
3.現在再讓APACHE服務以這個新建的用戶apacheuser來啟動.開始→運行,輸入:Services.msc選中apache服務這一項,然后點右鍵→屬性→登錄→此帳戶→瀏覽,選擇我們剛才新建的那個用戶(這里是以apacheuser這個用戶為例),在下面的密碼框中輸入用戶名的密碼(這里是newpasswork),然后一路"確定"下去.