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.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
keycloak-saml-redirect-param-split — Loopback-PoC für eine SAML-Broker-Schwachstelle in Keycloak 26.8.1: Ein prozentkodierter doppelter SAMLResponse-Name umgeht die Signaturprüfung bei Weiterleitungen und ermöglicht die Anmeldung als ein anderer Benutzer. | Kitploit
Tools/GitHubGitHub/abraxas/keycloak-saml-redirect-param-split
SchwachstellenanalyseExploitationWebanwendungs-ExploitationIdentitäts- & Zugriffsmanagement (IAM)AuthentifizierungLabs & Praxis
GitHubabraxas/keycloak-saml-redirect-param-split

keycloak-saml-redirect-param-split

Loopback-PoC für eine SAML-Broker-Schwachstelle in Keycloak 26.8.1: Ein prozentkodierter doppelter SAMLResponse-Name umgeht die Signaturprüfung bei Weiterleitungen und ermöglicht die Anmeldung als ein anderer Benutzer.

Repository anzeigen
11vor 1 TagNoch 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

Abraxas Labs - keycloak-saml-redirect-param-split

keycloak-saml-redirect-param-split

Jemand ohne Keycloak-Konto kann einen Unternehmens-SAML-Login als eine andere Person abschließen. Die Person meldet sich einmal beim vorgelagerten Identity Provider an, behält diese signierte Weiterleitung und hängt ein zweites SAML-Dokument unter einem prozentkodierten Namen davor. Keycloak prüft die echte Signatur und meldet die Person dann unter dem Namen aus dem gefälschten Dokument an. Dafür ist ein SAML-Broker erforderlich, der HTTP-Redirect-Antworten signiert, mit aktivierter Signaturvalidierung und deaktivierten Assertion-Signaturen, was der Metadaten-Import so konfiguriert. Es handelt sich nicht um die Semikolon-Aufteilung aus Issue #53354.

Klasse: OAuth-Überbleibsel Reichweite: Remote (unauthentifiziert gegenüber Keycloak; erfordert einen redirect-signierenden SAML-Broker)

Keycloak 26.8.1 (24ed1dad) - Red Hat

IDnoch keine CVE
KlasseOAuth-Überbleibsel
ReichweiteRemote (kein Keycloak-Konto; erfordert eine echte HTTP-Redirect-Signatur vom IdP)
CWECWE-287 / CWE-347 / CWE-116
CVSSHoch: 7.4 CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N
ProduktKeycloak
Betroffen26.8.1 (24ed1dadf3f246a555adb6d3d4a99e9b3003fb3b); Quarkus 3.40.1; Image quay.io/keycloak/keycloak:26.8.1
Authkeine bei Keycloak. Erfordert einen SAML-Identity-Provider-Broker mit validateSignature=true und wantAssertionsSigned nicht gesetzt oder false.
LizenzGNU Affero GPL v3.0
Labnur 127.0.0.1:18084

Was ein Angreifer tun kann

Erfordert die NameID des Opfers (üblicherweise eine E-Mail) und eine echte signierte HTTP-Redirect-Weiterleitung von diesem IdP. Kein Keycloak-Passwort erforderlich. Kein Postfach erforderlich. Ein reiner POST-IdP liefert diese Signatur nicht. Der GET-ACS bleibt eingebunden, selbst wenn der Metadaten-Import POST bevorzugt.

PrivilegMethode / SinkRecon / Integrität / VerfügbarkeitIm Lab nachgewiesen oder abgeleitet
Ein gefälschtes SAML-Dokument einbinden, während die echte Signatur weiterhin verifiziertGET-Broker-ACS mit SAML%52esponse=<forged> vor dem signierten SAMLResponseIntegrität (Authn)Im Lab nachgewiesen. Kontroll-E-Mail [email protected]. Angriffs-E-Mail [email protected]
Den Opfer-Benutzer über den First-Broker-Login anlegencallback.authenticated auf der gefälschten NameIDIntegrität (Kontoerstellung)Im Lab nachgewiesen. Opfer-Anzahl 0 vor der Split-Abfrage, 1 danach
Sitzung als ein bestehender gebrokerter Benutzer, einschließlich eines Administrators, der denselben IdP nutztDerselbe ACS, NameID dieses BenutzersIntegrität (Kontoübernahme)Abgeleitet. Das Lab legte das Opfer beim ersten Login an
RelayState und die Auth-Sitzung beibehaltenRelayState bleibt der signierte WertIntegritätQuellcode. Die Signatur deckt RelayState ab
NegativkontrolleEchte signierte Weiterleitung, kein zusätzlicher Parametern/aIm Lab nachgewiesen. Die Kontrolle endet als die Angreifer-E-Mail

Bleibt bei diesem Überbleibsel geschlossen

AchseMethode / SinkWarum geschlossen
IntegritätSemikolon-Aufteilung SAMLResponse=...;SAMLResponse=...Issue #53354. quarkus.http.use-semicolon-as-query-param-delimiter=false
IntegritätUnsignierte Assertion bei wantAssertionsSigned=truehandleLoginResponse verlangt dann eine Assertion-Signatur
IntegritätKein SAML-Broker oder reiner POST-IdP ohne Redirect-SignaturDer Angreifer erhält nie SigAlg + Signature bei einem GET
IntegritätHost-RCE, unauthentifizierte Admin-RESTAußerhalb der Klasse
IntegritätStandard-VERIFY_PROFILE-NamensformularIm Lab als Abschlussschritt nachgewiesen, nicht als Widerlegung. Das Formular enthält bereits die gebrokerte E-Mail

Wie ich es gefunden habe

Ich habe Keycloak 26.8.1 gepinnt. RESTEasy Reactive übernimmt @QueryParam("SAMLResponse") von Vert.x, das Query-Namen prozent-dekodiert, sodass SAML%52esponse auf SAMLResponse zusammenfällt und der erste Wert gewinnt. verifyRedirectSignature rekonstruiert den signierten String aus getQueryParameters(false) auf der rohen Query, wo dieser Name ein anderer Schlüssel bleibt.

Bereits dokumentierte Fehlversuche: #53354 als diesen Rest zu behandeln (prozent-kodierter Name, kein Semikolon); ACS-302s im Lab-Client zu folgen und AUTH_SESSION_ID zu verwerfen; leere firstName/lastName bei VERIFY_PROFILE als Fehlschlag zu lesen (die E-Mail ist bereits die gebrokerte NameID); eine Reverse Shell. Theater.

Lab

Python 3.11+ mit cryptography. Docker erforderlich.

python3 keycloak-saml-redirect-param-split-Abraxas-Labs.py

oder:

cd lab
./run.sh

Ziel ist ausschließlich http://127.0.0.1:18084. Image quay.io/keycloak/keycloak:26.8.1. Der Launcher führt chdir in lab/ aus und startet run.sh per exec. Der Lab-IdP läuft im selben Prozess. Er kommuniziert niemals mit einem echten Identity Provider.

IOC image=quay.io/keycloak/keycloak:26.8.1 label-version=26.8.1
IOC serverinfo-version=26.8.1
IOC validate-signature=true want-assertions-signed=absent
IOC review-profile=DISABLED
IOC [email protected]
IOC victim-before=0
IOC [email protected]
IOC victim-after=1
SUCCESS KC-H04-SAML-REDIRECT kcs04b8n1

Die Behebung

Verifiziere dasselbe Query-Dokument, das der Endpunkt parst. Prozent-dekodiere Parameternamen vor der Signatur-Rekonstruktion oder lehne eine Query ab, die nach dem Dekodieren mehr als eine SAMLResponse enthält. Aktiviere wantAssertionsSigned für Redirect-Broker, einschließlich des Metadata-Import-Pfads.

Referenzen

  • github.com/keycloak/keycloak Tag 26.8.1 (24ed1dadf3f246a555adb6d3d4a99e9b3003fb3b)
  • SAMLEndpoint.redirectBinding (SAMLEndpoint.java:182-183, :779-813, :896-914)
  • SamlProtocolUtils.verifyRedirectSignature (SamlProtocolUtils.java:216-249)
  • KeycloakUriInfo.getQueryParameters (KeycloakUriInfo.java:147-163)
  • In der Nähe (nicht dieser Pfad): Issue #53354 Semikolon-Aufteilung
  • CWE-287 · CWE-347 · CWE-116

Lizenz

GNU Affero GPL v3.0. Siehe LICENSE. Nur Loopback-Lab. Keine Gewährleistung.

Abraxas Labs [email protected]

Bitte schreibe die CVE Abraxas Labs zu.

Tool herunterladen