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-3456-OAuth2-PKCE-Race-Condition-Account-Takeover- — Python-PoC für CVE-2026-3456 zur Demonstration einer OAuth2-PKCE-Race-Condition-Account-Übernahme, mit einem verwundbaren Auth-Server und einem parallelen Code-Verifier-Exploit-Skript. | Kitploit
Tools/GitHubGitHub/george0papasotiriou/cve-2026-3456-oauth2-pkce-race-condition-account-takeover-
Authentifizierung & AutorisierungSchwachstellenanalyseExploitationWebanwendungs-ExploitationWebsicherheitAPI-Sicherheit
GitHubgeorge0papasotiriou/cve-2026-3456-oauth2-pkce-race-condition-account-takeover-

CVE-2026-3456-OAuth2-PKCE-Race-Condition-Account-Takeover-

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Python-PoC für CVE-2026-3456 zur Demonstration einer OAuth2-PKCE-Race-Condition-Account-Übernahme, mit einem verwundbaren Auth-Server und einem parallelen Code-Verifier-Exploit-Skript.

Repository anzeigen
vor 18 TagenNoch nicht geprüft

8. CVE-2026-3456 – OAuth2-PKCE-Race-Condition (Kontoübernahme)

Überblick

Eine Wettlaufbedingung im OAuth2-Autorisierungsserver ermöglicht es einem Angreifer, den Autorisierungscode eines Opfers wiederzuverwenden, bevor der legitime Client ihn einlöst, indem er den PKCE-code_verifier innerhalb eines kleinen Zeitfensters errät oder per Brute-Force ermittelt.

Schweregrad: Hoch (Kontoübernahme)

Simulation (Python-HTTP-Server)

root@kitploit:~
#!/usr/bin/env python3
"""
vulnerable_auth_server.py - Authorization server with race condition window.
"""
import time, random, hashlib, base64, secrets
from http.server import HTTPServer, BaseHTTPRequestHandler
import urllib.parse

# Simulated storage
auth_codes = {}  # code -> {client_id, redirect_uri, code_challenge, scope, user}
tokens = {}

def generate_code():
    return secrets.token_urlsafe(16)

class AuthHandler(BaseHTTPRequestHandler):
    def do_GET(self):
        parsed = urllib.parse.urlparse(self.path)
        params = urllib.parse.parse_qs(parsed.query)
        if parsed.path == '/authorize':
            # User approves, redirect with code
            code = generate_code()
            auth_codes[code] = {
                'client_id': params.get('client_id', ['unknown'])[0],
                'redirect_uri': params.get('redirect_uri', [''])[0],
                'code_challenge': params.get('code_challenge', [''])[0],
                'user': '[email protected]'
            }
            redirect = f"{params['redirect_uri'][0]}?code={code}&state={params.get('state',[''])[0]}"
            self.send_response(302)
            self.send_header('Location', redirect)
            self.end_headers()
        elif parsed.path == '/token':
            # Token endpoint (POST) but simplified as GET for demo
            code = params.get('code', [''])[0]
            verifier = params.get('code_verifier', [''])[0]
            if code in auth_codes:
                entry = auth_codes[code]
                # Check PKCE: SHA256(verifier) == challenge?
                challenge = base64.urlsafe_b64encode(hashlib.sha256(verifier.encode()).digest()).decode().rstrip('=')
                if challenge == entry['code_challenge']:
                    # Race condition: we do not invalidate code immediately (small window)
                    # Attacker can try to redeem same code with a different verifier if they win race.
                    access_token = secrets.token_urlsafe(32)
                    tokens[access_token] = entry['user']
                    # Insecure: code still present for a few milliseconds
                    # To simulate, we add a deliberate delay
                    time.sleep(0.1)  # window of opportunity
                    del auth_codes[code]  # remove after use (but after sleep)
                    self.send_response(200)
                    self.end_headers()
                    self.wfile.write(f'access_token={access_token}'.encode())
                else:
                    self.send_response(400)
                    self.end_headers()
                    self.wfile.write(b'invalid code_verifier')
            else:
                self.send_response(400)
                self.end_headers()
                self.wfile.write(b'invalid code')
        else:
            self.send_response(404)
            self.end_headers()

server = HTTPServer(('0.0.0.0', 5000), AuthHandler)
print("Auth server on :5000")
server.serve_forever()

CVE-2026-3456 – OAuth2-PKCE-Race-Condition (Kontoübernahme)

Severity: High

📖 Überblick

Eine Schwachstelle im PKCE-Ablauf des OAuth2-Autorisierungsservers ermöglicht es einem Angreifer, einen Autorisierungscode vor dem legitimen Client einzulösen und PKCE mithilfe einer Race Condition zu umgehen. Der Server invalidiert den Code nicht atomar, sodass ein Zeitfenster bleibt, in dem ein bösartiger Verifier ausprobiert werden kann.

⚙️ Schwachstellendetails

  • Typ: Race Condition / TOCTOU
  • Auswirkungen: Kontoübernahme durch Erlangen des Zugriffstokens des Opfers.
  • Grundursache: Der Token-Endpunkt prüft PKCE, stellt ein Token aus und entfernt dann den Code, aber der Code bleibt für einen kurzen Moment gültig. Ein Angreifer mit einem erbeuteten Code (z. B. über offene Weiterleitung) kann viele Verifier gleichzeitig versuchen.

🧪 Exploit-Demonstration

  1. Starten Sie den verletzlichen Auth-Server:
    root@kitploit:~
    python vulnerable_auth_server.py
    
  2. Führen Sie den Race-Exploit aus:
    root@kitploit:~
    python race_condition_exploit.py
    
Tool herunterladen