GCP - Add Custom SSH Metadata
Last updated
Last updated
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Модифікація метаданих на екземплярі може призвести до значних ризиків безпеки, якщо зловмисник отримає необхідні дозволи.
На GCP, Linux системи часто виконують скрипти з Python Linux Guest Environment for Google Compute Engine. Критичним компонентом цього є демон облікових записів, який призначений для регулярної перевірки кінцевої точки метаданих екземпляра на оновлення авторизованих SSH публічних ключів.
Отже, якщо зловмисник може модифікувати користувацькі метадані, він може змусити демон знайти новий публічний ключ, який буде оброблений і інтегрований у локальну систему. Ключ буде додано до файлу ~/.ssh/authorized_keys
існуючого користувача або потенційно створити нового користувача з привілеями sudo
, залежно від формату ключа. І зловмисник зможе скомпрометувати хост.
Перевірте існуючі SSH ключі на екземплярі:
Виконайте команду для опису екземпляра та його метаданих, щоб знайти існуючі SSH ключі. Відповідний розділ у виході буде під metadata
, зокрема ключ ssh-keys
.
Зверніть увагу на формат SSH ключів: ім'я користувача передує ключу, розділене двокрапкою.
Підготуйте текстовий файл для метаданих SSH ключа:
Збережіть деталі імен користувачів та їх відповідних SSH ключів у текстовому файлі з назвою meta.txt
. Це важливо для збереження існуючих ключів під час додавання нових.
Згенеруйте новий SSH ключ для цільового користувача (alice
у цьому прикладі):
Використовуйте команду ssh-keygen
для генерації нового SSH ключа, переконавшись, що поле коментаря (-C
) відповідає цільовому імені користувача.
Додайте новий публічний ключ до meta.txt
, імітуючи формат, знайдений у метаданих екземпляра.
Оновіть метадані SSH ключа екземпляра:
Застосуйте оновлені метадані SSH ключа до екземпляра, використовуючи команду gcloud compute instances add-metadata
.
Отримайте доступ до екземпляра, використовуючи новий SSH ключ:
Підключіться до екземпляра за допомогою SSH, використовуючи новий ключ, отримуючи доступ до оболонки в контексті цільового користувача (alice
у цьому прикладі).
Якщо не знайдено цікавого користувача, можна створити нового, якому будуть надані привілеї sudo
:
Можливо розширити доступ до SSH для кількох віртуальних машин (VM) у хмарному середовищі, застосувавши SSH ключі на рівні проекту. Цей підхід дозволяє доступ до SSH до будь-якого екземпляра в проекті, який не заблокував SSH ключі на рівні проекту. Ось узагальнений посібник:
Застосуйте SSH ключі на рівні проекту:
Використовуйте команду gcloud compute project-info add-metadata
, щоб додати SSH ключі з meta.txt
до метаданих проекту. Ця дія забезпечує визнання SSH ключів на всіх VM у проекті, якщо тільки VM не має увімкненої опції "Блокувати SSH ключі на рівні проекту".
SSH до екземплярів, використовуючи ключі на рівні проекту:
З ключами на рівні проекту ви можете підключитися до будь-якого екземпляра в проекті. Екземпляри, які не блокують ключі на рівні проекту, приймуть SSH ключ, надаючи доступ.
Прямий спосіб підключитися до екземпляра - це використання команди gcloud compute ssh [INSTANCE]
. Ця команда використовує ваше поточне ім'я користувача та SSH ключі, встановлені на рівні проекту, для спроби доступу.
Вчіться та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Вчіться та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)