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 |
|
看到这里允许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/sattrack
再sudo /bin/bash
就完事了 😓(官方在一个月前修复了这个Bug)
最后,狠狠的给他打个8分(虽然我还没打过Hard