Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
keycloak-manage-users-composite — Keycloak 26.8.1 Moyen 6.6 Résidu d'authentification distant authentifié. Un administrateur de help-desk disposant de manage-users peut s'attribuer un composite préconstruit de manage-realm puis lire le document complet du realm. Nécessite que ce composite existe déjà. PoC en boucle locale. | Kitploit
Outils/GitHubGitHub/abraxas/keycloak-manage-users-composite
Authentification et AutorisationEscalade de PrivilègesAnalyse des VulnérabilitésExploitationExploitation d'Applications WebGestion des Identités et des Accès (IAM)Labs et Pratique

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
GitHub
abraxas/keycloak-manage-users-composite

keycloak-manage-users-composite

Voir le dépôt
2il y a 1 jourPas encore vérifié

À propos

Keycloak 26.8.1 Moyen 6.6 Résidu d'authentification distant authentifié. Un administrateur de help-desk disposant de manage-users peut s'attribuer un composite préconstruit de manage-realm puis lire le document complet du realm. Nécessite que ce composite existe déjà. PoC en boucle locale.

Partager

Abraxas Labs - keycloak-manage-users-composite

keycloak-manage-users-composite

Un compte de help-desk censé uniquement réinitialiser des mots de passe et créer des utilisateurs peut s'auto-promouvoir. Une personne disposant du rôle manage-users de Keycloak trouve un intitulé de poste résiduel dans le realm (un rôle composite qui inclut discrètement manage-realm), l'épingle sur son propre compte, puis lit le document complet du realm qui lui était caché une requête plus tôt. Elle ne peut pas créer ce composite. Un véritable administrateur de realm doit l'avoir construit au préalable. Il s'agit du pendant « role-mapping » de CVE-2026-94000, qui fermait la même astuce sur le join de groupe.

Classe : Auth leftover Portée : Distant (authentifié manage-users)

Keycloak 26.8.1 (24ed1dad) - Red Hat

IDpas encore de CVE
ClasseAuth leftover
PortéeDistant (Admin REST authentifié ; nécessite manage-users plus un composite préconstruit)
CWECWE-269 / CWE-266
CVSSMoyen : 6.6 CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:U/C:H/I:H/A:H
ProduitKeycloak
Affecté26.8.1 (24ed1dadf3f246a555adb6d3d4a99e9b3003fb3b) ; image quay.io/keycloak/keycloak:26.8.1
Authadmin délégué avec realm-management / manage-users. FGAP v2 est l'évaluateur par défaut.
LicenceGNU Affero GPL v3.0
Lab127.0.0.1:18082 uniquement

Ce qu'un attaquant peut faire

Nécessite un compte Keycloak existant qui détient déjà manage-users, ainsi qu'un rôle de realm ou de client dont le nom propre n'est pas un rôle admin et dont les composites incluent manage-realm ou realm-admin. Ne nécessite pas manage-realm sur le token. Ne peut pas créer ce composite. L'attribution directe d'un rôle nommé manage-realm / realm-admin reste refusée.

PrivilègeMéthode / sinkRecon / intégrité / disponibilitéProuvé en lab ou déduit
Mapper un composite non-admin sur soi-mêmePOST /admin/realms/{realm}/users/{id}/role-mappings/realm avec l'id et le nom du compositeIntégrité (attribution de rôle)Prouvé en lab. HTTP 204. Témoin kcr02m7q4
Même attribution sur un rôle de clientPOST /admin/realms/{realm}/users/{id}/role-mappings/clients/{client}IntégritéSource. Même canMapRole à ClientRoleMappingsResource.java:184
Lire le document complet du realm avec le même token d'accèsGET /admin/realms/{realm} après le mappingReconProuvé en lab. Avant : HTTP 200 partiel (pas d'attributs, pas d'accessTokenLifespan). Après : HTTP 200 complet, attribut planté présent
Utiliser manage-realm imbriqué sur les appels admin ultérieursUserAdapter.hasRole parcourt les composites ; KeycloakIdentity.hasClientRole fait confiance au modèle utilisateurIntégritéDéduit de la source. L'oracle du lab est le GET complet du realm
realm-admin imbriqué lorsque c'est le compositeMême parcoursIntégritéDéduit. Le lab a utilisé manage-realm
Contrôle négatifUn second utilisateur manage-users qui ne mappe pas le compositen/aProuvé en lab. Le GET de contrôle reste partiel

Reste fermé sur ce leftover

AxeMéthode / sinkPourquoi c'est fermé
IntégritéMapping direct de manage-realm / realm-admin / autre AdminRoles.ALL_ROLESRolePermissionsV2.isRealmAdminRole refuse toujours
IntégritéCréer le composite qui inclut un rôle admincanMapComposite appelle toujours checkAdminRoles
IntégritéRejoindre un groupe dont le composite inclut un rôle adminCVE-2026-94000 parcourt les composites dans GroupUtils.checkAdminGroupRoles
IntégritéCréer un utilisateur déjà dans ce groupeMême parcours sur UsersResource.createUser
ReconAdmin REST anonymeNécessite un token manage-users
IntégritéRCE hôte, realm-admin créant realm-adminHors classe

GET /admin/realms/{realm} ne renvoie pas HTTP 403 pour manage-users. Ce rôle est lui-même un rôle d'administration, donc le serveur renvoie 200 avec un document partiel. Ce qui reste correspond aux champs qui n'apparaissent qu'après le mappage du composite.

Comment je l'ai trouvé

J'ai épinglé Keycloak 26.8.1. Les permissions d'administration à granularité fine v2 sont activées par défaut. RolePermissionsV2.canMapRole renvoie true pour chaque rôle qui échoue à isRealmAdminRole et ne parcourt jamais les composites. Le correctif de CVE-2026-94000 ne les parcourt que sur le chemin des groupes.

Fausses pistes déjà consignées : traiter isRealmAdminRole de la v1 comme la vérification active (la v2 la remplace) ; s'attendre à un HTTP 403 sur le GET du realm avant l'octroi (le résultat réel est un 200 partiel) ; re-déposer CVE-2026-94000 (jointure de groupe, déjà clos) ; un reverse shell. Du théâtre.

Lab

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

ou :

cd lab
./run.sh

Ciblez uniquement http://127.0.0.1:18082. Image quay.io/keycloak/keycloak:26.8.1. Docker requis. Le lanceur fait un chdir dans lab/ et exécute 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

Le correctif

Parcourir les composites dans RolePermissionsV2.canMapRole de la même manière que GroupUtils.checkAdminGroupRoles le fait déjà pour l'adhésion à un groupe. Un rôle qui inclut manage-realm ou realm-admin est un rôle d'administrateur même lorsque son propre nom ne l'est pas.

Références

  • github.com/keycloak/keycloak tag 26.8.1 (24ed1dadf3f246a555adb6d3d4a99e9b3003fb3b)
  • RolePermissionsV2.canMapRole (RolePermissionsV2.java:59-61)
  • RoleMapperResource.addRealmRoleMappings (RoleMapperResource.java:289-290)
  • À proximité (pas ce chemin) : parcours des composites lors de l'adhésion à un groupe CVE-2026-94000
  • CWE-269 · CWE-266

Licence

GNU Affero GPL v3.0. Voir LICENSE. Laboratoire en boucle locale uniquement. Aucune garantie.

Abraxas Labs [email protected]

Veuillez créditer la CVE à Abraxas Labs.

Télécharger l’outil