GCP - IAM, Principals & Org Policies Enum
Account del Servizio
Per una introduzione su cosa sia un account del servizio, controlla:
pageGCP - Basic InformationEnumerazione
Un account del servizio appartiene sempre a un progetto:
Utenti e Gruppi
Per una panoramica su come funzionano Utenti e Gruppi in GCP, controlla:
pageGCP - 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 concede loro l'accesso per 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, è importante notare che è 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 si parla di gruppi di identità
, restituisce anche utenti senza gruppi:
Nei precedenti esempi il parametro --labels
è richiesto, quindi viene utilizzato un valore generico (non è richiesto se si utilizza l'API direttamente come fa PurplePanda qui.
Anche con il servizio admin abilitato, è possibile che si verifichi un errore nell'enumerarli perché l'utente del tuo spazio di lavoro compromesso 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 Billing Account Creator e Project Creator per impostazione predefinita. Questi ruoli predefiniti consentono ai tuoi utenti di iniziare a utilizzare Google Cloud immediatamente, 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 sarà in grado di creare un progetto ed eseguire qualsiasi servizio su di esso (minatori? Enumerazione di Workspace? ...)
Il privilegio più elevato in un'Organizzazione GCP è il ruolo di Amministratore dell'Organizzazione.
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 ruolo di associazione 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 in 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.
Il permesso
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 consentire di trovare i permessi dei principali
Enumerazione delle autorizzazioni testIamPermissions
Se non è possibile accedere alle informazioni IAM utilizzando i metodi precedenti e si è in un Red Team. Si potrebbe utilizzare lo strumento https://github.com/carlospolop/bf_my_gcp_perms per forzare le proprie 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:
pageGCP - IAM PrivescEnumerazione non autenticata
pageGCP - IAM, Principals & Org Unauthenticated EnumPost Esploitation
pageGCP - IAM Post ExploitationPersistenza
Se si hanno privilegi elevati si potrebbe:
Creare nuovi SA (o utenti se in Workspace)
Dare ai principali controllati da sé stessi più autorizzazioni
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:
pageGCP - 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.
Privilegi di Escalation
Nella seguente pagina puoi verificare come abusare dei permessi delle policy dell'organizzazione per ottenere privilegi di escalation:
pageGCP - Orgpolicy PrivescLast updated