GCP - IAM, Principals & Org Unauthenticated Enum

Tip

Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Leer en oefen Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks

Iam & GCP Principals

Vir meer inligting, kyk:

GCP - IAM, Principals & Org Policies Enum

Word domein in Workspace gebruik?

  1. Kontroleer DNS rekords

As dit ’n google-site-verification rekord het, is dit waarskynlik dat dit (of dit was) Workspace gebruik:

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"

As iets soos include:_spf.google.com ook verskyn, bevestig dit dit (let daarop dat as dit nie verskyn nie, dit nie ontken nie, aangesien ’n domein in Workspace kan wees sonder om gmail as e-posverskaffer te gebruik).

  1. Probeer om ’n Workspace met daardie domein op te stel

’n Ander opsie is om te probeer om ’n Workspace met die domein op te stel. As dit kla dat die domein reeds gebruik word (soos in die beeld), weet jy dit is reeds gebruik!

Om ’n Workspace-domein op te stel, volg: https://workspace.google.com/business/signup/welcome

  1. Probeer om die wagwoord van ’n e-pos met daardie domein te herstel

As jy enige geldige e-posadres weet wat in daardie domein gebruik word (soos: admin@email.com of info@email.com), kan jy probeer om die rekening te herstel in https://accounts.google.com/signin/v2/recoveryidentifier, en as die poging nie ’n fout toon wat aandui dat Google geen idee het van daardie rekening nie, dan gebruik dit Workspace.

Enumereer e-posse en diensrekeninge

Dit is moontlik om geldige e-posse van ’n Workspace-domein en SA-e-posse te enumereer deur te probeer om hulle toestemmings toe te ken en die foutboodskappe te kontroleer. Hiervoor moet jy net toestemming hê om toestemming aan ’n projek toe te ken (wat net deur jou besit kan word).

Let daarop dat om hulle te kontroleer, maar selfs al bestaan hulle, nie ’n toestemming aan hulle te verleen nie, kan jy die tipe serviceAccount gebruik wanneer dit ’n user is en user wanneer dit ’n SA is:

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

’n Sneller manier om diensrekeninge in bekende projekte te evalueer, is om net te probeer om toegang te verkry tot die URL: https://iam.googleapis.com/v1/projects/<project-id>/serviceAccounts/<sa-email>
Byvoorbeeld: https://iam.googleapis.com/v1/projects/gcp-labs-3uis1xlx/serviceAccounts/appengine-lab-1-tarsget@gcp-labs-3uis1xlx.iam.gserviceaccount.com

As die antwoord ’n 403 is, beteken dit dat die SA bestaan. Maar as die antwoord ’n 404 is, beteken dit dat dit nie bestaan nie:

// 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"
}
}

Let op hoe wanneer die gebruiker se e-pos geldig was, die foutboodskap aangedui het dat hulle tipe nie is nie, so ons het daarin geslaag om te ontdek dat die e-pos support@hacktricks.xyz bestaan sonder om enige voorregte toe te ken.

Jy kan die selfde doen met Diensrekeninge deur die tipe user: te gebruik in plaas van 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

Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Leer en oefen Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks