GCP - Додати користувацькі SSH метадані
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.
Модифікація метаданих
Модифікація метаданих на екземплярі може призвести до значних ризиків безпеки, якщо зловмисник отримає необхідні дозволи.
Включення SSH ключів у користувацькі метадані
На GCP, Linux системи часто виконують скрипти з Python Linux Guest Environment for Google Compute Engine. Критичним компонентом цього є daemon облікових записів, який призначений для регулярної перевірки кінцевої точки метаданих екземпляра на оновлення авторизованих SSH публічних ключів.
Отже, якщо зловмисник може модифікувати користувацькі метадані, він може змусити демон знайти новий публічний ключ, який буде оброблений і інтегрований у локальну систему. Ключ буде додано до файлу ~/.ssh/authorized_keys
існуючого користувача або потенційно створити нового користувача з привілеями sudo
, залежно від формату ключа. І зловмисник зможе скомпрометувати хост.
Додати SSH ключ до існуючого привілейованого користувача
- Перевірте існуючі SSH ключі на екземплярі:
- Виконайте команду для опису екземпляра та його метаданих, щоб знайти існуючі SSH ключі. Відповідний розділ у виході буде під
metadata
, зокрема ключssh-keys
.
gcloud compute instances describe [INSTANCE] --zone [ZONE]
- Зверніть увагу на формат SSH ключів: ім'я користувача передує ключу, розділене двокрапкою.
- Підготуйте текстовий файл для метаданих SSH ключа:
- Збережіть деталі імен користувачів та їх відповідних SSH ключів у текстовому файлі з назвою
meta.txt
. Це важливо для збереження існуючих ключів під час додавання нових.
- Сгенеруйте новий SSH ключ для цільового користувача (
alice
у цьому прикладі):
- Використовуйте команду
ssh-keygen
для генерації нового SSH ключа, переконавшись, що поле коментаря (-C
) відповідає цільовому імені користувача.
ssh-keygen -t rsa -C "alice" -f ./key -P "" && cat ./key.pub
- Додайте новий публічний ключ до
meta.txt
, імітуючи формат, знайдений у метаданих екземпляра.
- Оновіть метадані SSH ключа екземпляра:
- Застосуйте оновлені метадані SSH ключа до екземпляра, використовуючи команду
gcloud compute instances add-metadata
.
gcloud compute instances add-metadata [INSTANCE] --metadata-from-file ssh-keys=meta.txt
- Отримайте доступ до екземпляра за допомогою нового 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 для кількох віртуальних машин (VM) у хмарному середовищі, застосувавши SSH ключі на рівні проєкту. Цей підхід дозволяє доступ до SSH до будь-якого екземпляра в межах проєкту, який не заблокував SSH ключі на рівні проєкту. Ось узагальнений посібник:
- Застосуйте SSH ключі на рівні проєкту:
- Використовуйте команду
gcloud compute project-info add-metadata
, щоб додати SSH ключі зmeta.txt
до метаданих проєкту. Ця дія забезпечує визнання SSH ключів на всіх VM у проєкті, якщо тільки VM не має увімкненої опції "Блокувати SSH ключі на рівні проєкту".
gcloud compute project-info add-metadata --metadata-from-file ssh-keys=meta.txt
- 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
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи Telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на GitHub.