Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
keycloak-manage-users-composite — Keycloak 26.8.1 Medio 6.6 Residuo di autenticazione remota autenticata. Un amministratore dell'help desk con manage-users può assegnare a se stesso un composito predefinito di manage-realm e poi leggere l'intero documento del realm. Richiede che quel composito esista già. PoC su loopback. | Kitploit
Strumenti/GitHubGitHub/abraxas/keycloak-manage-users-composite
Autenticazione e AutorizzazioneEscalation di PrivilegiAnalisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebGestione Identità e Accessi (IAM)Lab e Pratica

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
GitHub
abraxas/keycloak-manage-users-composite

keycloak-manage-users-composite

Vedi Repository
21 giorno faNon ancora revisionato

Informazioni

Keycloak 26.8.1 Medio 6.6 Residuo di autenticazione remota autenticata. Un amministratore dell'help desk con manage-users può assegnare a se stesso un composito predefinito di manage-realm e poi leggere l'intero documento del realm. Richiede che quel composito esista già. PoC su loopback.

Condividi

Abraxas Labs - keycloak-manage-users-composite

keycloak-manage-users-composite

Un account help-desk che dovrebbe solo reimpostare password e creare utenti può elevare i propri privilegi. Chi possiede il ruolo manage-users di Keycloak trova nel realm un titolo di lavoro lasciato in eredità (un ruolo composito che include silenziosamente manage-realm), assegna quel titolo al proprio account e poi legge l'intero documento del realm che gli era stato nascosto una richiesta prima. Non può creare quel composito. Un vero amministratore del realm deve averlo costruito prima. Questo è il fratello del role-mapping di CVE-2026-94000, che ha chiuso lo stesso trucco sull'adesione ai gruppi.

Classe: Residuo di autenticazione Raggiungibilità: Remota (manage-users autenticato)

Keycloak 26.8.1 (24ed1dad) - Red Hat

IDnessuna CVE al momento
ClasseResiduo di autenticazione
RaggiungibilitàRemota (Admin REST autenticato; richiede manage-users più un composito preesistente)
CWECWE-269 / CWE-266
CVSSMedio: 6.6 CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:U/C:H/I:H/A:H
ProdottoKeycloak
Affetto26.8.1 (24ed1dadf3f246a555adb6d3d4a99e9b3003fb3b); immagine quay.io/keycloak/keycloak:26.8.1
Authadmin delegato con realm-management / manage-users. FGAP v2 è il valutatore predefinito.
LicenzaGNU Affero GPL v3.0
Labsolo 127.0.0.1:18082

Cosa può fare un attaccante

Richiede un account Keycloak esistente che possieda già manage-users, e un ruolo di realm o di client il cui nome non sia un ruolo amministrativo e i cui compositi includano manage-realm o realm-admin. Non richiede manage-realm sul token. Non può creare quel composito. L'assegnazione diretta di un ruolo chiamato manage-realm / realm-admin viene ancora rifiutata.

PrivilegioMetodo / sinkRicognizione / integrità / disponibilitàProvato in lab o dedotto
Mappare un composito non amministrativo su se stessiPOST /admin/realms/{realm}/users/{id}/role-mappings/realm con l'id e il nome del compositoIntegrità (concessione di ruolo)Provato in lab. HTTP 204. Witness kcr02m7q4
Stessa concessione su un ruolo di clientPOST /admin/realms/{realm}/users/{id}/role-mappings/clients/{client}IntegritàSorgente. Stesso canMapRole in ClientRoleMappingsResource.java:184
Leggere l'intero documento del realm con lo stesso token di accessoGET /admin/realms/{realm} dopo la mappaturaRicognizioneProvato in lab. Prima: HTTP 200 parziale (nessun attributo, nessun accessTokenLifespan). Dopo: HTTP 200 completo, attributo impiantato presente
Usare manage-realm annidato nelle successive chiamate adminUserAdapter.hasRole percorre i compositi; KeycloakIdentity.hasClientRole si fida del modello utenteIntegritàDedotto dal sorgente. L'oracolo del lab è il GET completo del realm
realm-admin annidato quando è quello il compositoStessa percorrenzaIntegritàDedotto. Il lab ha usato manage-realm
Controllo negativoUn secondo utente manage-users che non mappa il compositon/dProvato in lab. Il GET di controllo resta parziale

Resta chiuso su questo residuo

AsseMetodo / sinkPerché è chiuso
IntegritàMappatura diretta di manage-realm / realm-admin / altri AdminRoles.ALL_ROLESRolePermissionsV2.isRealmAdminRole rifiuta ancora
IntegritàCreare il composito che include un ruolo amministrativocanMapComposite chiama ancora checkAdminRoles
IntegritàAderire a un gruppo il cui composito include un ruolo amministrativoCVE-2026-94000 percorre i compositi in GroupUtils.checkAdminGroupRoles
IntegritàCreare un utente già in quel gruppoStessa percorrenza su UsersResource.createUser
RicognizioneAdmin REST anonimoRichiede un token manage-users
IntegritàRCE sull'host, realm-admin che crea realm-adminFuori classe

GET /admin/realms/{realm} non restituisce HTTP 403 per manage-users. Quel ruolo è esso stesso un ruolo admin, quindi il server restituisce 200 con un documento parziale. Ciò che rimane sono i campi che compaiono solo dopo che il composite è mappato.

Come l'ho trovato

Ho fissato Keycloak 26.8.1. Le autorizzazioni admin a grana fine v2 sono attive per impostazione predefinita. RolePermissionsV2.canMapRole restituisce true per ogni ruolo che fallisce isRealmAdminRole e non attraversa mai i composite. La correzione di CVE-2026-94000 li attraversa solo sul percorso dei gruppi.

Vicoli ciechi già registrati: trattare isRealmAdminRole v1 come il controllo effettivo (v2 lo sovrascrive); aspettarsi HTTP 403 sulla GET del realm prima della concessione (il risultato effettivo è un 200 parziale); ri-segnalare CVE-2026-94000 (join di gruppo, già chiuso); una reverse shell. Teatro.

Lab

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

o:

cd lab
./run.sh

Prendi di mira solo http://127.0.0.1:18082. Immagine quay.io/keycloak/keycloak:26.8.1. Docker richiesto. Il launcher esegue chdir in lab/ ed esegue 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

La correzione

Attraversare i compositi in RolePermissionsV2.canMapRole nello stesso modo in cui GroupUtils.checkAdminGroupRoles già fa per l'adesione al gruppo. Un ruolo che include manage-realm o realm-admin è un ruolo amministratore anche quando il suo nome non lo è.

Riferimenti

  • github.com/keycloak/keycloak tag 26.8.1 (24ed1dadf3f246a555adb6d3d4a99e9b3003fb3b)
  • RolePermissionsV2.canMapRole (RolePermissionsV2.java:59-61)
  • RoleMapperResource.addRealmRoleMappings (RoleMapperResource.java:289-290)
  • Correlato (non questo percorso): CVE-2026-94000 attraversamento dei compositi per l'adesione al gruppo
  • CWE-269 · CWE-266

Licenza

GNU Affero GPL v3.0. Vedi LICENSE. Solo laboratorio loopback. Nessuna garanzia.

Abraxas Labs [email protected]

Si prega di attribuire la CVE ad Abraxas Labs.

Scarica lo strumento