GCP - IAM, Principals & Org Policies Enum

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Облікові записи служби

Для вступу в те, що таке обліковий запис служби, перегляньте:

pageGCP - Basic Information

Перелік

Обліковий запис служби завжди належить до проекту:

gcloud iam service-accounts list --project <project>

Користувачі та Групи

Для вступу в те, як працюють Користувачі та Групи в GCP, перевірте:

pageGCP - Basic Information

Перелік

З дозволами serviceusage.services.enable та serviceusage.services.use можливо увімкнути сервіси в проекті та використовувати їх.

Зверніть увагу, що за замовчуванням користувачам Workspace надається роль Створювач проекту, що дає їм доступ до створення нових проектів. Коли користувач створює проект, йому надається роль owner над ним. Таким чином, він може увімкнути ці сервіси в проекті, щоб мати можливість переліку Workspace.

Проте, слід звернути увагу, що також потрібно мати достатньо дозволів в Workspace, щоб мати можливість викликати ці API.

Якщо ви можете увімкнути службу admin і якщо ваш користувач має достатньо привілеїв в Workspace, ви можете перелічити всі групи та користувачів за допомогою наступних рядків. Навіть якщо воно говорить про групи ідентичності, воно також повертає користувачів без жодних груп:

# Enable admin
gcloud services enable admin.googleapis.com
gcloud services enable cloudidentity.googleapis.com

# Using admin.googleapis.com
## List all users
gcloud organizations list #The DIRECTORY_CUSTOMER_ID is the Workspace ID
gcloud beta identity groups preview --customer <workspace-id>

# Using cloudidentity.googleapis.com
## List groups of a user (you can list at least the groups you belong to)
gcloud identity groups memberships search-transitive-groups --member-email <email> --labels=cloudidentity.googleapis.com/groups.discussion_forum

## List Group Members (you can list at least the groups you belong to)
gcloud identity groups memberships list --group-email=<email>
### Make it transitive
gcloud identity groups memberships search-transitive-memberships --group-email=<email>

## Get a graph (if you have enough permissions)
gcloud identity groups memberships get-membership-graph --member-email=<email> --labels=cloudidentity.googleapis.com/groups.discussion_forum

У попередніх прикладах параметр --labels є обов'язковим, тому використовується загальне значення (він не потрібен, якщо ви використовуєте API безпосередньо, як PurplePanda робить тут.

Навіть з увімкненим службою адміністратора можливо, що ви отримаєте помилку при переліку їх через те, що ваш користувач робочого простору, який був компрометований, не має достатньо дозволів:

IAM

Перевірте це для базової інформації про IAM.

Стандартні дозволи

З документації: Коли створюється ресурс організації, всі користувачі вашого домену отримують ролі Створювач облікового запису для розрахунків та Створювач проекту за замовчуванням. Ці стандартні ролі дозволяють вашим користувачам почати використовувати Google Cloud негайно, але не призначені для використання в звичайній роботі з ресурсами вашої організації.

Ці ролі надають дозволи:

  • billing.accounts.create та resourcemanager.organizations.get

  • resourcemanager.organizations.get та resourcemanager.projects.create

Крім того, коли користувач створює проект, він автоматично отримує власника цього проекту відповідно до документації. Таким чином, за замовчуванням користувач зможе створювати проект та запускати будь-яку службу на ньому (майнери? Перелік робочого простору? ...)

Найвищий рівень привілеїв в організації GCP - це роль Адміністратор організації.

set-iam-policy vs add-iam-policy-binding

У більшості служб ви зможете змінити дозволи для ресурсу за допомогою методу add-iam-policy-binding або set-iam-policy. Основна відмінність полягає в тому, що add-iam-policy-binding додає нове призначення ролі до існуючої політики IAM, тоді як set-iam-policy буде видаляти раніше надані дозволи та встановлювати лише ті, які вказані в команді.

Перелік

# Roles
## List roles
gcloud iam roles list --project $PROJECT_ID # List only custom roles
gcloud iam roles list --filter='etag:AA=='

## Get perms and description of role
gcloud iam roles describe roles/container.admin
gcloud iam roles describe --project <proj-name> <role-name>

# Policies
gcloud organizations get-iam-policy <org_id>
gcloud resource-manager folders get-iam-policy <folder-id>
gcloud projects get-iam-policy <project-id>

# MISC
## Testable permissions in resource
gcloud iam list-testable-permissions --filter "NOT apiDisabled: true" <resource>
## Grantable roles to a resource
gcloud iam list-grantable-roles <project URL>

Перелік IAM у хмарних активах

Існують різні способи перевірки всіх дозволів користувача на різних ресурсах (таких як організації, теки, проекти...) за допомогою цієї служби.

  • Дозвіл cloudasset.assets.searchAllIamPolicies може запитувати всі політики iam всередині ресурсу.

gcloud asset search-all-iam-policies #By default uses current configured project
gcloud asset search-all-iam-policies --scope folders/1234567
gcloud asset search-all-iam-policies --scope organizations/123456
gcloud asset search-all-iam-policies --scope projects/project-id-123123
  • Дозвіл cloudasset.assets.analyzeIamPolicy може запитати всі політики iam принципала всередині ресурсу.

# Needs perm "cloudasset.assets.analyzeIamPolicy" over the asset
gcloud asset analyze-iam-policy --organization=<org-id> \
--identity='user:email@hacktricks.xyz'
gcloud asset analyze-iam-policy --folder=<folder-id> \
--identity='user:email@hacktricks.xyz'
gcloud asset analyze-iam-policy --project=<project-name> \
--identity='user:email@hacktricks.xyz'
  • Дозвіл cloudasset.assets.searchAllResources дозволяє перелічувати всі ресурси організації, теки або проекту. Включені ресурси, пов'язані з IAM (наприклад, ролі).

gcloud asset search-all-resources --scope projects/<proj-name>
gcloud asset search-all-resources --scope folders/1234567
gcloud asset search-all-resources --scope organizations/123456
  • Дозвіл cloudasset.assets.analyzeMove може бути корисним для отримання політик, що впливають на ресурс, наприклад, проект.

gcloud asset analyze-move --project=<proj-name> \
--destination-organization=609216679593
  • Я припускаю, що дозвіл cloudasset.assets.queryIamPolicy також може надати доступ до пошуку дозволів для принципалів

# But, when running something like this
gcloud asset query --project=<proj> --statement='SELECT * FROM compute_googleapis_com_Instance'
# I get the error
ERROR: (gcloud.asset.query) UNAUTHENTICATED: QueryAssets API is only supported for SCC premium customers. See https://cloud.google.com/security-command-center/pricing

Перелік дозволів testIamPermissions

Якщо ви не можете отримати доступ до інформації про IAM за допомогою попередніх методів і ви знаходитесь в Команді Червоного, ви можете використовувати інструмент https://github.com/carlospolop/bf_my_gcp_perms для перебору ваших поточних дозволів.

Проте слід зауважити, що служба cloudresourcemanager.googleapis.com повинна бути увімкнена.

Підвищення привілеїв

На наступній сторінці ви можете перевірити, як зловживати дозволами IAM для підвищення привілеїв:

pageGCP - IAM Privesc

Неаутентифікований перелік

pageGCP - IAM, Principals & Org Unauthenticated Enum

Післяексплуатаційна фаза

pageGCP - IAM Post Exploitation

Наполегливість

Якщо у вас є високі привілеї, ви можете:

  • Створити нові СА (або користувачів, якщо ви в Workspace)

  • Надати принципалам, які контролюються вами, більше дозволів

  • Надати більше привілеїв вразливим СА (SSRF в vm, вразлива Cloud Function...)

  • ...

Політики організації

Для вступу в те, що таке Політики організації, перевірте:

pageGCP - Basic Information

Політики IAM вказують на дозволи, які мають принципали щодо ресурсів через ролі, які надають гранульовані дозволи. Політики організації обмежують, як ці служби можуть бути використані або які функції вимкнені. Це допомагає покращити принцип мінімальних привілеїв для кожного ресурсу в середовищі GCP.

gcloud resource-manager org-policies list --organization=ORGANIZATION_ID
gcloud resource-manager org-policies list --folder=FOLDER_ID
gcloud resource-manager org-policies list --project=PROJECT_ID

Підвищення привілеїв

На наступній сторінці ви можете перевірити, як зловживати дозволами політики організації для підвищення привілеїв:

pageGCP - Orgpolicy Privesc
Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Last updated