GCP - Privilege Escalation
Wprowadzenie do Eskalacji Uprawnień w GCP
GCP, podobnie jak każda inna chmura, posiada podmioty: użytkowników, grupy i konta usług oraz pewne zasoby takie jak maszyny obliczeniowe, funkcje chmury... Następnie, za pomocą ról, nadawane są uprawnienia tym podmiotom do zasobów. To jest sposób określania uprawnień, jakie podmiot ma do zasobu w GCP. Istnieją pewne uprawnienia, które pozwolą użytkownikowi uzyskać jeszcze więcej uprawnień do zasobu lub zasobów osób trzecich, i to jest to, co nazywane jest eskalacją uprawnień (oraz wykorzystaniem podatności do uzyskania większej liczby uprawnień).
Dlatego chciałbym podzielić techniki eskalacji uprawnień w GCP na 2 grupy:
Eskalacja do podmiotu: Pozwoli ci to podawać się za innego podmiotu, a więc działać jak on ze wszystkimi jego uprawnieniami. np.: Nadużyj getAccessToken aby podać się za konto usługi.
Eskalacja na zasobie: Pozwoli ci to uzyskać więcej uprawnień do konkretnego zasobu. np.: możesz nadużyć uprawnienia setIamPolicy w cloudfunctions, aby umożliwić wywołanie funkcji.
Zauważ, że niektóre uprawnienia zasobów pozwolą ci również przypisać dowolne konto usługi do zasobu. Oznacza to, że będziesz mógł uruchomić zasób z kontem usługi, wejść do zasobu i ukraść token konta usługi. Dlatego pozwoli to na eskalację do podmiotu poprzez eskalację zasobu. Zdarzało się to w przypadku kilku zasobów wcześniej, ale teraz jest to mniej powszechne (ale nadal możliwe).
Oczywiście najbardziej interesujące techniki eskalacji uprawnień to te z drugiej grupy, ponieważ pozwolą ci uzyskać więcej uprawnień poza zasobami, nad którymi już masz pewne uprawnienia. Jednak zauważ, że eskaluacja w zasobach może dać ci również dostęp do wrażliwych informacji lub nawet do innych podmiotów (może to być poprzez odczytanie tajemnicy zawierającej token konta usługi).
Warto również zauważyć, że w kontach usług GCP są zarówno podmioty, jak i uprawnienia, więc eskalacja uprawnień w koncie usługi pozwoli ci również na podawanie się za nie.
Uprawnienia w nawiasach wskazują uprawnienia potrzebne do wykorzystania podatności za pomocą gcloud
. Mogą one nie być potrzebne, jeśli wykorzystasz to za pomocą interfejsu API.
Uprawnienia dla Metodologii Eskalacji Uprawnień
Tak przeprowadzam testy dla konkretnych uprawnień w celu wykonania określonych działań w GCP.
Pobierz repozytorium github https://github.com/carlospolop/gcp_privesc_scripts
Dodaj nowy skrypt w tests/
Omijanie zakresów dostępu
Tokeny kont usług wyciekające z usługi metadanych GCP mają zakresy dostępu. Są to ograniczenia dotyczące uprawnień, jakie ma token. Na przykład, jeśli token ma zakres https://www.googleapis.com/auth/cloud-platform
, będzie miał pełny dostęp do wszystkich usług GCP. Jednak jeśli token ma zakres https://www.googleapis.com/auth/cloud-platform.read-only
, będzie miał tylko dostęp tylko do odczytu do wszystkich usług GCP, nawet jeśli konto usługi ma więcej uprawnień w IAM.
Nie ma bezpośredniego sposobu na obejście tych uprawnień, ale zawsze możesz spróbować szukać nowych poświadczeń w skompromitowanym hoście, znaleźć klucz usługi do wygenerowania tokenu OAuth bez ograniczeń lub przejść do innego mniej ograniczonego VM.
Kiedy są używane zakresy dostępu, token OAuth generowany dla instancji obliczeniowej (VM) będzie zawierał ograniczenie zakresu. Jednak możesz być w stanie obejść to ograniczenie i wykorzystać uprawnienia, jakie ma skompromitowane konto.
Najlepszym sposobem na obejście tego ograniczenia jest albo znalezienie nowych poświadczeń w skompromitowanym hoście, znalezienie klucza usługi do wygenerowania tokenu OAuth bez ograniczeń lub skompromitowanie innego VM z mniej ograniczonym kontem usługi.
Sprawdź konto usługi z wygenerowanymi kluczami za pomocą:
Techniki eskalacji uprawnień
Sposobem na eskalację uprawnień w AWS jest posiadanie wystarczających uprawnień, aby w jakiś sposób uzyskać dostęp do uprawnień innych kont/usług/grup. Łączenie eskalacji aż do uzyskania dostępu administratora do organizacji.
GCP ma setki (jeśli nie tysiące) uprawnień, które podmiot może otrzymać. W tej książce znajdziesz wszystkie uprawnienia, które znam, których można nadużyć do eskaltacji uprawnień, ale jeśli znasz jakieś ścieżki, które tutaj nie zostały wymienione, proszę się nimi podzielić.
Podstrony tej sekcji są uporządkowane według usług. Na każdej usłudze znajdziesz różne sposoby eskalacji uprawnień.
Nadużywanie GCP do eskalacji uprawnień lokalnie
Jeśli jesteś wewnątrz maszyny w GCP, możesz być w stanie nadużyć uprawnień do eskalacji uprawnień nawet lokalnie:
GCP - local privilege escalation ssh pivotingOdnośniki
Last updated