GCP - IAM, Principals & Org Unauthenticated Enum

Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge HackTricks AWS)!

Autres façons de soutenir HackTricks :

Iam & Principaux GCP

Pour plus d'informations, consultez :

pageGCP - IAM, Principals & Org Policies Enum

Le domaine est-il utilisé dans Workspace?

  1. Vérifier les enregistrements DNS

S'il a un enregistrement google-site-verification, il est probable qu'il utilise (ou a utilisé) 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 quelque chose comme include:_spf.google.com apparaît également, cela le confirme (notez que s'il n'apparaît pas, cela ne le nie pas car un domaine peut être dans Workspace sans utiliser gmail comme fournisseur de messagerie).

  1. Essayez de configurer un Workspace avec ce domaine

Une autre option est d'essayer de configurer un Workspace en utilisant le domaine, si cela se plaint que le domaine est déjà utilisé (comme sur l'image), vous savez qu'il est déjà utilisé !

Pour essayer de configurer un domaine Workspace, suivez : https://workspace.google.com/business/signup/welcome

  1. Essayez de récupérer le mot de passe d'un e-mail utilisant ce domaine

Si vous connaissez une adresse e-mail valide utilisée dans ce domaine (comme : admin@email.com ou info@email.com), vous pouvez essayer de récupérer le compte sur https://accounts.google.com/signin/v2/recoveryidentifier, et si l'essai ne montre pas d'erreur indiquant que Google ne sait rien de ce compte, alors il utilise Workspace.

Énumérer les e-mails et les comptes de service

Il est possible d'énumérer les e-mails valides d'un domaine Workspace et les e-mails de SA en essayant de leur attribuer des autorisations et en vérifiant les messages d'erreur. Pour cela, vous avez juste besoin d'avoir les autorisations pour attribuer des autorisations à un projet (qui peut vous appartenir).

Notez que pour les vérifier, même s'ils existent, mais sans leur accorder d'autorisation, vous pouvez utiliser le type serviceAccount quand c'est un utilisateur et utilisateur quand c'est 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.

Notez comment lorsque l'e-mail de l'utilisateur était valide, le message d'erreur indiquait que le type n'est pas correct, nous avons donc réussi à découvrir que l'e-mail support@hacktricks.xyz existe sans lui accorder de privilèges.

Vous pouvez faire de même avec les Comptes de service en utilisant le type user: au lieu 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.
Apprenez le piratage AWS de zéro à héros avec htARTE (Expert Red Team AWS de HackTricks)!

D'autres façons de soutenir HackTricks:

Dernière mise à jour