GCP - Network Docker Escape
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.
Початковий стан
У двох розповідях, де описується ця техніка, атакуючим вдалося отримати root доступ всередині Docker контейнера, керованого GCP, з доступом до мережі хоста (та з можливостями CAP_NET_ADMIN і CAP_NET_RAW).
Пояснення атаки
На екземплярі Google Compute Engine регулярний моніторинг мережевого трафіку виявляє численні plain HTTP requests до metadata instance за адресою 169.254.169.254. Google Guest Agent, open-source сервіс, часто робить такі запити.
Цей агент призначений для моніторингу змін у metadata. Зокрема, metadata містить поле для SSH public keys. Коли до metadata додається новий публічний SSH ключ, агент автоматично авторизує його в файлі .authorized_key. Він також може створити нового користувача і додати його до sudoers, якщо це потрібно.
Агент відстежує зміни, відправляючи запит на отримання всіх значень metadata рекурсивно (GET /computeMetadata/v1/?recursive=true). Цей запит призначений змусити metadata server надіслати відповідь лише якщо були якісь зміни в metadata з моменту останнього опитування, ідентифіковані Etag (wait_for_change=true&last_etag=). Додатково включений параметр timeout (timeout_sec=). Якщо протягом вказаного таймауту змін не відбулося, сервер повертає незмінені значення.
Цей процес дозволяє IMDS (Instance Metadata Service) відповісти через 60 секунд, якщо конфігурація не змінилася, створюючи потенційне вікно для ін’єкції підробленої конфігураційної відповіді до guest agent.
Атакуючий може скористатися цим, здійснивши Man-in-the-Middle (MitM) attack, підробити відповідь від IMDS і вставити новий публічний ключ. Це може дозволити несанкціонований SSH доступ до хоста.
Техніка втечі
Хоча ARP spoofing неефективний у мережах Google Compute Engine, modified version of rshijack, розроблена Ezequiel, може використовуватися для ін’єкції пакетів у комунікацію з метою ін’єкції SSH-користувача.
Ця версія rshijack дозволяє передавати ACK і SEQ номери як аргументи командного рядка, що полегшує підробку відповіді перед реальною відповіддю Metadata server. Додатково використовується невеликий Shell script, щоб повернути спеціально створений payload. Цей payload змушує Google Guest Agent створити користувача wouter з вказаним публічним ключем у файлі .authorized_keys.
Скрипт використовує той самий ETag, щоб запобігти негайному сповіщенню Google Guest Agent про відмінні значення metadata з боку Metadata server, таким чином затримуючи відповідь.
Щоб виконати підробку, необхідні наступні кроки:
- Моніторинг запитів до Metadata server за допомогою tcpdump:
Monitor metadata server requests with tcpdump
```bash tcpdump -S -i eth0 'host 169.254.169.254 and port 80' & ```Знайдіть рядок, схожий на:
HackTricks Cloud

