GCP - Cloudfunctions Privesc
cloudfunctions
Więcej informacji na temat Cloud Functions:
cloudfunctions.functions.create
, cloudfunctions.functions.sourceCodeSet
, iam.serviceAccounts.actAs
cloudfunctions.functions.create
, cloudfunctions.functions.sourceCodeSet
, iam.serviceAccounts.actAs
Atakujący posiadający te uprawnienia może utworzyć nową funkcję Cloud z dowolnym (złośliwym) kodem i przypisać jej konto usługi. Następnie wyciek tokena konta usługi z metadanych umożliwia eskalację uprawnień do niego. Może być wymagane posiadanie pewnych uprawnień do wywołania funkcji.
Skrypty eksploitów dla tej metody można znaleźć tutaj oraz tutaj, a gotowy plik .zip można znaleźć tutaj.
cloudfunctions.functions.update
, cloudfunctions.functions.sourceCodeSet
, iam.serviceAccounts.actAs
cloudfunctions.functions.update
, cloudfunctions.functions.sourceCodeSet
, iam.serviceAccounts.actAs
Atakujący posiadający te uprawnienia może modyfikować kod funkcji, a nawet modyfikować przypisane konto usługi w celu wykradnięcia tokenu. Może być wymagane posiadanie pewnych uprawnień do wywołania funkcji.
Skrypt eksploatacyjny dla tej metody można znaleźć tutaj.
cloudfunctions.functions.sourceCodeSet
cloudfunctions.functions.sourceCodeSet
Z tym uprawnieniem można uzyskać podpisany URL umożliwiający przesłanie pliku do kubełka funkcji (ale kod funkcji nie zostanie zmieniony, nadal trzeba go zaktualizować)
Nie jestem pewien, jak przydatne jest to uprawnienie z perspektywy atakującego, ale dobrze wiedzieć.
cloudfunctions.functions.setIamPolicy
, iam.serviceAccounts.actAs
cloudfunctions.functions.setIamPolicy
, iam.serviceAccounts.actAs
Nadaj sobie dowolne z wcześniejszych uprawnień .update
lub .create
w celu eskalacji.
cloudfunctions.functions.update
cloudfunctions.functions.update
Posiadanie tylko uprawnień cloudfunctions
, bez iam.serviceAccounts.actAs
, uniemożliwi aktualizację funkcji, WIĘC TO NIE JEST WAŻNA ESKALACJA.
Uprawnienia do zapisu w kubełku
Atakujący posiadający uprawnienia do zapisu w kubełku, w którym przechowywany jest kod Cloud Functions, będzie mógł modyfikować kod, nadpisując plik function_code.zip
, oraz będzie mógł wykonać dowolny kod po jego wykonaniu.
Referencje
Last updated