用微軟的IIS打造一個(gè)WEB服務(wù)器是件非常簡單的事情,但是它的安全性實(shí)在不敢恭維。攻擊者通過注入、上傳、旁注等技術(shù)獲得了某個(gè)網(wǎng)站的Webshell,然后進(jìn)一步滲透提權(quán),直至控制整個(gè)服務(wù)器。至于如何讓攻擊者無緣Webshell那是代碼部分的問題,我們做為管理員應(yīng)該如何加固Web服務(wù)器,讓攻擊者在獲得了Webshell之后無功而返呢?
一、設(shè)置命令權(quán)限
默認(rèn)設(shè)置下,webshell中可以調(diào)用一些對服務(wù)器構(gòu)成危險(xiǎn)的系統(tǒng)命令,因此要對這些命令進(jìn)行權(quán)限限制。
需要限制權(quán)限的命令主要有:
cmd.exe net.exe net1.exe ping.exe netstat.exe ftp.exe tftp.exe telnet.exe
對這些命令單獨(dú)進(jìn)行設(shè)置,設(shè)置為只允許administrators組訪問,這樣既防止攻擊者新建用戶對系統(tǒng)進(jìn)行修改,也可以防范通過Serv-U的本地提升權(quán)限漏洞來運(yùn)行這些關(guān)鍵的程序了。特別提醒的是要?jiǎng)h除cacls.exe這個(gè)程序,防止有人通過命令行來修改權(quán)限。(圖1)
個(gè)人秘笈:在系統(tǒng)目錄下放一個(gè)和cmd.exe同名的監(jiān)控程序,并賦予它eventone運(yùn)行權(quán)限。這樣只要攻擊者在websehll中調(diào)用cmd.exe就可以觸發(fā)監(jiān)控程序,記錄并追查攻擊者的蹤跡,讓他偷雞不成反蝕一把米。為我們發(fā)現(xiàn)入侵,直至找到攻擊者做準(zhǔn)備。
二、設(shè)置目錄權(quán)限(以windows 2003為例)
設(shè)置的原則是讓IIS以最小的權(quán)限運(yùn)行,但也不至于把自己捆住。
1、選取整個(gè)硬盤:
system:完全控制
administrator:完全控制
(允許將來自父系的可繼承性權(quán)限傳播給對象) (圖2)
2、c:\program files\common files:
everyone:讀取及運(yùn)行
列出文件目錄
讀取
(允許將來自父系的可繼承性權(quán)限傳播給對象)
3、c:\inetpub\wwwroot:
iusr_machinename:讀取及運(yùn)行
列出文件目錄
讀取
(允許將來自父系的可繼承性權(quán)限傳播給對象)
4、c:\windows\system32:
選擇除inetsrv和centsrv以外的所有目錄,
去除“允許將來自父系的可繼承性權(quán)限傳播給對象”選框,復(fù)制。
5、c:\windows:
選擇除了downloaded program files、help、iis temporary compressed files、
offline web pages、system32、tasks、temp、web以外的所有目錄
去除“允許將來自父系的可繼承性權(quán)限傳播給對象”選框,復(fù)制。
6、c:\windows:
everyone:讀取及運(yùn)行
列出文件目錄
讀取
(允許將來自父系的可繼承性權(quán)限傳播給對象)
7、c:\windows\temp:(允許訪問數(shù)據(jù)庫并顯示在asp頁面上)
everyone:修改
(允許將來自父系的可繼承性權(quán)限傳播給對象)
三、與組件相關(guān)的設(shè)置
1、shell.application組件刪除
再來去掉一些ASP WEBSHELL需要使用的一些組件,這些組件其實(shí)普通的虛擬主機(jī)用戶也是用不上的。
很多防范ASP木馬的文章都提到要?jiǎng)h除FileSystemObject組件,但刪除了這個(gè)組件后,很多ASP的程序可能會(huì)運(yùn)行不了,其實(shí)只要做好了前面的工作,F(xiàn)ileSystemObject組件能操作的,只能是自己目錄下的文件,也就構(gòu)成不了什么威脅了!
現(xiàn)在看來,還比較有威脅的組件就是Shell.Application和Wscript.Shell這兩個(gè)組件了,Shell.Application可以對文件進(jìn)行一些操作,還可以執(zhí)行程序,但不能帶參數(shù),而Wscript.Shell可以操作注冊表和執(zhí)行DOS命令。
2、防范Wscript.Shell組件的方法:
可以通過修改注冊表,將此組件改名。
HKEY_CLASSES_ROOT\WScript.Shell\及HKEY_CLASSES_ROOT\WScript.Shell.1\
改名為其它的名字,如:改為WScript.Shell_ChangeName或WScript.Shell.1_ChangeName自己以后調(diào)用的時(shí)候使用這個(gè)就可以正常調(diào)用此組件了 (圖3)
也要將clsid值也改一下
HKEY_CLASSES_ROOT\WScript.Shell\CLSID\項(xiàng)目的值
HKEY_CLASSES_ROOT\WScript.Shell.1\CLSID\項(xiàng)目的值
也可以將其刪除,來防止此類木馬的危害。
3、防范Shell.Application組件的方法:
可以通過修改注冊表,將此組件改名。
HKEY_CLASSES_ROOT\Shell.Application\ 及
HKEY_CLASSES_ROOT\Shell.Application.1\
改名為其它的名字,如:改為Shell.Application_ChangeName或Shell.Application.1_ChangeName
自己以后調(diào)用的時(shí)候使用這個(gè)就可以正常調(diào)用此組件了。
也要將clsid值也改一下
HKEY_CLASSES_ROOT\Shell.Application\CLSID\項(xiàng)目的值 (圖4)
也可以將其刪除,來防止此類木馬的危害。
四、綜合設(shè)置(針對虛擬主機(jī))
說明:FileSystemObject(FS0)這個(gè)組件為 ASP 提供了強(qiáng)大的文件系統(tǒng)訪問能力,可以對服務(wù)器硬盤上的任何文件進(jìn)行讀、寫、復(fù)制、刪除、改名等操作,但是禁止此組件后,引起的后果就是所有利用這個(gè)組件的ASP將無法運(yùn)行,無法滿足我們的需求。如何既允許FileSystemObject組件,又不影響服務(wù)器的安全性呢?
1、目錄權(quán)限設(shè)置。
在服務(wù)器上打開資源管理器,用鼠標(biāo)右鍵點(diǎn)擊各個(gè)硬盤分區(qū)或卷的盤符,在彈出菜單中選擇“屬性”,選擇“安全”選項(xiàng)卡,此時(shí)就可以看到有哪些帳號可以訪問這個(gè)分區(qū)(卷)及訪問權(quán)限。默認(rèn)安裝后,出現(xiàn)的是“Everyone”具有完全控制的權(quán)限。點(diǎn)“添加”,將“Administrators”、“Backup Operators”、“Power Users”、“Users”等幾個(gè)組添加進(jìn)去,并給予“完全控制”或相應(yīng)的權(quán)限,注意,不要給“Guests”組、“IUSR_機(jī)器名”這幾個(gè)帳號任何權(quán)限。然后將“Everyone”組從列表中刪除,這樣,就只有授權(quán)的組和用戶才能訪問此硬盤分區(qū)了,而 ASP 執(zhí)行時(shí),是以“IUSR_機(jī)器名”的身份訪問硬盤的,這里沒給該用戶帳號權(quán)限,ASP 也就不能讀寫硬盤上的文件了。(圖5)
2、創(chuàng)建客戶賬號
給每個(gè)虛擬主機(jī)用戶設(shè)置一個(gè)單獨(dú)的用戶帳號,然后再給每個(gè)帳號分配一個(gè)允許其完全控制的目錄。
第一步:打開“計(jì)算機(jī)管理”→“本地用戶和組”→“用戶”,在右欄中點(diǎn)擊鼠標(biāo)右鍵,在彈出的菜單中選擇“新用戶”:在彈出的“新用戶”對話框中根據(jù)實(shí)際需要輸入“用戶名”、“全名”、“描述”、“密碼”、“確認(rèn)密碼”,并將“用戶下次登錄時(shí)須更改密碼”前的對號去掉,選中“用戶不能更改密碼”和“密碼永不過期”。本例是給第一虛擬主機(jī)的用戶建立一個(gè)匿名訪問 Internet 信息服務(wù)的內(nèi)置帳號“lw1”,即:所有客戶端使用http://www.xxx.com 訪問此虛擬主機(jī)時(shí),都是以這個(gè)身份來訪問的。輸入完成后點(diǎn)“創(chuàng)建”即可。可以根據(jù)實(shí)際需要,創(chuàng)建多個(gè)用戶,創(chuàng)建完畢后點(diǎn)“關(guān)閉”。(圖6)
第二步:在列表中雙擊該帳號,以便進(jìn)一步進(jìn)行設(shè)置:在彈出的“lw1”(即剛才創(chuàng)建的新帳號)屬性對話框中點(diǎn)“隸屬于”選項(xiàng)卡:剛建立的帳號默認(rèn)是屬于“Users”組,選中該組,點(diǎn)“刪除”:現(xiàn)在出現(xiàn)的是如下圖所示,此時(shí)再點(diǎn)“添加”:在彈出的“選擇組”對話框中找到“Guests”,點(diǎn)“添加”,此組就會(huì)出現(xiàn)在下方的文本框中,然后點(diǎn)“確定”:出現(xiàn)的就是如下圖所示的內(nèi)容,點(diǎn)“確定”關(guān)閉此對話框。(圖7)
3、IIS設(shè)置
第一步:打開“Internet 信息服務(wù)”,開始對虛擬主機(jī)進(jìn)行設(shè)置,本例中的以對“第一虛擬主機(jī)”設(shè)置為例進(jìn)行說明,右擊該主機(jī)名,在彈出的菜單中選擇“屬性”,彈出一個(gè)“第一虛擬主機(jī) 屬性”的對話框,從對話框中可以看到該虛擬主機(jī)用戶的使用的是“E:\LW1”這個(gè)文件夾。(圖8)
第二步:切換到“資源管理器”,找到“E:\LW1”這個(gè)文件夾,右擊,選“屬性”→“安全”選項(xiàng)卡,此時(shí)可以看到該文件夾的默認(rèn)安全設(shè)置是“Everyone”完全控制(視不同情況顯示的內(nèi)容不完全一樣),首先將最將下的“允許將來自父系的可繼承權(quán)限傳播給該對象”前面的對號去掉:此時(shí)會(huì)彈出如下圖所示的“安全”警告,點(diǎn)“刪除”。(圖9)
第三步:切換到前面打開的“第一虛擬主機(jī) 屬性”的對話框,打開“目錄安全性”選項(xiàng)卡,點(diǎn)匿名訪問和驗(yàn)證控制的“編輯”在彈出的“驗(yàn)證方法”對方框,點(diǎn)“編輯”彈出了“匿名用戶帳號”,默認(rèn)的就是“IUSR_機(jī)器名”,點(diǎn)“瀏覽”在“選擇 用戶”對話框中找到前面創(chuàng)建的新帳號“lw1”,雙擊此時(shí)匿名用戶名就改過來了,在密碼框中輸入前面創(chuàng)建時(shí),為該帳號設(shè)置的密碼,再確定一遍密碼。OK,完成了,點(diǎn)確定關(guān)閉這些對話框。 (圖10)
提示:如果該用戶需要讀取硬盤的分區(qū)容量及硬盤的序列號,那這樣的設(shè)置將使其無法讀取。如果要允許其讀取這些和整個(gè)分區(qū)有關(guān)的內(nèi)容,請右鍵點(diǎn)擊該硬盤的分區(qū)(卷),選擇“屬性”→“安全”,將這個(gè)用戶的帳號添加到列表中,并至少給予“讀取”權(quán)限。由于該卷下的子目錄都已經(jīng)設(shè)置為“禁止將來自父系的可繼承權(quán)限傳播給該對象”,所以不會(huì)影響下面的子目錄的權(quán)限設(shè)置。
小結(jié):經(jīng)此設(shè)置后,“第一虛擬主機(jī)”的用戶,使用ASP的 FileSystemObject 組件也只能訪問自己的目錄:E:\LW1下的內(nèi)容,當(dāng)試圖訪問其他內(nèi)容時(shí),會(huì)出現(xiàn)諸如“沒有權(quán)限”、“硬盤未準(zhǔn)備好”、“500 服務(wù)器內(nèi)部錯(cuò)誤”等出錯(cuò)提示了。(圖11)
文章來源:http://hi.baidu.com/ittd/blog/item/c7208102eca029054bfb518e.html |