GCP - IAM, Principali & Enum Unauthenticated dell'Org
Reading time: 5 minutes
tip
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos su github.
Iam & Principali GCP
Per ulteriori informazioni controlla:
GCP - IAM, Principals & Org Policies Enum
È utilizzato un dominio in Workspace?
- Controlla i record DNS
Se ha un record google-site-verification
è probabile che stia (o stava) utilizzando 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"
Se appare qualcosa come include:_spf.google.com
conferma ciò (nota che se non appare non lo nega poiché un dominio può essere in Workspace senza utilizzare gmail come fornitore di posta).
- Prova a configurare un Workspace con quel dominio
Un'altra opzione è provare a configurare un Workspace utilizzando il dominio, se si lamenta che il dominio è già in uso (come nell'immagine), sai che è già in uso!
Per provare a configurare un dominio Workspace segui: https://workspace.google.com/business/signup/welcome
.png)
- Prova a recuperare la password di un'email utilizzando quel dominio
Se conosci un indirizzo email valido utilizzato in quel dominio (come: admin@email.com o info@email.com) puoi provare a recuperare l'account in https://accounts.google.com/signin/v2/recoveryidentifier, e se il tentativo non mostra un errore che indica che Google non ha idea di quell'account, allora sta utilizzando Workspace.
Enumerare email e account di servizio
È possibile enumerare email valide di un dominio Workspace e email di SA provando ad assegnare loro permessi e controllando i messaggi di errore. Per questo è sufficiente avere permessi per assegnare permessi a un progetto (che può essere solo di tua proprietà).
Nota che per controllarli ma anche se esistono non concedere loro un permesso puoi usare il tipo serviceAccount
quando è un user
e user
quando è 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.
Un modo più veloce per enumerare gli Account di Servizio nei progetti noti è semplicemente provare ad accedere all'URL: https://iam.googleapis.com/v1/projects/<project-id>/serviceAccounts/<sa-email>
Ad esempio: https://iam.googleapis.com/v1/projects/gcp-labs-3uis1xlx/serviceAccounts/appengine-lab-1-tarsget@gcp-labs-3uis1xlx.iam.gserviceaccount.com
Se la risposta è un 403, significa che l'Account di Servizio esiste. Ma se la risposta è un 404 significa che non esiste:
// 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"
}
}
Nota come, quando l'email dell'utente era valida, il messaggio di errore indicava che il tipo non lo era, quindi siamo riusciti a scoprire che l'email support@hacktricks.xyz esiste senza concederle alcun privilegio.
Puoi fare lo stesso con gli Account di Servizio usando il tipo user:
invece di 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
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos su github.