
Prova de conceito de exploit para CVE-2026-29000, uma bypass de autenticação no pac4j-jwt via PlainJWT aninhado com alg:none dentro de um contêiner JWE.
Este repositório contém uma prova de conceito (POC) para uma vulnerabilidade de bypass de autenticação no pac4j-jwt (CVE-2026-29000). A vulnerabilidade permite que um atacante contorne a verificação de assinatura aninhando um PlainJWT (usando alg: none) dentro de um contêiner JWE (JSON Web Encryption).
O ataque funciona explorando a disposição do servidor em descriptografar um JWE criptografado com sua chave pública e, em seguida, confiar no JWT interno sem validar sua assinatura, desde que ele use o algoritmo none.
Certifique-se de ter o Python 3 instalado juntamente com as dependências necessárias:
pip install requests jwcrypto
Use o exp.py para obter a chave pública do alvo a partir do endpoint JWKS, criar um token malicioso com privilégios de ROLE_ADMIN e envolvê-lo em um JWE.
python3 exp.py <TARGET_URL> --user admin --role ROLE_ADMIN
Exemplo:
python3 exp.py http://localhost:8080
Depois de obter o token forjado, use o app.py para interagir com endpoints de API protegidos.
python3 app.py <TARGET_URL> <FORGED_TOKEN>
Testar um endpoint específico:
python3 app.py http://localhost:8080 <FORGED_TOKEN> --endpoint /api/users
exp.py: O script de exploit principal que obtém o JWKS, cria um PlainJWT e forja um JWE.app.py: Um script utilitário para testar o token forjado contra endpoints de API descobertos (/api/dashboard, /api/users, /api/settings).Esta POC é apenas para fins educacionais e de testes de segurança autorizados. O acesso não autorizado a sistemas de computador é ilegal.