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