GCP - Додати користувацькі SSH метадані

Reading time: 5 minutes

GCP - Додати користувацькі SSH метадані

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

Модифікація метаданих

Модифікація метаданих на екземплярі може призвести до значних ризиків безпеки, якщо зловмисник отримає необхідні дозволи.

Включення SSH ключів у користувацькі метадані

На GCP, Linux системи часто виконують скрипти з Python Linux Guest Environment for Google Compute Engine. Критичним компонентом цього є accounts daemon, який призначений для регулярної перевірки кінцевої точки метаданих екземпляра на оновлення авторизованих SSH публічних ключів.

Отже, якщо зловмисник може модифікувати користувацькі метадані, він може змусити демон знайти новий публічний ключ, який буде оброблений і інтегрований у локальну систему. Ключ буде додано до файлу ~/.ssh/authorized_keys існуючого користувача або потенційно створити нового користувача з привілеями sudo, залежно від формату ключа. І зловмисник зможе скомпрометувати хост.

Додати SSH ключ до існуючого привілейованого користувача

  1. Перевірте існуючі SSH ключі на екземплярі:
  • Виконайте команду для опису екземпляра та його метаданих, щоб знайти існуючі SSH ключі. Відповідний розділ у виході буде під metadata, зокрема ключ ssh-keys.
bash
gcloud compute instances describe [INSTANCE] --zone [ZONE]
  • Зверніть увагу на формат SSH ключів: ім'я користувача передує ключу, розділене двокрапкою.
  1. Підготуйте текстовий файл для метаданих SSH ключа:
  • Збережіть деталі імен користувачів та їх відповідних SSH ключів у текстовому файлі з назвою meta.txt. Це важливо для збереження існуючих ключів під час додавання нових.
  1. Сгенеруйте новий SSH ключ для цільового користувача (alice у цьому прикладі):
  • Використовуйте команду ssh-keygen для генерації нового SSH ключа, переконавшись, що поле коментаря (-C) відповідає цільовому імені користувача.
bash
ssh-keygen -t rsa -C "alice" -f ./key -P "" && cat ./key.pub
  • Додайте новий публічний ключ до meta.txt, імітуючи формат, знайдений у метаданих екземпляра.
  1. Оновіть метадані SSH ключа екземпляра:
  • Застосуйте оновлені метадані SSH ключа до екземпляра, використовуючи команду gcloud compute instances add-metadata.
bash
gcloud compute instances add-metadata [INSTANCE] --metadata-from-file ssh-keys=meta.txt
  1. Отримайте доступ до екземпляра, використовуючи новий SSH ключ:
  • Підключіться до екземпляра за допомогою SSH, використовуючи новий ключ, отримуючи доступ до оболонки в контексті цільового користувача (alice у цьому прикладі).
bash
ssh -i ./key alice@localhost
sudo id

Створіть нового привілейованого користувача та додайте SSH ключ

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

bash
# define the new account username
NEWUSER="definitelynotahacker"

# create a key
ssh-keygen -t rsa -C "$NEWUSER" -f ./key -P ""

# create the input meta file
NEWKEY="$(cat ./key.pub)"
echo "$NEWUSER:$NEWKEY" > ./meta.txt

# update the instance metadata
gcloud compute instances add-metadata [INSTANCE_NAME] --metadata-from-file ssh-keys=meta.txt

# ssh to the new account
ssh -i ./key "$NEWUSER"@localhost

SSH ключі на рівні проекту

Можливо розширити доступ до SSH для кількох віртуальних машин (VM) у хмарному середовищі, застосувавши SSH ключі на рівні проекту. Цей підхід дозволяє доступ до SSH до будь-якого екземпляра в проекті, який не заблокував SSH ключі на рівні проекту. Ось узагальнений посібник:

  1. Застосуйте SSH ключі на рівні проекту:
  • Використовуйте команду gcloud compute project-info add-metadata, щоб додати SSH ключі з meta.txt до метаданих проекту. Ця дія забезпечує визнання SSH ключів на всіх VM у проекті, якщо тільки VM не має увімкненої опції "Блокувати SSH ключі на рівні проекту".
bash
gcloud compute project-info add-metadata --metadata-from-file ssh-keys=meta.txt
  1. SSH до екземплярів, використовуючи ключі на рівні проекту:
  • З ключами SSH на рівні проекту ви можете підключитися до будь-якого екземпляра в проекті. Екземпляри, які не блокують ключі на рівні проекту, приймуть SSH ключ, надаючи доступ.
  • Прямий метод для SSH до екземпляра - це використання команди gcloud compute ssh [INSTANCE]. Ця команда використовує ваше поточне ім'я користувача та SSH ключі, встановлені на рівні проекту, щоб спробувати отримати доступ.

Посилання

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