http://fox.he100.com/showart.asp?art_id=122&cat_id=1
防範WEB SHELL(整理文)
防範WEB SHELL(整理文)
做了1年時間的虛擬機器主機管理員,大概對NT下的WEB SHELL的防範也有一定的瞭解。現在通過整理一些高手的文章來說說如何防範WEBSHELL。常見的WEBSHELL也就是ASP,PHP,PERL,這些指令碼寫成的。市面上比較流行的WEBSHELL也就是海陽頂端網asp木馬2005、桂林老兵的ASP站長助手(不知道算不算WEBSHELL,呵呵)、藍屏ASP木馬(好象有點過時了)、安全天使的phpspy2005、咖啡的PHP檔案管理工具1.6、cmd.cgi(PERL的我不熟悉,只知道這個)。本文的目的也就是要防範這些WEBSHELL。
防範這些WEBSHELL,首先是設定伺服器的許可權,禁止他們越權訪問東西。伺服器使用權限設定可以參考沉睡不醒整理的IIS FAQ
(http://fox.he100.com/showart.asp?art_id=121&cat_id=1),我這裡就直接引用原文的內容了
9.如何讓iis的最小ntfs許可權運行?
依次做下面的工作:
a.選取整個硬碟:
system:完全控制
administrator:完全控制
(允許將來自父系的可繼承性許可權傳播給對象)
b./program files/common files:
everyone:讀取及運行
列出檔案目錄
讀取
(允許將來自父系的可繼承性許可權傳播給對象)
c./inetpub/wwwroot:
iusr_machinename:讀取及運行
列出檔案目錄
讀取
(允許將來自父系的可繼承性許可權傳播給對象)
e./winnt/system32:
選擇除inetsrv和centsrv以外的所有目錄,
去除“允許將來自父系的可繼承性許可權傳播給對象”選框,複製。
f./winnt:
選擇除了downloaded program files、help、iis temporary compressed files、
offline web pages、system32、tasks、temp、web以外的所有目錄
去除“允許將來自父系的可繼承性許可權傳播給對象”選框,複製。
g./winnt:
everyone:讀取及運行
列出檔案目錄
讀取
(允許將來自父系的可繼承性許可權傳播給對象)
h./winnt/temp:(允許訪問資料庫並顯示在asp頁面上)
everyone:修改
(允許將來自父系的可繼承性許可權傳播給對象)
再單獨對cmd.exe net.exe net1.exe ping.exe netstat.exe ftp.exe tftp.exe telnet.exe設定為只允許administrators組訪問,這樣就可以防範通過Serv-U的本地提升許可權漏洞來運行這些關鍵的程式了,再刪除cacls.exe這個程式,防止有人通過命令列來修改許可權,呵呵。
再來去掉一些ASP WEBSHELL需要使用的一些組件,這些組件其實普通的虛擬機器主機使用者也是用不上的。
很多防範ASP木馬的文章都提到要刪除FileSystemObject組件,但刪除了這個組件後,很多ASP的程式可能會運行不了,其實只要做好了前面的工作,FileSystemObject組件能操作的,只能是自己目錄下的檔案,也就構成不了什麼威脅了!
現在看來,還比較有威脅的組件就是Shell.Application和Wscript.Shell這兩個組件了,Shell.Application可以對檔案進行一些操作,還可以執行程式,但不能帶參數,而Wscript.Shell可以操作註冊表和執行DOS命令。
防範Wscript.Shell組件的方法:
可以通過修改註冊表,將此組件改名。
HKEY_CLASSES_ROOT/WScript.Shell/及HKEY_CLASSES_ROOT/WScript.Shell.1/
改名為其它的名字,如:改為WScript.Shell_ChangeName或WScript.Shell.1_ChangeName自己以後調用的時候使用這個就可以正常調用此組件了
也要將clsid值也改一下
HKEY_CLASSES_ROOT/WScript.Shell/CLSID/項目的值
HKEY_CLASSES_ROOT/WScript.Shell.1/CLSID/項目的值
也可以將其刪除,來防止此類木馬的危害。
防範Shell.Application組件的方法:
可以通過修改註冊表,將此組件改名。
HKEY_CLASSES_ROOT/Shell.Application/
及
HKEY_CLASSES_ROOT/Shell.Application.1/
改名為其它的名字,如:改為Shell.Application_ChangeName或Shell.Application.1_ChangeName
自己以後調用的時候使用這個就可以正常調用此組件了。
也要將clsid值也改一下
HKEY_CLASSES_ROOT/Shell.Application/CLSID/項目的值
HKEY_CLASSES_ROOT/Shell.Application/CLSID/項目的值
也可以將其刪除,來防止此類木馬的危害。
附參考文《構建免受 Fso 威脅虛擬機器主機》
作者:稻香居士
現在絕大多數的虛擬機器主機都禁用了 ASP 的標準組件:FileSystemObject,因為這個組件為 ASP 提供了強大的檔案系統訪問能力,可以對伺服器硬碟上的任何檔案進行讀、寫、複製、刪除、改名等操作(當然,這是指在使用預設設定的 Windows NT / 2000 下才能做到)。但是禁止此組件後,引起的後果就是所有利用這個組件的 ASP 將無法運行,無法滿足客戶的需求。
如何既允許 FileSystemObject 組件,又不影響伺服器的安全性(即:不同虛擬機器主機使用者之間不能使用該組件讀寫別人的檔案)呢?這裡介紹本人在實驗中獲得的一種方法,下文以 Windows 2000 Server 為例來說明。
在伺服器上開啟資源管理員,用滑鼠右鍵點擊各個硬碟分區或卷的盤符,在快顯功能表中選擇“屬性”,選擇“安全”選項卡,此時就可以看到有哪些帳號可以訪問這個分區(卷)及存取權限。預設安裝後,出現的是“Everyone”具有完全控制的許可權。點“添加”,將“Administrators”、“Backup Operators”、“Power Users”、“Users”等幾個組添加進去,並給予“完全控制”或相應的許可權,注意,不要給“Guests”組、“IUSR_機器名”這幾個帳號任何許可權。然後將“Everyone”組從列表中刪除,這樣,就只有授權的組和使用者才能訪問此硬碟分區了,而 ASP 執行時,是以“IUSR_機器名”的身份訪問硬碟的,這裡沒給該使用者帳號許可權,ASP 也就不能讀寫硬碟上的檔案了。
下面要做的就是給每個虛擬機器主機使用者佈建一個單獨的使用者帳號,然後再給每個帳號分配一個允許其完全控制的目錄。
如所示,開啟“電腦管理”→“本機使用者和組”→“使用者”,在右欄中點擊滑鼠右鍵,在彈出的菜單中選擇“新使用者”:
在彈出的“新使用者”對話方塊中根據實際需要輸入“使用者名稱”、“全名”、“描述”、“密碼”、“確認密碼”,並將“使用者下次登入時須更改密碼”前的對號去掉,選中“使用者不能更改密碼”和“密碼永不到期”。本例是給第一虛擬機器主機的使用者建立一個匿名訪問 Internet 資訊服務的內建帳號“IUSR_VHOST1”,即:所有用戶端使用 http://xxx.xxx.xxxx/ 訪問此虛擬機器主機時,都是以這個身份來訪問的。輸入完成後點“建立”即可。可以根據實際需要,建立多個使用者,建立完畢後點“關閉”:
現在建立立的使用者已經出現在帳號列表中了,在列表中雙擊該帳號,以便進一步進行設定:
在彈出的“IUSR_VHOST1”(即剛才建立的新帳號)屬性對話方塊中點“隸屬於”選項卡:
剛建立的帳號預設是屬於“Users”組,選中該組,點“刪除”:
現在出現的是如所示,此時再點“添加”:
在彈出的“選擇 組”對話方塊中找到“Guests”,點“添加”,此組就會出現在下方的文字框中,然後點“確定”:
出現的就是如所示的內容,點“確定”關閉此對話方塊:
開啟“Internet 資訊服務”,開始對虛擬機器主機進行設定,本例中的以對“第一虛擬機器主機”設定為例進行說明,右擊該主機名稱,在彈出的菜單中選擇“屬性”:
彈出一個“第一虛擬機器主機 屬性”的對話方塊,從對話方塊中可以看到該虛擬機器主機使用者的使用的是“F:/VHOST1”這個檔案夾:
暫時先不管剛才的“第一虛擬機器主機 屬性”對話方塊,切換到“資源管理員”,找到“F:/VHOST1”這個檔案夾,右擊,選“屬性”→“安全”選項卡,此時可以看到該檔案夾的預設安全設定是“Everyone”完全控制(視不同情況顯示的內容不完全一樣),首先將最將下的“允許將來自父系的可繼承許可權傳播給該對象”前面的對號去掉:
此時會彈出如所示的“安全”警告,點“刪除”:
此時安全選項卡中的所有組和使用者都將被清空(如果沒有清空,請使用“刪除”將其清空),然後點“添加”按鈕。
將中所示的“Administrator”及在前面所建立的新帳號“IUSR_VHOST1”添加進來,將給予完全控制的許可權,還可以根據實際需要添加其他組或使用者,但一定不要將“Guests”組、“IUSR_機器名”這些匿名訪問的帳號添加上去!
再切換到前面開啟的“第一虛擬機器主機 屬性”的對話方塊,開啟“目錄安全性”選項卡,點匿名訪問和驗證控制的“編輯”:
在彈出的“驗證方法”對方框(如所示),點“編輯”:
彈出了“匿名使用者帳號”,預設的就是“IUSR_機器名”,點“瀏覽”:
在“選擇 使用者”對話方塊中找到前面建立的新帳號“IUSR_VHOST1”,雙擊:
此時匿名使用者名就改過來了,在密碼框中輸入前面建立時,為該帳號設定的密碼:
再確定一遍密碼:
OK,完成了,點確定關閉這些對話方塊。
經此設定後,“第一虛擬機器主機”的使用者,使用 ASP 的 FileSystemObject 組件也只能訪問自己的目錄:F:/VHOST1 下的內容,當試圖訪問其他內容時,會出現諸如“沒有許可權”、“硬碟未準備好”、“500 伺服器內部錯誤”等出錯提示了。
另:如果該使用者需要讀取硬碟的分區容量及硬碟的序號,那這樣的設定將使其無法讀取。如果要允許其讀取這些和整個分區有關的內容,請右鍵點擊該硬碟的分區(卷),選擇“屬性”→“安全”,將這個使用者的帳號添加到列表中,並至少給予“讀取”許可權。由於該卷下的子目錄都已經設定為“禁止將來自父系的可繼承許可權傳播給該對象”,所以不會影響下面的子目錄的使用權限設定。
附錄:
參考文章:
《構建免受 Fso 威脅虛擬機器主機》
http://fox.he100.com/showart.asp?art_id=106&cat_id=1
IIS FAQ
http://fox.he100.com/showart.asp?art_id=121&cat_id=1
如何防止ASP木馬在伺服器上運行
http://fox.he100.com/showart.asp?art_id=120&cat_id=1
windows2000虛擬機器主機基本使用權限設定不完全版本
http://www.icylife.net/blog/show.php?id=40
後記廢話:
頭一次整理文章,弄的暈暈的,好象很亂,將就看看吧-_-!
By Blackfox
QQ:6858849
2/17/2005 10:16:31 PM