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:

pageGCP - Storage Enum

storage.objects.get

Ova dozvola vam omogućava da preuzimate fajlove koji su smešteni u Cloud Storage-u. Ovo potencijalno omogućava eskalaciju privilegija jer se u nekim slučajevima osetljive informacije čuvaju tamo. Osim toga, neke GCP usluge čuvaju svoje informacije u kantama:

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

  • GCR (Container Registry): Slika kontejnera se čuva u kantama, što znači da ako možete čitati kante, moći ćete preuzeti slike i tražiti 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 menjate dozvole sa ovom dozvolom, pogledajte ovu stranicu:

pageGCP - Public Buckets Privilege Escalation

storage.hmacKeys.create

"Interoperabilna" funkcionalnost Cloud Storage-a, namenjena za interakcije između različitih oblaka kao što je 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 će povećati privilegije unutar Cloud Storage-a. Dok se HMAC ključevi povezani sa korisnicima mogu dobiti samo putem veb konzole, pristupni i tajni ključevi ostaju uvek dostupni, što omogućava potencijalni pristup rezervnom skladištu. Sa druge strane, HMAC ključevi povezani sa servisnim nalozima su dostupni putem API-ja, ali njihovi pristupni i tajni ključevi nisu dostupni nakon kreiranja, što dodaje složenost za kontinuirani pristup.

# Create key
gsutil hmac create <sa-email>

# Configure gsutil to use it
gsutil config -a

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

Još jedan skript za iskorišćavanje ove metode 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, potrebne su vam dozvole storage.objects.create, a prema dokumentaciji, takođe vam je potrebna dozvola storage.objects.delete da biste izmenili postojeći objekat.

Veoma uobičajena 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 koji se upravlja unutar GCP-a. Ima nekoliko interesantnih funkcionalnosti:

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

  • Čuva kod u kanti, stoga će svako ko ima pristup za pisanje nad tom kantom moći da promeni/doda DGA kod (kod koji će Apache Airflow izvršiti) Dakle, ako imate pristup 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, pa je moguće izvršiti proizvoljni kod preko njega.

App Engine

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

  • Izgleda da su slojevi kontejnera smešteni u kanti, možda ih je moguće promeniti?

GCR

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

  • Kanta koju koristi GCR ima URL sličan gs://<eu/usa/asia/nothing>.artifacts.<project>.appspot.com (Najviši 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