GCP - IAM, Principals & Org Policies Enum
Account del Servizio
Per una introduzione su cosa sia un account del servizio, controlla:
GCP - Basic InformationEnumerazione
Un account del servizio appartiene sempre a un progetto:
Utenti e Gruppi
Per una introduzione su come funzionano Utenti e Gruppi in GCP controlla:
GCP - Basic InformationEnumerazione
Con i permessi serviceusage.services.enable
e serviceusage.services.use
è possibile abilitare servizi in un progetto e utilizzarli.
Nota che di default, agli utenti di Workspace viene assegnato il ruolo Project Creator, che dà loro accesso a creare nuovi progetti. Quando un utente crea un progetto, gli viene assegnato il ruolo owner
su di esso. Quindi, potrebbe abilitare questi servizi sul progetto per poter enumerare Workspace.
Tuttavia, nota che è anche necessario avere abbastanza permessi in Workspace per poter chiamare queste API.
Se puoi abilitare il servizio admin
e se il tuo utente ha abbastanza privilegi in workspace, potresti enumerare tutti i gruppi e utenti con le seguenti righe.
Anche se dice identity groups
, restituisce anche utenti senza gruppi:
Nei precedenti esempi il parametro --labels
è richiesto, quindi viene utilizzato un valore generico (non è richiesto se si utilizza direttamente l'API come fa PurplePanda qui.
Anche con il servizio di amministrazione abilitato, è possibile che si verifichi un errore durante l'enumerazione perché l'utente compromesso dello spazio di lavoro non ha abbastanza autorizzazioni:
IAM
Controlla questo per informazioni di base su IAM.
Autorizzazioni predefinite
Dai documenti: Quando viene creato un'organizzazione, tutti gli utenti nel tuo dominio ricevono automaticamente i ruoli Creatore di account di fatturazione e Creatore di progetti per impostazione predefinita. Questi ruoli predefiniti consentono agli utenti di iniziare immediatamente a utilizzare Google Cloud, ma non sono destinati all'uso regolare delle risorse dell'organizzazione.
Questi ruoli concedono le autorizzazioni:
billing.accounts.create
eresourcemanager.organizations.get
resourcemanager.organizations.get
eresourcemanager.projects.create
Inoltre, quando un utente crea un progetto, viene automaticamente assegnato come proprietario di quel progetto secondo i documenti. Pertanto, per impostazione predefinita, un utente potrà creare un progetto ed eseguire qualsiasi servizio su di esso (minatori? Enumerazione dello spazio di lavoro? ...)
Il ruolo di Amministratore dell'organizzazione è il privilegio più elevato in un'organizzazione GCP.
set-iam-policy vs add-iam-policy-binding
Nella maggior parte dei servizi sarà possibile modificare le autorizzazioni su una risorsa utilizzando il metodo add-iam-policy-binding
o set-iam-policy
. La differenza principale è che add-iam-policy-binding
aggiunge un nuovo binding di ruolo alla policy IAM esistente mentre set-iam-policy
eliminerà le autorizzazioni precedentemente concesse e imposterà solo quelle indicate nel comando.
Enumerazione
Enumerazione IAM di cloudasset
Ci sono diversi modi per verificare tutti i permessi di un utente su risorse diverse (come organizzazioni, cartelle, progetti...) utilizzando questo servizio.
Il permesso
cloudasset.assets.searchAllIamPolicies
può richiedere tutte le policy iam all'interno di una risorsa.
Il permesso
cloudasset.assets.analyzeIamPolicy
può richiedere tutte le policy iam di un principale all'interno di una risorsa.
Il permesso
cloudasset.assets.searchAllResources
consente di elencare tutte le risorse di un'organizzazione, cartella o progetto. Risorse correlate a IAM (come ruoli) incluse.
L'autorizzazione
cloudasset.assets.analyzeMove
potrebbe essere utile anche per recuperare le policy che influenzano una risorsa come un progetto
Suppongo che il permesso
cloudasset.assets.queryIamPolicy
potrebbe anche dare accesso per trovare i permessi dei principali.
Enumerazione delle autorizzazioni di testIamPermissions
Se non è possibile accedere alle informazioni IAM utilizzando i metodi precedenti e ti trovi in un Red Team. Potresti utilizzare lo strumento https://github.com/carlospolop/bf_my_gcp_perms per forzare le tue autorizzazioni attuali.
Tuttavia, nota che il servizio cloudresourcemanager.googleapis.com
deve essere abilitato.
Privesc
Nella pagina seguente puoi verificare come abusare delle autorizzazioni IAM per elevare i privilegi:
GCP - IAM PrivescEnumerazione non autenticata
GCP - IAM, Principals & Org Unauthenticated EnumPost Esploitation
GCP - IAM Post ExploitationPersistenza
Se hai privilegi elevati potresti:
Creare nuovi SA (o utenti se sei in Workspace)
Dare più autorizzazioni ai principali controllati da te
Concedere più privilegi a SA vulnerabili (SSRF in vm, Cloud Function vulnerabile...)
...
Politiche dell'Organizzazione
Per una introduzione su cosa sono le Politiche dell'Organizzazione controlla:
GCP - Basic InformationLe politiche IAM indicano le autorizzazioni che i principali hanno sui servizi tramite ruoli, ai quali sono assegnate autorizzazioni granulari. Le politiche dell'organizzazione limitano come quei servizi possono essere utilizzati o quali funzionalità sono disabilitate. Questo aiuta a migliorare il principio del privilegio minimo di ciascuna risorsa nell'ambiente GCP.
Escalazione dei privilegi
Nella seguente pagina puoi verificare come abusare dei permessi delle policy dell'organizzazione per escalare i privilegi:
GCP - Orgpolicy PrivescLast updated