GCP - IAM, Principals & Org Unauthenticated Enum
Reading time: 5 minutes
tip
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
Iam & GCP Principals
Für weitere Informationen siehe:
GCP - IAM, Principals & Org Policies Enum
Wird die Domain in Workspace verwendet?
- Ü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).
- 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
.png)
- 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 man versucht, ihnen Berechtigungen zuzuweisen und die Fehlermeldungen zu überprüfen. Dafür 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 einen 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 Servicekonten 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.
tip
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.