HackTheBox-Principal
端口扫描
1 | ┌──(kali㉿kali)-[~/HTB/principal] |
web 渗透
靶机开启了 8080 端口,上去查看,发现是一个登录页面:

在开发者工具的 网络 模块下,发现后端是一个 pac4j-jwt/6.0.3 :

在网上搜索是否存在已知漏洞,发现了一个身份认证绕过漏洞 CVE-2026-29000,这个漏洞允许我们在拿到服务器的公钥的情况下,就绕过身份认证。
在网页的 app.js 里面,我们发现了存储 jwks 的 api 端点:

访问它,我们获得了 jwks :

于是,我们就可以使用上述漏洞的 POC 来获取 token 了:

使用该 token 访问 /api/settings :

有一个像是密码的字符串 D3pl0y_$$H_Now42! 。
在 /api/dashboard 端点,有一个用户名叫 svc-deploy :

因此尝试使用 svc-deploy:D3pl0y_$$H_Now42! 作为账号密码进行 ssh 登录,登录成功了:

拿到了 user flag。
提权
在靶机内寻找信息,在 /opt/principal/ssh 里面有几个文件:

其中 README.txt 的内容如下:
1 | CA keypair for SSH certificate automation. |
把这段话扔给 AI ,他说 在 SSH 世界里,可以用这个 CA 给用户的公钥“签名”,生成一个证书。之后用户拿着证书登录服务器,服务器只需验证证书是否由受信任的 CA 签名,而不用逐一配置每个用户的公钥。
意味着,我们可以拿这个 CA 证书来给一个 ssh 公钥签名,然后拿着这个签名后的证书去进行登录。
流程如下:
生成一个新的 SSH 密钥对(用于登录 root)
ssh-keygen -t rsa -b 4096 -f mykey -N ""使用 CA 私钥对公钥进行签名,生成证书
ssh-keygen -s /opt/principal/ssh/ca -I "penetest" -n root -V +1h mykey.pub使用证书以 root 身份登录本机
ssh -i mykey -o CertificateFile=mykey-cert.pub root@localhost
如下:

拿到了 root flag。
