GCP - IAM, Principals & Org Policies Enum
Cuentas de Servicio
Para obtener una introducción sobre qué es una cuenta de servicio, consulta:
GCP - Basic InformationEnumeración
Una cuenta de servicio siempre pertenece a un proyecto:
Usuarios y Grupos
Para obtener una introducción sobre cómo funcionan los Usuarios y Grupos en GCP, consulta:
GCP - Basic InformationEnumeración
Con los permisos serviceusage.services.enable
y serviceusage.services.use
es posible habilitar servicios en un proyecto y utilizarlos.
Ten en cuenta que por defecto, a los usuarios de Workspace se les otorga el rol de Creador de Proyectos, lo que les da acceso a crear nuevos proyectos. Cuando un usuario crea un proyecto, se le otorga el rol de owner
sobre el mismo. Por lo tanto, podría habilitar estos servicios en el proyecto para poder enumerar Workspace.
Sin embargo, ten en cuenta que también es necesario tener suficientes permisos en Workspace para poder llamar a estos APIs.
Si puedes habilitar el servicio admin
y si tu usuario tiene suficientes privilegios en Workspace, podrías enumerar todos los grupos y usuarios con las siguientes líneas.
Incluso si dice grupos de identidad
, también devuelve usuarios sin ningún grupo:
En los ejemplos anteriores, el parámetro --labels
es requerido, por lo que se usa un valor genérico (no es necesario si se utiliza la API directamente como PurplePanda hace aquí.
Incluso con el servicio de administrador habilitado, es posible que obtengas un error al enumerarlos porque tu usuario comprometido en el espacio de trabajo no tiene suficientes permisos:
IAM
Verifica esto para información básica sobre IAM.
Permisos por Defecto
Según la documentación: Cuando se crea un recurso de organización, todos los usuarios de tu dominio reciben los roles de Creador de Cuenta de Facturación y Creador de Proyecto de forma predeterminada. Estos roles predeterminados permiten a tus usuarios comenzar a usar Google Cloud de inmediato, pero no están destinados para su uso en la operación regular de los recursos de tu organización.
Estos roles otorgan los permisos:
billing.accounts.create
yresourcemanager.organizations.get
resourcemanager.organizations.get
yresourcemanager.projects.create
Además, cuando un usuario crea un proyecto, se le otorga automáticamente el rol de propietario de ese proyecto según la documentación. Por lo tanto, de forma predeterminada, un usuario podrá crear un proyecto y ejecutar cualquier servicio en él (¿mineros? ¿Enumeración de Workspace? ...)
El privilegio más alto en una Organización de GCP es el rol de Administrador de la Organización.
set-iam-policy vs add-iam-policy-binding
En la mayoría de los servicios podrás cambiar los permisos sobre un recurso utilizando el método add-iam-policy-binding
o set-iam-policy
. La principal diferencia es que add-iam-policy-binding
agrega un nuevo enlace de rol a la política IAM existente mientras que set-iam-policy
eliminará los permisos otorgados anteriormente y establecerá solo los indicados en el comando.
Enumeración
Enumeración de IAM de cloudasset
Existen diferentes formas de verificar todos los permisos de un usuario en diferentes recursos (como organizaciones, carpetas, proyectos...) utilizando este servicio.
El permiso
cloudasset.assets.searchAllIamPolicies
puede solicitar todas las políticas de IAM dentro de un recurso.
El permiso
cloudasset.assets.analyzeIamPolicy
puede solicitar todas las políticas de IAM de un principal dentro de un recurso.
El permiso
cloudasset.assets.searchAllResources
permite listar todos los recursos de una organización, carpeta o proyecto. Recursos relacionados con IAM (como roles) incluidos.
El permiso
cloudasset.assets.analyzeMove
puede ser útil para también recuperar políticas que afectan a un recurso como un proyecto
Supongo que el permiso
cloudasset.assets.queryIamPolicy
también podría dar acceso para encontrar permisos de principios.
Enumeración de permisos de testIamPermissions
Si no puedes acceder a la información de IAM utilizando los métodos anteriores y estás en un Equipo Rojo. Podrías utilizar la herramienta https://github.com/carlospolop/bf_my_gcp_perms para forzar tus permisos actuales.
Sin embargo, ten en cuenta que el servicio cloudresourcemanager.googleapis.com
debe estar habilitado.
Escalada de privilegios
En la siguiente página puedes verificar cómo abusar de los permisos de IAM para escalar privilegios:
GCP - IAM PrivescEnumeración sin autenticación
GCP - IAM, Principals & Org Unauthenticated EnumPost Explotación
GCP - IAM Post ExploitationPersistencia
Si tienes altos privilegios podrías:
Crear nuevos SAs (o usuarios si estás en Workspace)
Dar a los principios controlados por ti más permisos
Dar más privilegios a SAs vulnerables (SSRF en vm, función Cloud vulnerable...)
...
Políticas de la Organización
Para obtener una introducción sobre qué son las Políticas de la Organización, consulta:
GCP - Basic InformationLas políticas de IAM indican los permisos que los principios tienen sobre los recursos a través de roles, los cuales tienen permisos granulares asignados. Las políticas de la organización restringen cómo se pueden utilizar esos servicios o qué funciones están deshabilitadas. Esto ayuda a mejorar el principio de privilegio mínimo de cada recurso en el entorno de GCP.
Escalada de privilegios
En la siguiente página puedes verificar cómo abusar de los permisos de las políticas de la organización para escalar privilegios:
GCP - Orgpolicy PrivescLast updated