Hackthebox - Seal
Seal
10.10.10.250
nmap
GitBucket SearchSploit
用不了
443 ffuf
hostname
seal.htb
GitBucket
可以在 git log 中找到一个包含删除密码的commit,从而获得 tomcat 的密码。
tomcat:42MrHBf*z8{Z%
nginx 绕过
/manager/html 这个url 不能直接访问,因为被 nginx 检测到 ssl 证书过期时将返回 403。
所以需要进行绕过,这里主要是一个 nginx+tomcat 的 csrf 漏洞,有两种绕过方式
https://rioasmara.com/2022/03/21/nginx-and-tomcat-mutual-auth-bypass/
第一种
/manager/;name=apple/html
中间的 /;name=apple/ 对 nginx 可见,但对 tomcat 不可见,可以达到绕过的效果。
第二种
/manager/DoesNotExist/..;/html
其中 /..;/ 不会被 nginx 处理,但会被 tomcat 解释为上级目录,故 /DoesNotExist/..;/ 将被解释为 /,达到绕过的效果。
构造 payload 后,输入从 git log 获得的密码,进入到 tomcat 后台管理界面。这里可以上传 war 文件进行部署,通过 msfvenom 构造 payload.war,拿到 shell。
pspy 抓取定时任务
上传运行 pspy 可知存在定时任务执行 ansible,查看 /opt/backups/playbook/run.yml。
查看 ansible synchronize 文档 https://docs.ansible.com/ansible/latest/collections/ansible/posix/synchronize_module.html,可知当 copy_links=yes 时,拷贝文件夹中的软链接时将不会只拷贝链接文件,而是会将链接指向的文件拷贝过来,那么我们就可以在可写的文件夹中构造软链接读取任何 luis 用户有权限读取的文件,比如他的私钥。
首先在 /var/lib/tomcat9/webapps/ROOT/admin/dashboard 中查找有权限写的目录。
uploads 权限为 777,可供我们构造 Payload。
构造软链接,去备份结果目录查看结果。
可以看到最新的文件大小相比之前有了变化,将其解压看看。
获得私钥,准备登录 luis 账户。
成功登录。
luis 的 sudo -l
无需密码即可通过 sudo 执行任意 playbook,那么接下来的提权就非常简单了。
根据 https://gtfobins.github.io/gtfobins/ansible-playbook/#sudo
成功获得 root 权限。