Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

الخلاصاتاتصالالخصوصية© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
keycloak-saml-redirect-param-split — إثبات مفهوم (PoC) عبر Loopback لثغرة في وسيط SAML في Keycloak 26.8.1: اسم SAMLResponse مكرر ومُرمَّز نسبيًا يتجاوز التحقق من توقيع إعادة التوجيه، مما يسمح بتسجيل الدخول بصفة مستخدم آخر. | Kitploit
أدوات/GitHubGitHub/abraxas/keycloak-saml-redirect-param-split
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبإدارة الهوية والوصول (IAM)المصادقةمختبرات وتدريب عملي
GitHubabraxas/keycloak-saml-redirect-param-split

keycloak-saml-redirect-param-split

إثبات مفهوم (PoC) عبر Loopback لثغرة في وسيط SAML في Keycloak 26.8.1: اسم SAMLResponse مكرر ومُرمَّز نسبيًا يتجاوز التحقق من توقيع إعادة التوجيه، مما يسمح بتسجيل الدخول بصفة مستخدم آخر.

عرض المستودع
11منذ يوم واحدلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

Abraxas Labs - keycloak-saml-redirect-param-split

keycloak-saml-redirect-param-split

يمكن لشخص لا يملك حساب Keycloak إكمال تسجيل دخول SAML الخاص بالشركة بصفته شخصًا آخر. يسجّل الدخول مرة واحدة لدى مزوّد الهوية الأعلى، ويحتفظ بذلك التوجيه الموقّع، ويضع مستند SAML ثانيًا أمامه تحت اسم مُرمّز بنسبة مئوية. يتحقق Keycloak من التوقيع الصادق ثم يسجّل دخوله بالاسم الموجود في المستند المزوّر. يتطلب ذلك وسيط SAML يوقّع استجابات HTTP-Redirect، مع تفعيل التحقق من التوقيع وإبقاء توقيعات التأكيد معطّلة، وهو ما يضبطه استيراد البيانات الوصفية. وهو ليس الانقسام بالفاصلة المنقوطة من issue #53354.

الفئة: بقايا OAuth الوصول: عن بُعد (بدون مصادقة إلى Keycloak؛ يتطلب وسيط SAML يوقّع التوجيهات)

Keycloak 26.8.1 (24ed1dad) - Red Hat

المعرّفلا يوجد CVE بعد
الفئةبقايا OAuth
الوصولعن بُعد (بدون حساب Keycloak؛ يتطلب توقيع HTTP-Redirect حقيقيًا واحدًا من IdP)
CWECWE-287 / CWE-347 / CWE-116
CVSSعالٍ: 7.4 CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N
المنتجKeycloak
المتأثر26.8.1 (24ed1dadf3f246a555adb6d3d4a99e9b3003fb3b)؛ Quarkus 3.40.1؛ الصورة quay.io/keycloak/keycloak:26.8.1
المصادقةلا شيء على Keycloak. يتطلب وسيط مزوّد هوية SAML مع validateSignature=true وwantAssertionsSigned غائبًا أو بقيمة false.
الترخيصGNU Affero GPL v3.0
المختبر127.0.0.1:18084 فقط

ما يمكن للمهاجم فعله

يحتاج إلى NameID الخاص بالضحية (عادةً بريد إلكتروني) وإلى توجيه HTTP-Redirect موقّع حقيقي واحد من ذلك IdP. لا يحتاج إلى كلمة مرور Keycloak. لا يحتاج إلى صندوق بريد. مزوّد هوية يدعم POST فقط لا يمنح ذلك التوقيع. يبقى ACS الخاص بـ GET مثبّتًا حتى عندما يفضّل استيراد البيانات الوصفية POST.

الصلاحيةالطريقة / نقطة الوصولالاستطلاع / السلامة / التوافرمُثبت مختبريًا أم مُستنتج
ربط مستند SAML مزوّر بينما يظل التوقيع الصادق يتحققGET broker ACS مع SAML%52esponse=<forged> قبل SAMLResponse الموقّعالسلامة (المصادقة)مُثبت مختبريًا. بريد التحكم [email protected]. بريد الهجوم [email protected]
إنشاء مستخدم الضحية عبر أول تسجيل دخول للوسيطcallback.authenticated على NameID المزوّرالسلامة (إنشاء حساب)مُثبت مختبريًا. عدد الضحايا 0 قبل استعلام الانقسام، و1 بعده
جلسة كمستخدم وسيط موجود، بما في ذلك مسؤول يستخدم نفس IdPنفس ACS، NameID لذلك المستخدمالسلامة (الاستيلاء على الحساب)مُستنتج. أنشأ المختبر الضحية عند أول تسجيل دخول
الحفاظ على RelayState وجلسة المصادقةيبقى RelayState بالقيمة الموقّعةالسلامةالمصدر. يغطي التوقيع RelayState
التحكم السلبيتوجيه موقّع صادق، بدون معامل إضافيلا ينطبقمُثبت مختبريًا. يكتمل التحكم ببريد المهاجم

يبقى مغلقًا على هذه البقايا

المحورالطريقة / نقطة الوصولسبب إغلاقه
السلامةالانقسام بالفاصلة المنقوطة SAMLResponse=...;SAMLResponse=...issue #53354. quarkus.http.use-semicolon-as-query-param-delimiter=false
السلامةتأكيد غير موقّع عندما يكون wantAssertionsSigned=trueيتطلب handleLoginResponse عندئذٍ توقيع تأكيد
السلامةلا يوجد وسيط SAML، أو IdP يدعم POST فقط بدون توقيع توجيهلا يحصل المهاجم أبدًا على SigAlg + Signature على GET
السلامةRCE على المضيف، Admin REST بدون مصادقةخارج الفئة
السلامةنموذج الاسم الافتراضي VERIFY_PROFILEمُثبت مختبريًا كخطوة إكمال، وليس كدحض. يحتوي النموذج بالفعل على البريد الوسيط

كيف وجدته

ثبّتُ إصدار Keycloak 26.8.1. يأخذ RESTEasy Reactive الوسيط @QueryParam("SAMLResponse") من Vert.x، الذي يفكّ ترميز النسبة المئوية لأسماء الاستعلامات، لذا ينهار SAML%52esponse إلى SAMLResponse وتفوز القيمة الأولى. تعيد verifyRedirectSignature بناء السلسلة الموقّعة من getQueryParameters(false) على الاستعلام الخام، حيث يبقى ذلك الاسم مفتاحًا مختلفًا.

المسارات الخاطئة المسجّلة سلفًا: التعامل مع #53354 على أنه هذا المتبقي (اسم مُرمَّز بنسبة مئوية، لا فاصلة منقوطة)؛ تتبّع استجابات ACS 302 في عميل المختبر وإسقاط AUTH_SESSION_ID؛ قراءة firstName/lastName الفارغين عند VERIFY_PROFILE على أنهما فشل (فالبريد الإلكتروني هو بالفعل NameID الوسيط)؛ صدفة عكسية. مسرح.

المختبر

Python 3.11+ مع cryptography. يتطلب Docker.

python3 keycloak-saml-redirect-param-split-Abraxas-Labs.py

أو:

cd lab
./run.sh

استهدف فقط http://127.0.0.1:18084. الصورة quay.io/keycloak/keycloak:26.8.1. يقوم المشغّل chdir إلى lab/ ثم ينفّذ run.sh. مزوّد الهوية في المختبر يعمل داخل العملية نفسها. لا يتواصل أبدًا مع مزوّد هوية حقيقي.

IOC image=quay.io/keycloak/keycloak:26.8.1 label-version=26.8.1
IOC serverinfo-version=26.8.1
IOC validate-signature=true want-assertions-signed=absent
IOC review-profile=DISABLED
IOC [email protected]
IOC victim-before=0
IOC [email protected]
IOC victim-after=1
SUCCESS KC-H04-SAML-REDIRECT kcs04b8n1

الإصلاح

تحقّق من مستند الاستعلام نفسه الذي يحلّله نقطة النهاية. فكّ ترميز النسبة المئوية لأسماء المعاملات قبل إعادة بناء التوقيع، أو ارفض أي استعلام يحتوي على أكثر من SAMLResponse واحد بعد فك الترميز. فعّل wantAssertionsSigned لوسطاء إعادة التوجيه، بما في ذلك مسار استيراد البيانات الوصفية.

المراجع

  • github.com/keycloak/keycloak وسم 26.8.1 (24ed1dadf3f246a555adb6d3d4a99e9b3003fb3b)
  • SAMLEndpoint.redirectBinding (SAMLEndpoint.java:182-183، :779-813، :896-914)
  • SamlProtocolUtils.verifyRedirectSignature (SamlProtocolUtils.java:216-249)
  • KeycloakUriInfo.getQueryParameters (KeycloakUriInfo.java:147-163)
  • قريب (ليس هذا المسار): المشكلة #53354 تقسيم الفاصلة المنقوطة
  • CWE-287 · CWE-347 · CWE-116

الترخيص

GNU Affero GPL v3.0. راجع LICENSE. للاستخدام في مختبر الاسترجاع المحلي فقط. دون أي ضمان.

مختبرات أبراكساس [email protected]

يُرجى نسب CVE إلى Abraxas Labs.

تنزيل الأداة