oil-lamp-cat/CVE-2026-29000-pac4j-PoC

GitHub: oil-lamp-cat/CVE-2026-29000-pac4j-PoC

针对 CVE-2026-29000 的 Python 概念验证脚本,利用 pac4j-jwt 库的验证缺陷,通过伪造 JWE 令牌绕过身份认证。

Stars: 0 | Forks: 0

![principal](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/4d413610e4114235.png) # CVE-2026-29000: pac4j-jwt 认证绕过 PoC 本仓库包含一个用于 **CVE-2026-29000** 的 Python 概念验证 (PoC) 漏洞利用脚本。 该脚本专门为解决 **HackTheBox (HTB)** 上的 **"Principal"** 靶机而开发和测试。 该漏洞存在于 `pac4j-jwt` 库(版本 <= 6.0.3)中,`JwtAuthenticator` 错误地允许攻击者通过将未签名的 `PlainJWT` 包装在仅使用服务器公钥加密的 JWE 中,从而绕过签名验证。 ## 免责声明 本脚本仅用于教育目的和道德黑客测试。请勿在未获得明确授权的系统上使用。 ## 前置条件 在运行脚本之前,请安装所需的 Python 库: ``` pip install jwcrypto requests ``` ## 使用方法 通过传递目标基础 URL 作为参数来运行脚本: ``` python3 jwt_exploit.py http://: ``` ### 预期输出 ![run](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/d83aeb1297114255.png) ## 目标定制(在 HTB Principal 之外复用的关键) 虽然此脚本是为 HTB Principal 靶机定制的,但您**必须**修改 `jwt_exploit.py` 中的以下硬编码部分,以匹配不同目标的业务逻辑: 1. **JWKS 端点:** 更改服务器公开其公钥的端点。 # 默认设置为 /api/auth/jwks resp = requests.get(f"{TARGET}/api/auth/jwks") 2. **JWT Claims:** 修改 JSON payload 以匹配目标应用程序所需的角色和用户名。 payload = b64url_encode(json.dumps({ "sub": "admin", # 更改为目标的管理员用户名 "role": "ROLE_ADMIN", # 更改为目标的管理员角色结构 "iss": "principal-platform", # 更改为目标的签发者字符串 "iat": now, "exp": now + 3600 }).encode()) 3. **验证端点:** 更改用于验证伪造令牌的端点。 # 默认设置为 /api/dashboard resp = requests.get(f"{TARGET}/api/dashboard", headers=headers) ## 漏洞利用证明(Dashboard 访问) 生成令牌后,您可以将其注入浏览器的 `Session Storage` 或 `Cookies`(取决于应用程序的配置)以获得未经授权的访问权限。 ![inject](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/d16102aaec114308.png)
标签:CTF Writeup, CVE-2026-29000, HackTheBox, JWE伪造, JWKS, JWT安全, pac4j-jwt, PE 加载器, PlainJWT, Python PoC, Web安全, 公钥加密, 协议分析, 权限提升, 网络安全, 蓝队分析, 认证绕过, 逆向工具, 隐私保护