GCP - Add Custom SSH Metadata
Last updated
Last updated
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Modyfikacja metadanych na instancji może prowadzić do znaczących zagrożeń bezpieczeństwa, jeśli atakujący zdobędzie niezbędne uprawnienia.
Na GCP, systemy Linux często wykonują skrypty z Python Linux Guest Environment for Google Compute Engine. Krytycznym komponentem tego jest demon kont, który jest zaprojektowany do regularnego sprawdzania punktu końcowego metadanych instancji w poszukiwaniu aktualizacji autoryzowanych kluczy publicznych SSH.
Dlatego, jeśli atakujący może modyfikować niestandardowe metadane, może sprawić, że demon znajdzie nowy klucz publiczny, który zostanie przetworzony i zintegrowany z lokalnym systemem. Klucz zostanie dodany do pliku ~/.ssh/authorized_keys
istniejącego użytkownika lub potencjalnie stworzy nowego użytkownika z uprawnieniami sudo
, w zależności od formatu klucza. A atakujący będzie mógł przejąć kontrolę nad hostem.
Zbadaj istniejące klucze SSH na instancji:
Wykonaj polecenie, aby opisać instancję i jej metadane, aby zlokalizować istniejące klucze SSH. Odpowiednia sekcja w wyniku będzie pod metadata
, konkretnie klucz ssh-keys
.
Zwróć uwagę na format kluczy SSH: nazwa użytkownika poprzedza klucz, oddzielona dwukropkiem.
Przygotuj plik tekstowy dla metadanych klucza SSH:
Zapisz szczegóły nazw użytkowników i ich odpowiadających kluczy SSH w pliku tekstowym o nazwie meta.txt
. To jest istotne dla zachowania istniejących kluczy podczas dodawania nowych.
Wygeneruj nowy klucz SSH dla docelowego użytkownika (alice
w tym przykładzie):
Użyj polecenia ssh-keygen
, aby wygenerować nowy klucz SSH, upewniając się, że pole komentarza (-C
) odpowiada docelowej nazwie użytkownika.
Dodaj nowy klucz publiczny do meta.txt
, naśladując format znaleziony w metadanych instancji.
Zaktualizuj metadane klucza SSH instancji:
Zastosuj zaktualizowane metadane klucza SSH do instancji, używając polecenia gcloud compute instances add-metadata
.
Uzyskaj dostęp do instancji za pomocą nowego klucza SSH:
Połącz się z instancją za pomocą SSH, używając nowego klucza, uzyskując dostęp do powłoki w kontekście docelowego użytkownika (alice
w tym przykładzie).
Jeśli nie znaleziono interesującego użytkownika, można utworzyć nowego, któremu nadane zostaną uprawnienia sudo
:
Możliwe jest rozszerzenie zasięgu dostępu SSH do wielu Maszyn Wirtualnych (VM) w środowisku chmurowym poprzez zastosowanie kluczy SSH na poziomie projektu. To podejście umożliwia dostęp SSH do każdej instancji w projekcie, która nie zablokowała wyraźnie kluczy SSH na poziomie projektu. Oto podsumowany przewodnik:
Zastosuj klucze SSH na poziomie projektu:
Użyj polecenia gcloud compute project-info add-metadata
, aby dodać klucze SSH z meta.txt
do metadanych projektu. Ta akcja zapewnia, że klucze SSH są rozpoznawane we wszystkich VM w projekcie, chyba że VM ma włączoną opcję "Zablokuj klucze SSH na poziomie projektu".
SSH do instancji za pomocą kluczy na poziomie projektu:
Z kluczami SSH na poziomie projektu możesz SSH do dowolnej instancji w projekcie. Instancje, które nie blokują kluczy na poziomie projektu, zaakceptują klucz SSH, przyznając dostęp.
Bezpośrednią metodą na SSH do instancji jest użycie polecenia gcloud compute ssh [INSTANCE]
. To polecenie używa twojej bieżącej nazwy użytkownika i kluczy SSH ustawionych na poziomie projektu, aby spróbować uzyskać dostęp.
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)