Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

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

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

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2026-29000-pac4j-jwt-auth-bypass — 针对使用 pac4j-jwt 且启用 JWE(JSON Web 加密)的应用程序中认证绕过漏洞的概念验证(PoC)。 | Kitploit
工具/GitHubGitHub/ptechamanja/cve-2026-29000-pac4j-jwt-auth-bypass
漏洞分析漏洞利用Web安全CTF渗透测试身份验证
GitHubptechamanja/cve-2026-29000-pac4j-jwt-auth-bypass

CVE-2026-29000-pac4j-jwt-auth-bypass

针对使用 pac4j-jwt 且启用 JWE(JSON Web 加密)的应用程序中认证绕过漏洞的概念验证(PoC)。

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
查看仓库
1186个月前尚未审核
分享

HTB Principal — CVE-2026-29000 漏洞分析报告

免责声明: 此漏洞利用程序仅为已退役的 HackTheBox 机器 "Principal" 开发。仅供教育目的使用。请勿将其用于您不拥有或未经明确许可测试的系统。

机器信息

字段详情
名称Principal
平台HackTheBox
难度—
状态已退役

漏洞 — CVE-2026-29000

受影响的库: pac4j-jwt < 4.5.9 / 5.7.9 / 6.3.3
严重性: 严重
类型: 身份验证绕过

摘要

JwtAuthenticator 中的一个逻辑缺陷允许攻击者通过将未签名的 PlainJWT(alg=none)包装在 JWE(加密 JWT)内部来绕过身份验证。

当服务器解密 JWE 时,它会尝试将内部令牌解析为 SignedJWT。由于内部令牌是 PlainJWT,SignedJWT 对象为 null,签名验证被完全跳过。服务器随后从未经验证的声明中构建用户配置文件——允许完全冒充任何用户,包括管理员。

攻击要求

  • 服务器的 RSA 公钥(通常通过 JWKS 端点暴露)
  • 了解内部声明名称(例如角色、主题格式)

利用流程

构造恶意声明(sub=admin, role=ROLE_ADMIN)
        ↓
构建未签名的 PlainJWT(alg=none)
        ↓
使用服务器的 RSA 公钥将 PlainJWT 包装在 JWE 内部
        ↓
向服务器提交 JWE 令牌
        ↓
服务器解密 JWE → 发现 PlainJWT → 跳过签名检查 → 授予访问权限

漏洞利用

参见 exploit.py


修复方案

将 pac4j-jwt 升级到已修补的版本:

  • 4.5.9 或更高版本
  • 5.7.9 或更高版本
  • 6.3.3 或更高版本

或者在 JWE 解密后明确拒绝 PlainJWT 内部令牌:

if (jwt instanceof PlainJWT) {
    throw new CredentialsException("PlainJWT not allowed inside JWE");
}

⚙️ 攻击流程

  1. 从以下位置获取公钥:

/api/auth/jwks

  1. 构造恶意 JWT:
  • alg: none
  • 注入管理员角色
  1. 使用公钥将其包装在 JWE 内部

  2. 发送为:


Authorization: Bearer <token>

  1. 获得未授权访问权限

🛠️ PoC 使用方法

安装依赖

pip install jwcrypto requests

运行漏洞利用程序

python3 poc.py \
--jwks-url http://target/api/auth/jwks \
--target http://target/api/dashboard

📤 示例输出

[+] Forged Token:
eyJhbGciOiJSU0EtT0FFUC0yNTYi...

[+] Browser Injection:
sessionStorage.setItem("auth_token", "eyJhbGciOiJSU0EtT0FFUC0yNTYi...")

[+] Status: 200
{"user":{"username":"admin","role":"ROLE_ADMIN"}}

🌐 浏览器利用

打开开发者工具 → 控制台:

sessionStorage.setItem("auth_token", "<PASTE_TOKEN_HERE>")

然后导航到:

/dashboard

🔥 影响

  • 完全绕过身份验证
  • 权限提升至管理员
  • 未授权 API 访问
  • 潜在的横向移动

🛡️ 缓解措施

  • 解密后始终验证 JWT 签名(JWS)
  • 拒绝带有 alg: none 的令牌
  • 强制执行严格的令牌验证策略
  • 不要仅依赖加密来建立信任

👤 作者

  • Doomsknight

参考资料

  • pac4j 安全公告
  • HackTheBox
下载工具