
Proof-of-Concept-Exploit für CVE-2026-18963, der eine unauthentifizierte Kontoübernahme durch Umgehung des Reset-Credentials-Ablaufs in Webanwendungen demonstriert.
★ CVE-2026-18963 Keycloak Reset-Credentials-Flow-Bypass PoC ★
https://github.com/user-attachments/assets/ebed1e64-a40c-4333-be18-9acbadd655b0
CVE-2026-18963 ist eine kritische unauthentifizierte Account-Übernahme-Schwachstelle in der Keycloak-Komponente
keycloak-services(CVSS 9.1). Ein Fehler in der Authentifizierungs-Zustandsmaschine für das Zurücksetzen von Anmeldedaten ermöglicht es einem entfernten Angreifer, den Schritt der E-Mail-Verifizierung zu umgehen und das Formular zur Passwortaktualisierung zu erreichen, ohne im Besitz des Reset-Links zu sein. Durch das Anvisieren eines bekannten Benutzernamens kann ein Angreifer ein neues Passwort setzen und die Kontrolle über das Konto des Opfers übernehmen, ohne Authentifizierung oder Interaktion des Benutzers.
Der verwundbare Ablauf speichert den Zustand des Credential-Selectors als sitzungsweite Authentifizierungsnotiz, anstatt ihn an die Ausführung zu binden, die den Selector angezeigt hat. Ein erneutes Betreten des Reset-Ablaufs kann daher veralteten Selector-Zustand für eine andere Ausführung wiederverwenden. In betroffenen Versionen akzeptiert der Reset-E-Mail-Authenticator zudem eine Aktion, ohne zu bestätigen, dass sie über ein gültiges E-Mail-Action-Token erreicht wurde. Durch die Verkettung dieser Verhaltensweisen wird der Angreifer direkt zu UPDATE_PASSWORD weitergeleitet.
| Kategorie | Version |
|---|---|
| Verwundbar | Keycloak 26.0.0 ≤ Version < 26.4.15 |
| Verwundbar | Keycloak 26.5.0 ≤ Version < 26.6.6 |
| Verwundbar | Keycloak 26.7.0 ≤ Version < 26.7.2 |
| Gepatcht | 26.4.15, 26.6.6, 26.7.2 (jeweilige Release-Zweige) |
Dieses Lab verwendet Keycloak 26.7.1.
Erstellen und starten Sie die verwundbare Keycloak 26.7.1-Umgebung. Das Image importiert eine Test-Realm mit aktiviertem verwundbarem Reset-Credentials-Flow, einem vorbereiteten victim-Konto und einem EQST-Portal mit einer geschützten Flag-Seite.
docker build -t cve-2026-18963 .
docker run --rm -d \
--name cve-2026-18963 \
-p 9105:9105 \
-e PORTAL_PUBLIC_URL=http://127.0.0.1:9105 \
cve-2026-18963
Warten Sie, bis Keycloak gestartet ist, und öffnen Sie dann das Portal:
http://127.0.0.1:9105
| Voraussetzung | Zustand in diesem Lab |
|---|---|
| Keycloak | 26.7.1 (verwundbar) |
| Realm | cve-lab |
| Passwort vergessen | aktiviert |
| Zielkonto | victim |
| Keycloak-Basis-URL | http://127.0.0.1:9105/keycloak |
Das mitgelieferte exploit.py automatisiert die Manipulation des Reset-Flow-Zustands, fordert das Formular zur Passwortaktualisierung an, ohne ein E-Mail-Action-Token zu verbrauchen, ändert das Passwort des Opfers und verifiziert die Übernahme durch Anfordern eines Access-Tokens mit den neuen Anmeldedaten.
Installieren Sie die Python-Abhängigkeit:
python3 -m pip install requests
Führen Sie den Exploit mit der Keycloak-URL, dem Benutzernamen des Opfers und einem neuen Passwort aus:
# python3 exploit.py <keycloak-url> <victim> <new-password>
python3 exploit.py \
http://127.0.0.1:9105/keycloak \
victim \
'NewPassword1!'
Ein erfolgreicher Lauf gibt Folgendes aus:
[*] selector note set via tryAnotherWay
[*] victim submitted: victim
[*] update-password form served without an action token
[+] VULNERABLE - victim password is now 'NewPassword1!'
Öffnen Sie http://127.0.0.1:9105, klicken Sie auf LOGIN und authentifizieren Sie sich als victim mit dem neuen Passwort, um die Account-Übernahme zu bestätigen.