
Proof-of-Concept-Exploit für CVE-2026-29000, eine Authentifizierungsumgehung in pac4j-jwt über verschachteltes PlainJWT mit alg:none innerhalb eines JWE-Containers.
Dieses Repository enthält einen Proof-of-Concept (POC) für eine Authentifizierungs-Bypass-Schwachstelle in pac4j-jwt (CVE-2026-29000). Die Schwachstelle ermöglicht es einem Angreifer, die Signaturprüfung zu umgehen, indem ein PlainJWT (mit alg: none) in einen JWE-Container (JSON Web Encryption) verschachtelt wird.
Der Angriff nutzt die Bereitschaft des Servers aus, ein mit seinem öffentlichen Schlüssel verschlüsseltes JWE zu entschlüsseln und anschließend dem inneren JWT zu vertrauen, ohne dessen Signatur zu validieren, sofern der none-Algorithmus verwendet wird.
Stellen Sie sicher, dass Python 3 sowie die erforderlichen Abhängigkeiten installiert sind:
pip install requests jwcrypto
Verwenden Sie exp.py, um den öffentlichen Schlüssel des Ziels vom JWKS-Endpunkt abzurufen, ein bösartiges Token mit ROLE_ADMIN-Berechtigungen zu erstellen und es in ein JWE zu verpacken.
python3 exp.py <TARGET_URL> --user admin --role ROLE_ADMIN
Beispiel:
python3 exp.py http://localhost:8080
Sobald Sie das gefälschte Token haben, verwenden Sie app.py, um mit geschützten API-Endpunkten zu interagieren.
python3 app.py <TARGET_URL> <FORGED_TOKEN>
Einen bestimmten Endpunkt testen:
python3 app.py http://localhost:8080 <FORGED_TOKEN> --endpoint /api/users
exp.py: Das Haupt-Exploit-Skript, das JWKS abruft, einen PlainJWT erstellt und ein JWE fälscht.app.py: Ein Hilfsskript zum Testen des gefälschten Tokens gegen entdeckte API-Endpunkte (/api/dashboard, /api/users, /api/settings).Dieser POC dient ausschließlich Bildungszwecken und autorisierten Sicherheitstests. Unbefugter Zugriff auf Computersysteme ist illegal.