alihussainzada/CVE-2026-29000-Python-PoC-pac4j-JWT-AuthenticationBypass-Poc
GitHub: alihussainzada/CVE-2026-29000-Python-PoC-pac4j-JWT-AuthenticationBypass-Poc
针对 CVE-2026-29000 的 Python 概念验证工具,利用 pac4j JWT 模块的签名验证缺陷实现认证绕过。
Stars: 0 | Forks: 0
# CVE-2026-29000 – pac4j JWT 认证绕过 (Python PoC)
针对 **CVE‑2026‑29000** 的 Python 概念验证,这是一个影响使用 **pac4j JWT 模块** 应用程序的严重认证绕过漏洞。
该漏洞允许攻击者通过发送一个包含未签名 PlainJWT (`alg: none`) 的恶意 **JWE token**,以任意用户身份进行认证。
## 🧠 漏洞概述
pac4j 应用程序可能使用以下令牌流程:
1. 用户通过 `/api/auth/login` 进行认证
2. 服务器返回一个 **加密 JWT (JWE)**
3. 客户端将令牌作为 **Bearer token** 发送
4. 服务器解密 JWE 并验证内部 JWT 签名
由于 JWT 解析逻辑处理不当,当内部令牌是 **PlainJWT (未签名令牌)** 时:
* `toSignedJWT()` 返回 **null**
* 签名验证被 **跳过**
* Claims 被视为可信并接受
这使得攻击者能够:
* 伪造任意 claims
* 提升权限
* 以 **admin** 身份认证
## ⚠️ 影响
攻击者可以:
* 以任意用户身份认证
* 分配任意角色
* 访问受保护的端点
* 实现 **完全权限提升**
无需私钥 —— 仅需通过 JWKS 暴露的 **公钥**。
## 🧪 概念验证
本仓库提供了一个 **Python PoC**,它可以:
* 从 JWKS 端点获取公钥
* 创建未签名的 JWT
* 将其封装在 JWE token 内部
* 生成恶意的 Bearer token
## 📦 环境要求
Python 3.x
安装依赖:
```
pip install jwcrypto requests
```
## 🚀 使用方法
```
python3 poc.py \
--jwks http://target:8080/api/auth/jwks \
--user admin \
--role ROLE_ADMIN
```
示例输出:
```
=== Malicious JWE Token ===
eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMTI4R0NNIiwiY3R5IjoiSldUIn0...
```
使用方式:
```
Authorization: Bearer
```
## ⚠️ 免责声明
本仓库仅用于 **教育和研究目的**。
请勿在未经授权的情况下对系统使用此代码。
## 👨💻 作者
Ali Hussainzada
应用安全研究员 | 漏洞猎人
标签:alg:none攻击, CISA项目, CVE-2026-29000, JWE注入, JWKS利用, JWT认证绕过, Maven, pac4j, PlainJWT漏洞, Python PoC, Web安全, 协议分析, 安全漏洞, 权限提升, 漏洞验证, 蓝队分析, 越权访问, 身份伪造, 软件清单, 逆向工具