GCP - IAM, Principals & Org Unauthenticated Enum

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks

Iam & GCP Principals

Für weitere Informationen siehe:

GCP - IAM, Principals & Org Policies Enum

Wird die Domain in Workspace verwendet?

  1. Überprüfen Sie die DNS-Einträge

Wenn es einen google-site-verification Eintrag hat, ist es wahrscheinlich, dass es (oder es war) Workspace verwendet:

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"

Wenn etwas wie include:_spf.google.com erscheint, bestätigt das dies (beachten Sie, dass, wenn es nicht erscheint, es dies nicht ausschließt, da eine Domain in Workspace sein kann, ohne Gmail als E-Mail-Anbieter zu verwenden).

  1. Versuchen Sie, ein Workspace mit dieser Domain einzurichten

Eine weitere Möglichkeit besteht darin, zu versuchen, ein Workspace mit der Domain einzurichten. Wenn es beschwert, dass die Domain bereits verwendet wird (wie im Bild), wissen Sie, dass sie bereits verwendet wird!

Um eine Workspace-Domain einzurichten, folgen Sie: https://workspace.google.com/business/signup/welcome

  1. Versuchen Sie, das Passwort einer E-Mail mit dieser Domain wiederherzustellen

Wenn Sie eine gültige E-Mail-Adresse kennen, die in dieser Domain verwendet wird (wie: admin@email.com oder info@email.com), können Sie versuchen, das Konto wiederherzustellen unter https://accounts.google.com/signin/v2/recoveryidentifier. Wenn der Versuch keinen Fehler anzeigt, der darauf hinweist, dass Google keine Ahnung von diesem Konto hat, dann wird Workspace verwendet.

E-Mails und Dienstkonten auflisten

Es ist möglich, gültige E-Mails einer Workspace-Domain und SA-E-Mails aufzulisten, indem Sie versuchen, ihnen Berechtigungen zuzuweisen und die Fehlermeldungen zu überprüfen. Dazu müssen Sie nur die Berechtigung haben, Berechtigungen für ein Projekt zuzuweisen (das nur Ihnen gehören kann).

Beachten Sie, dass Sie, um sie zu überprüfen, aber selbst wenn sie existieren, ihnen keine Berechtigung gewähren können, den Typ serviceAccount verwenden, wenn es sich um einen user handelt, und user, wenn es sich um ein SA handelt:

# 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.

Eine schnellere Möglichkeit, Servicekonten in bekannten Projekten aufzulisten, besteht darin, einfach zu versuchen, auf die URL zuzugreifen: https://iam.googleapis.com/v1/projects/<project-id>/serviceAccounts/<sa-email> Zum Beispiel: https://iam.googleapis.com/v1/projects/gcp-labs-3uis1xlx/serviceAccounts/appengine-lab-1-tarsget@gcp-labs-3uis1xlx.iam.gserviceaccount.com

Wenn die Antwort 403 ist, bedeutet das, dass das SA existiert. Wenn die Antwort 404 ist, bedeutet das, dass es nicht existiert:

// Exists
{
"error": {
"code": 403,
"message": "Method doesn't allow unregistered callers (callers without established identity). Please use API Key or other form of API consumer identity to call this API.",
"status": "PERMISSION_DENIED"
}
}

// Doesn't exist
{
"error": {
"code": 404,
"message": "Unknown service account",
"status": "NOT_FOUND"
}
}

Beachten Sie, dass die Fehlermeldung anzeigt, dass der Typ nicht gültig ist, wenn die Benutzer-E-Mail gültig war. So konnten wir herausfinden, dass die E-Mail support@hacktricks.xyz existiert, ohne ihr irgendwelche Berechtigungen zu gewähren.

Sie können das gleiche mit Dienstkonten tun, indem Sie den Typ user: anstelle von serviceAccount: verwenden:

# 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.

Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Unterstütze HackTricks

Last updated