GCP - Compute Privesc
Обчислення
Для отримання додаткової інформації про Обчислення та VPC (мережу) в GCP перевірте:
pageGCP - Compute Enumcompute.projects.setCommonInstanceMetadata
compute.projects.setCommonInstanceMetadata
З цим дозволом ви можете змінювати інформацію про метадані екземпляра та змінювати авторизовані ключі користувача, або створювати нового користувача з sudo правами. Таким чином, ви зможете виконати SSH на будь-якому екземплярі віртуальної машини та вкрасти Обліковий запис служби GCP, з яким працює екземпляр. Обмеження:
Зауважте, що Облікові записи служби GCP, які працюють на екземплярах віртуальних машин, за замовчуванням мають дуже обмежений обсяг
Вам потрібно мати можливість зв'язатися з SSH сервером для входу
Для отримання додаткової інформації про те, як використовувати цей дозвіл, перевірте:
pageGCP - Add Custom SSH Metadatacompute.instances.setMetadata
compute.instances.setMetadata
Цей дозвіл надає ті ж привілеї, що й попередній дозвіл, але для конкретних екземплярів замість цілого проекту. Ті ж самі вразливості та обмеження, що і для попереднього розділу, застосовуються.
compute.instances.setIamPolicy
compute.instances.setIamPolicy
Цей тип дозволу дозволить вам надати собі роль з попередніми дозволами та підвищити привілеї, зловживаючи ними.
compute.instances.osLogin
compute.instances.osLogin
Якщо OSLogin увімкнено на екземплярі, з цим дозволом ви можете просто виконати gcloud compute ssh [ЕКЗЕМПЛЯР]
та підключитися до екземпляра. Ви не матимете привілеї root всередині екземпляра.
compute.instances.osAdminLogin
compute.instances.osAdminLogin
Якщо OSLogin увімкнено на екземплярі, з цим дозволом ви можете просто виконати gcloud compute ssh [ЕКЗЕМПЛЯР]
та підключитися до екземпляра. У вас буде привілеї root всередині екземпляра.
compute.instances.create
,iam.serviceAccounts.actAs, compute.disks.create
, compute.instances.create
, compute.instances.setMetadata
, compute.instances.setServiceAccount
, compute.subnetworks.use
, compute.subnetworks.useExternalIp
compute.instances.create
,iam.serviceAccounts.actAs, compute.disks.create
, compute.instances.create
, compute.instances.setMetadata
, compute.instances.setServiceAccount
, compute.subnetworks.use
, compute.subnetworks.useExternalIp
Можливо створити віртуальну машину з призначеним Обліковим записом служби та вкрасти токен облікового запису служби, отримавши доступ до метаданих для підвищення привілеїв до нього.
Скрипт вразливості для цього методу можна знайти тут.
osconfig.patchDeployments.create
| osconfig.patchJobs.exec
osconfig.patchDeployments.create
| osconfig.patchJobs.exec
Якщо у вас є дозволи osconfig.patchDeployments.create
або osconfig.patchJobs.exec
, ви можете створити роботу або розгортання патча. Це дозволить вам рухатися бічно в середовищі та отримати виконання коду на всіх екземплярах обчислень у межах проекту.
Якщо ви хочете вручну використовувати це, вам потрібно створити або роботу з патчем або розгортання для роботи з патчем виконайте:
gcloud compute os-config patch-jobs execute --file=patch.json
Для розгортання патч-розгортання:
gcloud compute os-config patch-deployments create my-update --file=patch.json
Існують автоматизовані інструменти, такі як patchy, які дозволяють виявляти недоліки дозволів та автоматично рухатися бічно.
Ви також можете використовувати це для постійності.
compute.machineImages.setIamPolicy
compute.machineImages.setIamPolicy
Надайте собі додаткові дозволи до образу обчислення.
compute.snapshots.setIamPolicy
compute.snapshots.setIamPolicy
Надайте собі додаткові дозволи до знімка диска.
compute.disks.setIamPolicy
compute.disks.setIamPolicy
Надайте собі додаткові дозволи до диска.
Обхід обмежень доступу
За цим посиланням ви знайдете деякі ідеї для спроб обійти обмеження доступу.
Локальне підвищення привілеїв в екземплярі обчислень GCP
pageGCP - local privilege escalation ssh pivotingПосилання
Last updated