GCP - Add Custom SSH Metadata

GCP - Voeg Aangepaste SSH Metadata By

Leer AWS hak van nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

Wysiging van die metadata

Metadatabewerking op 'n instansie kan lei tot beduidende sekuriteitsrisiko's as 'n aanvaller die nodige toestemmings verkry.

Insluiting van SSH-sleutels in Aangepaste Metadata

Op GCP, voer Linux-stelsels dikwels skripte uit van die Python Linux-gaskameromgewing vir Google Compute Engine. 'n Kritieke komponent hiervan is die rekenaar-daemon, wat ontwerp is om gereeld die instansiemetadatapunt vir opdaterings van die geagte SSH openbare sleutels te kontroleer.

Daarom, as 'n aanvaller aangepaste metadata kan wysig, kan hy die daemon 'n nuwe openbare sleutel laat vind, wat verwerk en geïntegreer word in die plaaslike stelsel. Die sleutel sal bygevoeg word in ~/.ssh/authorized_keys lêer van 'n bestaande gebruiker of moontlik 'n nuwe gebruiker met sudo-bevoegdhede skep, afhangende van die sleutel se formaat. En die aanvaller sal die gasheer kan kompromitteer.

Voeg SSH-sleutel by tot bestaande bevoorregte gebruiker

  1. Ondersoek Bestaande SSH-sleutels op die Instansie:

  • Voer die bevel uit om die instansie en sy metadata te beskryf om bestaande SSH-sleutels te vind. Die relevante afdeling in die uitset sal onder metadata wees, spesifiek die ssh-keys sleutel.

gcloud compute instances describe [INSTANSIE] --zone [SONE]
  • Let op die formaat van die SSH-sleutels: die gebruikersnaam kom voor die sleutel, geskei deur 'n kolon.

  1. Berei 'n tekslêer voor vir SSH-sleutelmetadata:

  • Berg die besonderhede van gebruikersname en hul ooreenstemmende SSH-sleutels op in 'n tekslêer genaamd meta.txt. Dit is noodsaaklik om die bestaande sleutels te behou terwyl nuwes bygevoeg word.

  1. Genereer 'n Nuwe SSH-sleutel vir die Teiken Gebruiker (alice in hierdie voorbeeld):

  • Gebruik die ssh-keygen bevel om 'n nuwe SSH-sleutel te genereer, en verseker dat die kommentaarveld (-C) ooreenstem met die teiken gebruikersnaam.

ssh-keygen -t rsa -C "alice" -f ./key -P "" && cat ./key.pub
  • Voeg die nuwe openbare sleutel by in meta.txt, wat die formaat naboots wat in die instansie se metadata gevind word.

  1. Werk die Instansie se SSH-sleutelmetadata by:

  • Pas die opgedateerde SSH-sleutelmetadata op die instansie toe deur die gcloud compute instances add-metadata bevel te gebruik.

gcloud compute instances add-metadata [INSTANSIE] --metadata-from-file ssh-keys=meta.txt
  1. Kry Toegang tot die Instansie met die Nuwe SSH-sleutel:

  • Verbind met die instansie met SSH deur die nuwe sleutel te gebruik, en kry toegang tot die skaal in die konteks van die teiken gebruiker (alice in hierdie voorbeeld).

ssh -i ./key alice@localhost
sudo id

Skep 'n nuwe bevoorregte gebruiker en voeg 'n SSH-sleutel by

As geen interessante gebruiker gevind word nie, is dit moontlik om 'n nuwe een te skep wat sudo-bevoegdhede sal kry:

# 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-sleutels op projekvlak

Dit is moontlik om die reikwydte van SSH-toegang tot verskeie virtuele masjiene (VM's) in 'n wolk-omgewing te verbreed deur SSH-sleutels op projekvlak toe te pas. Hierdie benadering maak SSH-toegang moontlik tot enige instansie binne die projek wat nie uitdruklik projekwye SSH-sleutels geblokkeer het nie. Hier is 'n opgesomde gids:

  1. Pas SSH-sleutels op Projekvlak Toe:

  • Gebruik die gcloud compute project-info add-metadata-bevel om SSH-sleutels van meta.txt by die metadata van die projek te voeg. Hierdie aksie verseker dat die SSH-sleutels erken word regoor alle VM's in die projek, tensy 'n VM die "Blokkeer projekwye SSH-sleutels" opsie geaktiveer het.

gcloud compute project-info add-metadata --metadata-from-file ssh-keys=meta.txt
  1. SSH na Instansies met Projekwyde Sleutels:

  • Met projekwyde SSH-sleutels op hul plek, kan jy SSH na enige instansie binne die projek. Instansies wat nie projekwye sleutels blokkeer nie, sal die SSH-sleutel aanvaar en toegang verleen.

  • 'n Direkte metode om SSH na 'n instansie te maak, is deur die gcloud compute ssh [INSTANSIE]-bevel te gebruik. Hierdie bevel gebruik jou huidige gebruikersnaam en die SSH-sleutels wat op projekvlak ingestel is om toegang te probeer verkry.

Verwysings

Last updated