总体思路
子域名扫描->CVE-2023-42793利用->获取敏感信息->user->端口转发->CVE-2024-21626利用->root
信息收集&端口利用
nmap -sSVC 10.10.11.13
目标开放22、80、8000端口,这里先将runner.htb加入到hosts文件后,访问之
查看源码后也没发现可疑点,尝试目录扫描和子域名扫描
发现子域名teamcity.runner.htb,将其加入hosts后访问
CVE-2023-42793
查阅资料可知,teamcity为一个组件,在exploitDB上查找其漏洞
存在远程代码执行漏洞,尝试该POC
在执行两次后,可以拿到一个登录的用户名和密码
经过查找文件,发现在Backup模块可以备份文件,并且备份后的压缩包会在Diagnstics模块中显示
将其下载到本地分析,发现其中存在id_rsa和users文件
发现users文件中有两段密文,将其使用john解密后,能得到matthew的密码为piper123,但是却无法登录,推测id_rsa文件为其中某一个用户的登录凭证
经过测试后,得出id_rsa为john用户的登录私钥
ssh -i id_rsa john@runner.htb
端口转发
因为没有获得密码, 无法使用sudo -l查看权限,查看当前开放的端口是否存在敏感信息
netstat -nltp
发现有9000端口,使用chisel将其代理到本地
#kali:
chisel server -p 6150 --reverse
#靶机:
./chisel client 10.10.14.45:6150 R:9000:127.0.0.1:9000
访问本地9000端口
是一个portainer登录界面,回想起之前的matthew/piper123还未被使用,尝试使用其登录
成功登录
CVE-2024-21626
该漏洞由于runc的版本问题,会造成容器逃逸,具体链接详见:
https://nitroc.org/en/posts/cve-2024-21626-illustrated/#exploit-via-setting-working-directory-to-procselffdfd
新建一个容器,使用teamcity:latest作为镜像
将下方的Working Dir更改为/proc/self/fd/8,创建容器
创建完成后,打开控制台
使用root连接
虽然当前是在容器内,但是依然能做到任意文件读取,读取flag