GCP - IAM, Principals & Org Unauthenticated Enum

Apoya a HackTricks

Iam & Principales de GCP

Para más información, consulta:

GCP - IAM, Principals & Org Policies Enum

¿Se utiliza el dominio en Workspace?

  1. Verificar registros DNS

Si tiene un registro 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 algo como include:_spf.google.com también aparece, confirma que (nota 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 usando el dominio, si se queja de 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 usando 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 el intento no muestra un error indicando que Google no tiene idea sobre esa cuenta, entonces está usando Workspace.

Enumerar correos electrónicos y cuentas de servicio

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

Ten en cuenta que para verificarlos, incluso si existen, sin otorgarles un permiso, 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.

Observa cómo cuando el correo electrónico 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.
Apoya a HackTricks

Last updated