GCP - Storage Privesc

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

Drugi načini podrške HackTricks-u:

Skladištenje

Osnovne informacije:

GCP - Storage Enum

storage.objects.get

Ova dozvola vam omogućava da preuzimate fajlove smeštene unutar Cloud Storage-a. Ovo potencijalno može omogućiti eskalaciju privilegija jer se u nekim situacijama osetljive informacije čuvaju tamo. Osim toga, neke GCP usluge čuvaju svoje informacije u kantama (buckets):

  • GCP Composer: Kada kreirate Composer okruženje, kod svih DAG-ova će biti sačuvan unutar kante. Ovi zadaci mogu sadržati zanimljive informacije unutar svog koda.

  • GCR (Container Registry): Slika kontejnera se čuva unutar kanti, što znači da ako možete čitati kante, moći ćete da preuzmete slike i tražite curenja i/ili izvorni kod.

storage.objects.setIamPolicy

Možete sebi dati dozvolu da zloupotrebite bilo koji od prethodnih scenarija u ovoj sekciji.

storage.buckets.setIamPolicy

Za primer kako da modifikujete dozvole sa ovom dozvolom pogledajte ovu stranicu:

GCP - Public Buckets Privilege Escalation

storage.hmacKeys.create

"Interoperabilnost" funkcija Cloud Storage-a, dizajnirana za interakcije između oblaka kao što je sa AWS S3, uključuje kreiranje HMAC ključeva za Servisne Naloge i korisnike. Napadač može iskoristiti ovo tako što će generisati HMAC ključ za Servisni Nalog sa povišenim privilegijama, čime escalira privilegije unutar Cloud Storage-a. Dok su HMAC ključevi povezani sa korisnicima dostupni samo putem web konzole, kako pristupni tako i tajni ključevi ostaju zauvek dostupni, omogućavajući potencijalni pristup rezervnom skladištu. S druge strane, HMAC ključevi povezani sa Servisnim Nalogom su dostupni putem API-ja, ali njihovi pristupni i tajni ključevi nisu dostupni nakon kreiranja, dodajući sloj kompleksnosti za kontinuirani pristup.

# Create key
gsutil hmac create <sa-email>

# Configure gsutil to use it
gcloud config set pass_credentials_to_gsutil false
gsutil config -a

# Use it
gsutil ls gs://[BUCKET_NAME]

# Restore
gcloud config set pass_credentials_to_gsutil true

Drugi skript za eksploataciju ovog metoda može se pronaći ovde.

storage.objects.create, storage.objects.delete = Dozvole za pisanje u skladištu

Da biste kreirali novi objekat unutar kante, potrebno je da imate storage.objects.create, a prema dokumentaciji, takođe je potrebno imati storage.objects.delete da biste modifikovali postojeći objekat.

Veoma česta eksploatacija kanti u kojima možete pisati u oblaku je u slučaju kada kanta čuva fajlove veb servera, možda ćete moći da sačuvate novi kod koji će biti korišćen od strane veb aplikacije.

Composer

Composer je Apache Airflow upravljan unutar GCP. Ima nekoliko interesantnih funkcija:

  • Pokreće se unutar GKE klastera, tako da je SA koji klaster koristi dostupan kodu koji se izvršava unutar Composera

  • Čuva kod u kanti, stoga, svako sa dozvolom za pisanje nad tom kantom će moći da promeni/doda DGA kod (kod koji će Apache Airflow izvršiti) Zatim, ako imate dozvolu za pisanje nad kantom koju Composer koristi za čuvanje koda, možete privesc na SA koji se izvršava u GKE klasteru.

Cloud Functions

  • Kod Cloud Functions-a se čuva u Skladištu, tako da je moguće izvršiti proizvoljan kod preko prepisivanja.

App Engine

  • Izvorni kod App Engine-a se čuva u kantama, prepisanjem koda moguće je izvršiti proizvoljan kod. OVO NIJE MOGUĆE

  • Izgleda da su slojevi kontejnera čuvani u kanti, možda promenom tih?

GCR

  • Google Container Registry čuva slike unutar kanti, ako možete pisati u tim kantama možda ćete moći da lateralno pređete tamo gde se te kante izvršavaju.

  • Kanta koju koristi GCR će imati URL sličan gs://<eu/usa/asia/nothing>.artifacts.<project>.appspot.com (Nivo poddomena je naveden ovde).

Reference

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

Drugi načini podrške HackTricks-u:

Last updated