GCP - Cloudfunctions Privesc
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Više informacija o Cloud Functions:
GCP - Cloud Functions Enumcloudfunctions.functions.create
, cloudfunctions.functions.sourceCodeSet
, iam.serviceAccounts.actAs
Napadač sa ovim privilegijama može napraviti novu Cloud Function sa proizvoljnim (malicioznim) kodom i dodeliti joj Service Account. Zatim, leak-ovati token Service Account-a iz metapodataka kako bi eskalirao privilegije na njega. Neke privilegije za aktiviranje funkcije mogu biti potrebne.
Eksploatacijski skripti za ovu metodu mogu se naći ovde i ovde, a unapred izgrađeni .zip fajl može se naći ovde.
cloudfunctions.functions.update
, cloudfunctions.functions.sourceCodeSet
, iam.serviceAccounts.actAs
Napadač sa ovim privilegijama može modifikovati kod funkcije i čak modifikovati servisni nalog koji je povezan sa ciljem exfiltracije tokena.
Da biste implementirali cloud funkcije, takođe će vam biti potrebne actAs dozvole za podrazumevani servisni nalog za računanje ili za servisni nalog koji se koristi za izgradnju slike.
Neke dodatne privilegije kao što su .call
dozvola za verziju 1 cloudfunctions ili uloga role/run.invoker
za aktiviranje funkcije mogu biti potrebne.
Ako dobijete grešku Permission 'run.services.setIamPolicy' denied on resource...
to je zato što koristite parametar --allow-unauthenticated
i nemate dovoljno dozvola za to.
Eksploatacijski skript za ovu metodu možete pronaći ovde.
cloudfunctions.functions.sourceCodeSet
Sa ovom dozvolom možete dobiti potpisanu URL adresu kako biste mogli da otpremite datoteku u funkcijski bucket (ali kod funkcije neće biti promenjen, još uvek ga morate ažurirati)
Nisam baš siguran koliko je ova dozvola korisna iz perspektive napadača, ali dobro je znati.
cloudfunctions.functions.setIamPolicy
, iam.serviceAccounts.actAs
Dajte sebi bilo koju od prethodnih .update
ili .create
privilegija da biste eskalirali.
cloudfunctions.functions.update
Samo imajući cloudfunctions
dozvole, bez iam.serviceAccounts.actAs
nećete moći da ažurirate funkciju, PA TO NIJE VALIDNA PRIVESC.
Ako imate pristup za čitanje i pisanje nad bucket-om, možete pratiti promene u kodu i kada god dođe do ažuriranja u bucket-u, možete ažurirati novi kod sa svojim kodom koji će nova verzija Cloud Function-a pokrenuti sa dostavljenim backdoored kodom.
Možete proveriti više o napadu u:
GCP - Storage PrivescMeđutim, ne možete ovo koristiti za prethodno kompromitovanje trećih strana Cloud Functions, jer ako kreirate bucket u svom nalogu i date mu javne dozvole tako da eksterni projekat može pisati preko njega, dobijate sledeću grešku:
Međutim, ovo bi moglo biti korišćeno za DoS napade.
Kada se kreira Cloud Function, nova docker slika se šalje u Artifact Registry projekta. Pokušao sam da modifikujem sliku novom, pa čak i da obrišem trenutnu sliku (i cache
sliku) i ništa se nije promenilo, cloud funkcija nastavlja da radi. Stoga, možda bi moglo biti moguće zloupotrebiti napad Race Condition kao sa bucket-om da promenite docker kontejner koji će biti pokrenut, ali samo modifikovanjem sačuvane slike nije moguće kompromitovati Cloud Function.
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)