GCP - IAM, Principals & Org Unauthenticated Enum
Tip
Ucz się & ćwicz AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Wspieraj HackTricks
- Sprawdź subscription plans!
- Dołącz do 💬 Discord group lub telegram group lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Podziel się hacking tricks, zgłaszając PRy do HackTricks i HackTricks Cloud github repos.
Iam & GCP Principals
Aby uzyskać więcej informacji, sprawdź:
GCP - IAM, Principals & Org Policies Enum
Czy domena jest używana w Workspace?
- Sprawdź rekordy DNS
Jeśli ma rekord google-site-verification, prawdopodobnie używa (lub używała) 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"
Jeśli coś takiego jak include:_spf.google.com również się pojawi, potwierdza to (zauważ, że jeśli się nie pojawi, to nie zaprzecza, ponieważ domena może być w Workspace bez używania gmaila jako dostawcy poczty).
- Spróbuj skonfigurować Workspace z tą domeną
Inną opcją jest spróbować skonfigurować Workspace używając tej domeny, jeśli zgłasza, że domena jest już używana (jak na obrazku), wiesz, że jest już używana!
Aby spróbować skonfigurować domenę Workspace, odwiedź: https://workspace.google.com/business/signup/welcome
.png)
- Spróbuj odzyskać hasło do e-maila używając tej domeny
Jeśli znasz jakikolwiek ważny adres e-mail używany w tej domenie (jak: admin@email.com lub info@email.com), możesz spróbować odzyskać konto w https://accounts.google.com/signin/v2/recoveryidentifier, a jeśli próba nie wyświetli błędu wskazującego, że Google nie ma pojęcia o tym koncie, to znaczy, że używa Workspace.
Enumeracja e-maili i kont serwisowych
Możliwe jest enumerowanie ważnych e-maili domeny Workspace i e-maili SA poprzez próby przypisania im uprawnień i sprawdzanie komunikatów o błędach. W tym celu wystarczy mieć uprawnienia do przypisania uprawnień do projektu (który może być tylko w twojej własności).
Zauważ, że aby je sprawdzić, ale nawet jeśli istnieją, nie przyznawaj im uprawnienia, możesz użyć typu serviceAccount gdy to jest user i user gdy to jest 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.
Szybszym sposobem na enumerację kont serwisowych w znanych projektach jest po prostu próba dostępu do URL: https://iam.googleapis.com/v1/projects/<project-id>/serviceAccounts/<sa-email>
Na przykład: https://iam.googleapis.com/v1/projects/gcp-labs-3uis1xlx/serviceAccounts/appengine-lab-1-tarsget@gcp-labs-3uis1xlx.iam.gserviceaccount.com
Jeśli odpowiedź to 403, oznacza to, że SA istnieje. Ale jeśli odpowiedź to 404, oznacza to, że nie istnieje:
// 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"
}
}
Zauważ, że gdy adres e-mail użytkownika był ważny, komunikat o błędzie wskazywał, że typ nie jest, więc udało nam się odkryć, że adres e-mail support@hacktricks.xyz istnieje, nie przyznając mu żadnych uprawnień.
Możesz zrobić to samo z Kontami Usług używając typu user: zamiast 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.
Tip
Ucz się & ćwicz AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Wspieraj HackTricks
- Sprawdź subscription plans!
- Dołącz do 💬 Discord group lub telegram group lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Podziel się hacking tricks, zgłaszając PRy do HackTricks i HackTricks Cloud github repos.
HackTricks Cloud

