GCP - Cloudfunctions Privesc
Last updated
Last updated
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Meer inligting oor Cloud Functions:
GCP - Cloud Functions Enumcloudfunctions.functions.create
, cloudfunctions.functions.sourceCodeSet
, iam.serviceAccounts.actAs
'n Aanvaller met hierdie voorregte kan 'n nuwe Cloud Function met arbitrêre (kwaadaardige) kode skep en dit aan 'n Diensrekening toewys. Dan, lek die Diensrekening token uit die metadata om voorregte na dit te eskaleer. Sommige voorregte om die funksie te aktiveer mag vereis word.
Eksploitasieskripte vir hierdie metode kan [hier] (https://github.com/RhinoSecurityLabs/GCP-IAM-Privilege-Escalation/blob/master/ExploitScripts/cloudfunctions.functions.create-call.py) en [hier] (https://github.com/RhinoSecurityLabs/GCP-IAM-Privilege-Escalation/blob/master/ExploitScripts/cloudfunctions.functions.create-setIamPolicy.py) gevind word en die voorafgeboude .zip-lêer kan [hier] (https://github.com/RhinoSecurityLabs/GCP-IAM-Privilege-Escalation/tree/master/ExploitScripts/CloudFunctions) gevind word.
cloudfunctions.functions.update
, cloudfunctions.functions.sourceCodeSet
, iam.serviceAccounts.actAs
'n Aanvaller met hierdie voorregte kan die kode van 'n Funksie wysig en selfs die diensrekening wat aangeheg is, wysig met die doel om die token te ekfiltreer.
Om cloud functions te ontplooi, sal jy ook actAs-toestemmings oor die standaard rekenaar diensrekening of oor die diensrekening wat gebruik word om die beeld te bou, benodig.
Sommige ekstra voorregte soos .call
toestemming vir weergawe 1 cloudfunctions of die rol role/run.invoker
om die funksie te aktiveer mag vereis word.
As jy die fout Permission 'run.services.setIamPolicy' denied on resource...
kry, is dit omdat jy die --allow-unauthenticated
param gebruik en jy nie genoeg toestemming het nie.
Die eksploit-skrip vir hierdie metode kan hier gevind word.
cloudfunctions.functions.sourceCodeSet
Met hierdie toestemming kan jy 'n ondertekende URL kry om 'n lêer na 'n funksiebucket op te laai (maar die kode van die funksie sal nie verander nie, jy moet dit steeds opdateer)
Nie regtig seker hoe nuttig net hierdie toestemming is vanuit 'n aanvaller se perspektief nie, maar dit is goed om te weet.
cloudfunctions.functions.setIamPolicy
, iam.serviceAccounts.actAs
Gee jouself enige van die vorige .update
of .create
voorregte om te eskaleer.
cloudfunctions.functions.update
Slegs met cloudfunctions
toestemmings, sonder iam.serviceAccounts.actAs
sal jy nie in staat wees om die funksie op te dateer NIE, DUS DIT IS NIE 'N GELDIGE PRIVESC NIE.
As jy lees- en skryftoegang oor die emmer het, kan jy veranderinge in die kode monitor en wanneer 'n opdatering in die emmer plaasvind, kan jy die nuwe kode met jou eie kode opdateer sodat die nuwe weergawe van die Cloud Function met die ingediende backdoored kode uitgevoer sal word.
Jy kan meer oor die aanval nagaan in:
GCP - Storage PrivescEchter, jy kan dit nie gebruik om derdeparty Cloud Functions vooraf te kompromitteer nie, want as jy die emmer in jou rekening skep en dit openbare toestemmings gee sodat die eksterne projek daaroor kan skryf, kry jy die volgende fout:
Echter, dit kan gebruik word vir DoS-aanvalle.
Wanneer 'n Cloud Function geskep word, word 'n nuwe docker beeld na die Artifact Registry van die projek gepush. Ek het probeer om die beeld met 'n nuwe een te wysig, en selfs die huidige beeld (en die cache
beeld) te verwyder, en niks het verander nie, die cloud function het voortgegaan om te werk. Daarom, dalk kan dit moontlik wees om 'n Race Condition aanval te misbruik soos met die emmer om die docker houer wat uitgevoer sal word te verander, maar net deur die gestoor beeld te wysig is dit nie moontlik om die Cloud Function te kompromitteer nie.
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)