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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
keycloak-manage-users-composite — Keycloak 26.8.1 متوسط 6.6 مصادقة متبقية عن بُعد بعد المصادقة. يمكن لمسؤول مكتب المساعدة الذي يملك صلاحية manage-users أن يثبّت على نفسه مركّبًا مُعدًّا مسبقًا من manage-realm ثم يقرأ مستند النطاق (realm) الكامل. يتطلب أن يكون هذا المركّب موجودًا بالفعل. إثبات مفهوم (PoC) عبر الاسترجاع المحلي (loopback). | Kitploit
أدوات/GitHubGitHub/abraxas/keycloak-manage-users-composite
المصادقة والترخيصتصعيد الامتيازاتتحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبإدارة الهوية والوصول (IAM)مختبرات وتدريب عملي
GitHub

الأكثر شعبية

عرض الكل →

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

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

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

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

حول

abraxas/keycloak-manage-users-composite

keycloak-manage-users-composite

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

Keycloak 26.8.1 متوسط 6.6 مصادقة متبقية عن بُعد بعد المصادقة. يمكن لمسؤول مكتب المساعدة الذي يملك صلاحية manage-users أن يثبّت على نفسه مركّبًا مُعدًّا مسبقًا من manage-realm ثم يقرأ مستند النطاق (realm) الكامل. يتطلب أن يكون هذا المركّب موجودًا بالفعل. إثبات مفهوم (PoC) عبر الاسترجاع المحلي (loopback).

مشاركة

Abraxas Labs - keycloak-manage-users-composite

keycloak-manage-users-composite

حساب مكتب مساعدة يُفترض أنه مخصص فقط لإعادة تعيين كلمات المرور وإنشاء المستخدمين يمكنه ترقية نفسه. يجد شخص يمتلك دور manage-users في Keycloak مسمّى وظيفي متبقٍّ في النطاق (دور مركّب يتضمن بهدوء manage-realm)، ويثبّت ذلك المسمّى على حسابه الخاص، ثم يقرأ وثيقة النطاق الكاملة التي كانت مخفية عنه في طلب سابق. لا يمكنه إنشاء ذلك الدور المركّب. يجب أن يكون مسؤول نطاق حقيقي قد بناه أولاً. هذا هو الشقيق الخاص بتعيين الأدوار لـ CVE-2026-94000، الذي أغلق الحيلة نفسها عند الانضمام إلى المجموعات.

الفئة: بقايا مصادقة الوصول: عن بُعد (manage-users مصادَق عليه)

Keycloak 26.8.1 (24ed1dad) - Red Hat

المعرّفلا يوجد CVE بعد
الفئةبقايا مصادقة
الوصولعن بُعد (Admin REST مصادَق عليه؛ يتطلب manage-users بالإضافة إلى دور مركّب مبني مسبقًا)
CWECWE-269 / CWE-266
CVSSمتوسط: 6.6 CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:U/C:H/I:H/A:H
المنتجKeycloak
المتأثر26.8.1 (24ed1dadf3f246a555adb6d3d4a99e9b3003fb3b)؛ الصورة quay.io/keycloak/keycloak:26.8.1
المصادقةمسؤول مفوَّض يمتلك realm-management / manage-users. FGAP v2 هو المُقيِّم الافتراضي.
الترخيصGNU Affero GPL v3.0
المختبر127.0.0.1:18082 فقط

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

يحتاج إلى حساب Keycloak موجود يمتلك بالفعل manage-users، وإلى دور نطاق أو دور عميل لا يكون اسمه نفسه دور مسؤول وتتضمن أدواره المركّبة manage-realm أو realm-admin. لا يحتاج إلى manage-realm على الرمز المميز. لا يمكنه إنشاء ذلك الدور المركّب. لا يزال التعيين المباشر لدور باسم manage-realm / realm-admin مرفوضًا.

الصلاحيةالطريقة / نقطة الوصولالاستطلاع / السلامة / التوافرمُثبت مختبريًا أو مُستنتج
تعيين دور مركّب غير إداري على الذاتPOST /admin/realms/{realm}/users/{id}/role-mappings/realm مع معرّف الدور المركّب واسمهالسلامة (منح دور)مُثبت مختبريًا. HTTP 204. الشاهد kcr02m7q4
المنح نفسه على دور عميلPOST /admin/realms/{realm}/users/{id}/role-mappings/clients/{client}السلامةالمصدر. نفس canMapRole في ClientRoleMappingsResource.java:184
قراءة وثيقة النطاق الكاملة على الرمز المميز نفسهGET /admin/realms/{realm} بعد التعيينالاستطلاعمُثبت مختبريًا. قبل: HTTP 200 جزئي (بدون سمات، بدون accessTokenLifespan). بعد: HTTP 200 كامل، السمة المزروعة موجودة
استخدام manage-realm المتداخل في استدعاءات إدارية لاحقةUserAdapter.hasRole يتتبع الأدوار المركّبة؛ KeycloakIdentity.hasClientRole يثق بنموذج المستخدمالسلامةمُستنتج من المصدر. معيار المختبر هو GET الكامل للنطاق
realm-admin المتداخل عندما يكون هو الدور المركّبنفس التتبعالسلامةمُستنتج. استخدم المختبر manage-realm
الضابط السلبيمستخدم ثانٍ يمتلك manage-users ولا يعيّن الدور المركّبلا ينطبقمُثبت مختبريًا. يبقى GET الخاص بالضابط جزئيًا

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

المحورالطريقة / نقطة الوصولسبب الإغلاق
السلامةالتعيين المباشر لـ manage-realm / realm-admin / أدوار AdminRoles.ALL_ROLES الأخرىلا يزال RolePermissionsV2.isRealmAdminRole يرفض
السلامةإنشاء الدور المركّب الذي يتضمن دور مسؤوللا يزال canMapComposite يستدعي checkAdminRoles
السلامةالانضمام إلى مجموعة يتضمن دورها المركّب دور مسؤولCVE-2026-94000 يتتبع الأدوار المركّبة في GroupUtils.checkAdminGroupRoles
السلامةإنشاء مستخدم موجود بالفعل في تلك المجموعةنفس التتبع في UsersResource.createUser
الاستطلاعAdmin REST مجهوليتطلب رمزًا مميزًا لـ manage-users
السلامةRCE على المضيف، إنشاء realm-admin لـ realm-adminخارج الفئة

GET /admin/realms/{realm} ليس HTTP 403 بالنسبة لـ manage-users. هذا الدور هو نفسه دور مسؤول، لذا يُرجع الخادم 200 مع مستند جزئي. المتبقي هو الحقول التي تظهر فقط بعد تعيين المركّب.

كيف وجدته

ثبّتُ Keycloak 26.8.1. أذونات المسؤول الدقيقة v2 مفعّلة افتراضيًا. تُرجع RolePermissionsV2.canMapRole القيمة true لكل دور يفشل في isRealmAdminRole ولا يجتاز المركّبات أبدًا. إصلاح CVE-2026-94000 يجتازها فقط في مسار المجموعة.

المنعطفات الخاطئة المسجّلة مسبقًا: التعامل مع v1 isRealmAdminRole كفحص حي (v2 تتجاوزه)؛ توقّع HTTP 403 على GET الخاص بالـ realm قبل المنح (النتيجة الحية هي 200 جزئي)؛ إعادة تقديم CVE-2026-94000 (انضمام المجموعة، مغلق بالفعل)؛ reverse shell. مسرح.

المختبر

python3 keycloak-manage-users-composite-Abraxas-Labs.py

أو:

cd lab
./run.sh

استهدف فقط http://127.0.0.1:18082. الصورة quay.io/keycloak/keycloak:26.8.1. يتطلب Docker. يقوم المشغّل 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 admin-composite=manage-realm
IOC limited-direct=manage-users
IOC control-direct=manage-users
IOC before-status=200 witness=0 full=0
IOC available=sneaky-composite
IOC post-status=204
IOC after-get attempt=1 status=200 witness=1 full=1
IOC control-status=200 witness=0 full=0 same-token=1
SUCCESS KC-H02-ROLEMAP kcr02m7q4

الإصلاح

تجاوُز المركّبات (composites) في RolePermissionsV2.canMapRole بالطريقة التي يتعامل بها GroupUtils.checkAdminGroupRoles بالفعل مع الانضمام إلى المجموعة. الدور الذي يتضمن manage-realm أو realm-admin هو دور مسؤول حتى لو لم يكن اسمه نفسه كذلك.

المراجع

  • github.com/keycloak/keycloak وسم 26.8.1 (24ed1dadf3f246a555adb6d3d4a99e9b3003fb3b)
  • RolePermissionsV2.canMapRole (RolePermissionsV2.java:59-61)
  • RoleMapperResource.addRealmRoleMappings (RoleMapperResource.java:289-290)
  • قريب (ليس هذا المسار): CVE-2026-94000 تجاوُز مركّبات الانضمام إلى المجموعة
  • CWE-269 · CWE-266

الترخيص

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

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

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

تنزيل الأداة