GCP - Network Docker Escape
Tip
Ucz się & ćwicz AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Wspieraj HackTricks
- Sprawdź subscription plans!
- Dołącz do 💬 Discord group lub telegram group lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Podziel się hacking tricks, zgłaszając PRy do HackTricks i HackTricks Cloud github repos.
Stan początkowy
W obu opisach, w których ta technika została użyta, atakującym udało się uzyskać dostęp root wewnątrz kontenera Docker zarządzanego przez GCP z dostępem do sieci hosta (oraz z uprawnieniami CAP_NET_ADMIN i CAP_NET_RAW).
Wyjaśnienie ataku
Na instancji Google Compute Engine regularna inspekcja ruchu sieciowego ujawnia liczne zwykłe żądania HTTP do instancji metadanych pod adresem 169.254.169.254. Google Guest Agent, usługa open-source, często wykonuje takie żądania.
Agent zaprojektowano do monitorowania zmian w metadanych. Warto zauważyć, że metadane zawierają pole na publiczne klucze SSH. Gdy nowy publiczny klucz SSH zostanie dodany do metadanych, agent automatycznie go autoryzuje w pliku .authorized_key. Może również utworzyć nowego użytkownika i dodać go do sudoers, jeśli to konieczne.
Agent monitoruje zmiany wysyłając żądanie w celu pobrania wszystkich wartości metadanych rekurencyjnie (GET /computeMetadata/v1/?recursive=true). To żądanie ma na celu skłonienie serwera metadanych do wysłania odpowiedzi tylko wtedy, gdy od ostatniego pobrania zaszła jakaś zmiana w metadanych, identyfikowana przez Etag (wait_for_change=true&last_etag=). Dodatkowo uwzględniany jest parametr timeout (timeout_sec=). Jeśli w określonym czasie nie nastąpi żadna zmiana, serwer odpowiada niezmienionymi wartościami.
Ten proces pozwala IMDS (Instance Metadata Service) odpowiedzieć po 60 sekundach, jeśli nie nastąpiła żadna zmiana konfiguracji, tworząc potencjalne okienko do wstrzyknięcia fałszywej odpowiedzi konfiguracyjnej do guest agenta.
Atakujący mógłby to wykorzystać, przeprowadzając Man-in-the-Middle (MitM) attack, podszywając się pod odpowiedź serwera IMDS i wstawiając nowy klucz publiczny. Mogłoby to umożliwić nieautoryzowany dostęp SSH do hosta.
Technika ucieczki
Chociaż ARP spoofing jest nieskuteczny w sieciach Google Compute Engine, zmodyfikowana wersja rshijack opracowana przez Ezequiel może być użyta do wstrzyknięcia pakietów w komunikacji w celu wstawienia użytkownika SSH.
Ta wersja rshijack pozwala podać liczby ACK i SEQ jako argumenty w linii poleceń, ułatwiając podszycie się pod odpowiedź przed rzeczywistą odpowiedzią serwera Metadata. Dodatkowo używany jest mały skrypt Shell do zwrócenia specjalnie spreparowanego ładunku. Ten ładunek powoduje, że Google Guest Agent tworzy użytkownika wouter z określonym kluczem publicznym w pliku .authorized_keys.
Skrypt używa tego samego ETag, aby uniemożliwić serwerowi Metadata natychmiastowe powiadomienie Google Guest Agent o innych wartościach metadanych, opóźniając w ten sposób odpowiedź.
Aby przeprowadzić podszycie, konieczne są następujące kroki:
- Monitoruj żądania do serwera Metadata używając tcpdump:
Monitoruj żądania do serwera Metadata za pomocą tcpdump
```bash tcpdump -S -i eth0 'host 169.254.169.254 and port 80' & ```Szukaj linii podobnej do:
HackTricks Cloud

