春秋云镜 Hospital Writeup

春秋云镜 Hospital Writeup

💡 原文中文,约13400字,阅读约需32分钟。
📝

内容提要

该文章介绍了一个渗透测试场景,目标是测试医院网络安全性。详细描述了渗透测试过程,包括使用Shiro框架爆破、利用Spring Boot Heapdump泄露Shiro key、使用vim.basic获取SUID权限、利用Nacos Client Yaml反序列化漏洞、利用Fastjson Deserialization漏洞、利用Grafana文件读取漏洞和利用PostgreSQL命令执行漏洞。最终成功获取了四个flag。

🔎

延伸解读

攻击链中的关键转折点

本次渗透从外网Web01的Shiro框架入手,但Shiro key无法直接爆破。作者转而利用Spring Boot Heapdump泄露获取Shiro key,成功注入内存马。这提醒我们,当常规漏洞利用受阻时,信息泄露类漏洞往往能成为突破口。Heapdump文件可能包含敏感配置,应严格限制actuator端点访问。

内网横向移动的代理策略

获取Web01权限后,作者通过fscan扫描内网发现Nacos和医院后台管理平台。由于目标处于不同网段,使用FRP搭建socks5代理,并配合Proxifier进行连接。这种二层代理方式在内网渗透中很常见,能有效绕过网络隔离,但需注意代理的稳定性和隐蔽性。

多漏洞组合利用的典型场景

文章展示了多个漏洞的组合利用:Nacos弱口令进入后台后,利用Client Yaml反序列化添加管理员账户;Fastjson反序列化反弹shell;Grafana文件读取获取PostgreSQL密码;PostgreSQL命令执行获取最终权限。这种链式利用说明单一漏洞可能不足以完全控制目标,但组合起来能形成完整攻击路径。

权限提升与持久化控制

在Web01上,作者发现vim.basic具有SUID权限,通过写入SSH公钥获得root权限。在Web03上,修改root密码后SSH连接。在Web04上,利用PostgreSQL的sudo配置提权。这些手法表明,SUID滥用、弱密码修改和sudo配置错误是常见的提权途径,防御时需定期检查SUID文件和sudoers配置。

❓

Q&A

春秋云镜 Hospital 靶场总共有几个 flag?分别分布在哪些机器上?

该靶场共有 4 个 flag,分布于不同的靶机:flag01 在 Web01(Spring + Shiro),flag02 在 Server02(Nacos),flag03 在 Web03(Fastjson),flag04 在 Web04(Grafana + PostgreSQL)。

如何获取 Web01 的 Shiro key 并拿到 flag01?

通过目录扫描发现 Spring Boot Heapdump 泄露(/actuator/heapdump),使用 JDumpSpider 分析 heapdump 文件得到 Shiro key(algMode=CBC, key=GAYysgMQhG7/CzIJlVpR2g==, algName=AES)。利用该 key 注入内存马(冰蝎连接),反弹 shell 后查找 SUID 权限,发现 vim.basic 具有 SUID 权限,通过 vim.basic 写入公钥到 /root/.ssh/authorized_keys 获得 root 权限,SSH 连接后在 /root/flag/flag01.txt 获取 flag01。

Nacos 服务存在什么漏洞?如何利用它获取 flag02?

Nacos 服务存在弱口令 nacos:nacos,登录后台可获取配置文件。利用 Nacos Client Yaml 反序列化漏洞,通过修改 artsploit/yaml-payload 制作恶意 jar 包(添加管理员账户),上传到 Web01 并启动 HTTP 服务,在 Nacos 中触发反序列化执行命令添加用户,然后远程桌面连接,在 Administrator 用户目录下发现 flag02。

Web03 的 Fastjson 漏洞如何利用?flag03 在哪里?

访问医院后台管理平台(http://172.30.12.236:8080/),Burp 抓包发现 JSON 数据,猜测为 Fastjson,发送 payload 得到版本 1.2.45。由于主机不出网,在 Web01 上传 JNDI-Injection-Exploit 进行反弹 shell,或使用 fastjson-exp 注入内存马。反弹 shell 后修改 root 密码并 SSH 连接,在 /root/flag03.txt 获取 flag03。

Web04 的 Grafana 和 PostgreSQL 如何组合利用获取 flag04?

通过 fscan 扫描发现 Web04 开放 Grafana(3000)和 PostgreSQL(5432)。利用 Grafana 未授权任意文件读取漏洞(CVE-2021-43798)读取 PostgreSQL 用户密码(postgres:Postgres@123)。连接 PostgreSQL 后,版本为 8.1.0,通过创建调用 libc.so.6 的 system 函数执行命令,反弹 shell。然后利用 sudo 权限执行 psql 提权到 root,最终获取 flag04。

在渗透过程中如何搭建代理进行内网横向移动?

通过 FRP 搭建代理:在 Web01 上配置 FRP 客户端(socks5 插件),连接 FRP 服务端,然后使用 Proxifier 连接代理,即可访问内网其他机器。当需要跨网段时,需搭建二层代理。

🏷️

标签

➡️

继续阅读