GCP - IAM, Principals & Org Unauthenticated Enum

Support HackTricks

Iam & GCP Principals

Для отримання додаткової інформації перегляньте:

GCP - IAM, Principals & Org Policies Enum

Чи використовується домен у Workspace?

  1. Перевірте DNS записи

Якщо є запис google-site-verification, ймовірно, що він (або він був) використовується в 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"

Якщо щось на кшталт include:_spf.google.com також з'являється, це підтверджує це (зауважте, що якщо це не з'являється, це не заперечує, оскільки домен може бути в Workspace без використання gmail як постачальника електронної пошти).

  1. Спробуйте налаштувати Workspace з цим доменом

Ще один варіант - спробувати налаштувати Workspace, використовуючи домен, якщо він скаржиться, що домен вже використовується (як на зображенні), ви знаєте, що він вже використовується!

Щоб спробувати налаштувати домен Workspace, перейдіть за посиланням: https://workspace.google.com/business/signup/welcome

  1. Спробуйте відновити пароль електронної пошти, використовуючи цей домен

Якщо ви знаєте будь-яку дійсну електронну адресу, що використовується в цьому домені (наприклад: admin@email.com або info@email.com), ви можете спробувати відновити обліковий запис на https://accounts.google.com/signin/v2/recoveryidentifier, і якщо спроба не показує помилку, що вказує на те, що Google не має уявлення про цей обліковий запис, тоді він використовує Workspace.

Перерахунок електронних адрес та облікових записів служб

Можливо перерахувати дійсні електронні адреси домену Workspace та електронні адреси SA, намагаючись призначити їм дозволи та перевіряючи повідомлення про помилки. Для цього вам просто потрібно мати дозволи на призначення дозволів проекту (який може бути просто у вашій власності).

Зверніть увагу, що для перевірки їх, але навіть якщо вони існують, не надавайте їм дозволу, ви можете використовувати тип serviceAccount, коли це user, і user, коли це 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.

Швидший спосіб перерахувати облікові записи служб у відомих проектах - це просто спробувати отримати доступ до URL: https://iam.googleapis.com/v1/projects/<project-id>/serviceAccounts/<sa-email> Наприклад: https://iam.googleapis.com/v1/projects/gcp-labs-3uis1xlx/serviceAccounts/appengine-lab-1-tarsget@gcp-labs-3uis1xlx.iam.gserviceaccount.com

Якщо відповідь - 403, це означає, що обліковий запис служби існує. Але якщо відповідь - 404, це означає, що його не існує:

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

Зверніть увагу, що коли електронна пошта користувача була дійсною, повідомлення про помилку вказувало, що тип не є дійсним, тому ми змогли виявити, що електронна пошта support@hacktricks.xyz існує, не надаючи їй жодних привілеїв.

Ви можете зробити те ж саме з обліковими записами служб за допомогою типу user: замість 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.
Підтримайте HackTricks

Last updated