ADO組件
From : http://hi.baidu.com/meijun1234/blog/item/9b642ec24efd1130e5dd3bbd.html
比如系統禁用了ADODB.Stream
在ASP中用到
Server.CreateObject ("ADODB.Stream")的地方就就會報錯
Microsoft VBScript 執行階段錯誤 錯誤 '800a01ad'
ActiveX 組件不能建立對象
/WebEdit/upfile_based_class.asp,行 53
FileSystemObject組件
重新開啟ADODB.Stream組件的辦法:
在開始—運行裡執行:
regsvr32 "C:\Program Files\Common Files\System\ado\msado15.dll"
From : http://www.williamlong.info/archives/89.html
眾所周知,FileSystemObject組件的強大功能及破壞性是它屢屢被免費首頁供應商(那些支援ASP)的禁用的原因,我整理了一下,本來只找到兩種方法,後來被某人一刺激,硬是想到第三種不為人所知的方法,呵呵,也不知道是不是這樣的。
第一種:用RegSrv32 /u C:\WINDOWS\SYSTEM32\scrrun.dll(win2003路徑)來登出該組件。此方法過於狠毒,屬於同歸於盡的方法,大家都沒得用,是下招
第二種:修改Progid的值,在ASP裡調用組件的方式通常是 Set 對象名=Server. CreateObject("Progid"),這時候我們就可以通過修改註冊表中的Progid值從達到禁用該組件的方法。在 開始-運行中敲入regedit,然後找到HKEY_CLASSES_ROO T\Scripting.FileSystemObject,這時候我們就可以更改該Progid的值了,如改成Scripting.FileSystemObject8。這樣在ASP頁裡就這樣調用了:
<%@ Language=Vbscript%>
<%
Set Fs=Server.CreateObject("Scripting.FileSystemObject8")
%>
(如果你前面沒有調用過該組件的話,則無須重啟,就可以看到效果了,否則請重啟後看效果。)
這時候我們看看還是用原來的調用方法的結果:
<%@ Language=Vbscript%>
<%
Set Fs=Server.CreateObject("Scripting.FileSystemObject")
%>
這時候的運行結果為:
伺服器對象 錯誤 'ASP 0177 : 800401f3'
Server.CreateObject 失敗
/aspimage/testfile2.asp, 行3
800401f3
(OK,達到我們的要求)
該方法由於本人遲了兩步,結果就讓別人搶著回答了,這樣極大的刺激了我,結果就產生了第三種方法。
第三種:細心的高手們會想,既然能通過修改Progid值來禁用該組件,那Clsid是否也可以來修改呢?(OK,你想得和我一樣)我們知道,除了CreateObject方法以外,也可以使用一般的<object>標註建立一個組件,我們可以在ASP裡面使用HTM L的<object>標註,以便在網頁中加入一個組件。方法是:
<object runat=server id=fs1 scope=page progid="Scripting.FileSystemObject"></object>
Runat表示是在服務端執行,Scope表示組件的生命週期,可以選用Session,Appl ication或page(表示當前頁面,也可預設)
這種寫法對我們沒用,還有一種寫法是:
<object runat=server id=fs1 scope=page classid="clsid:clsid的值"></object>
我們也可以通過修改該Clsid的值而禁用該組件,如將註冊表中HKEY_CLASSES_RO OT\Scripting.FileSystemObject\CLSID的值0D43FE01-F093-11CF-8940-00A0C90 54228改成0D43FE01-F093-11CF-8940-00A0C9054229(改了最後面一位),這時候的寫法為:
<object runat=server id=fs1 scope=page classid="clsid:0D43FE01-F093-11CF-8940-00A0C9054229"></object>
看運行結果,沒問題,OK。這時候我們再用
<object runat=server id=fs1 scope=page classid="clsid:0D43FE01-F093-11CF-8940-00A0C9054228"></object>
這時候就出錯了。
Wscript.shell組件
我的2003伺服器,預設裝系統的時候,禁用了wscript.shell 組件,我按照一些網路上提供的方法 regsvr32 C:\WINdows\System32\wshom.ocx 註冊這個組建,提示DllRegisterServer成功,但是實際上還是無法調用這個組件!
From : http://hi.baidu.com/bj1686/blog/item/5848dd13fb0037daf7039eb3.html
WScript.Shell可以調用體系核心運行DOS基礎命令
可以通過改動註冊表,將此組件改名,來防止此類木馬的迫害。
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組件
Shell.Application可以調用體系核心運行DOS基礎命令
可以通過改動註冊表,將此組件改名,來防止此類木馬的危害。
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\項目標值
也可以將其刪除,來防止此類木馬的迫害。
制止Guest使用者使用shell32.dll來防止調用此組件。
2000使用命令:cacls C:\WINNT\system32\shell32.dll /e /d guests
2003使用命令:cacls C:\WINDOWS\system32\shell32.dll /e /d guests
註:操作均須要重新啟動WEB服務後才會生效。
四、調用Cmd.exe
禁用Guests組使用者調用cmd.exe
2000使用命令:cacls C:\WINNT\system32\Cmd.exe /e /d guests
2003使用命令:cacls C:\WINDOWS\system32\Cmd.exe /e /d guests
通過以上四步的設定基礎可以防備目前比擬流行的幾種木馬,但最有效措施還是通過綜合安全設定,將伺服器、程式安全都到達必定尺度,才可能將安全等級設定較高,防備更多非法入侵。