GCP - Privilege Escalation

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Wprowadzenie do eskalacji uprawnień w GCP

GCP, podobnie jak każda inna chmura, ma pewne podmioty: użytkowników, grupy i konta usług, oraz pewne zasoby, takie jak maszyny obliczeniowe, funkcje chmury... Następnie, za pomocą ról, przyznawane są uprawnienia tym podmiotom wobec zasobów. To jest sposób określania uprawnień, jakie podmiot ma wobec zasobu w GCP. Istnieją pewne uprawnienia, które pozwolą użytkownikowi uzyskać jeszcze więcej uprawnień wobec zasobu lub zasobów osób trzecich, i to jest to, co nazywamy eskalacją uprawnień (a także wykorzystaniem podatności w celu uzyskania większych uprawnień).

Dlatego chciałbym podzielić techniki eskalacji uprawnień w GCP na 2 grupy:

  • Eskalacja uprawnień do podmiotu: Pozwoli ci to udawać innego podmiotu i działać w jego imieniu ze wszystkimi jego uprawnieniami. np.: Wykorzystanie getAccessToken do udawania konta usługi.

  • Eskalacja uprawnień w zasobie: Pozwoli ci to uzyskać więcej uprawnień wobec konkretnego zasobu. np.: Możesz wykorzystać uprawnienie setIamPolicy w funkcjach chmury, aby umożliwić wywołanie funkcji.

  • Należy zauważyć, że niektóre uprawnienia zasobów pozwolą ci również dołączyć 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 będziesz mógł eskalować uprawnienia do podmiotu za pośrednictwem eskalacji zasobu. Wcześniej zdarzało się to w przypadku wielu zasobów, ale teraz jest to mniej częste (ale wciąż możliwe).

Oczywiście, najbardziej interesujące techniki eskalacji uprawnień to te z drugiej grupy, ponieważ pozwolą ci uzyskać więcej uprawnień poza zasobami, w których już masz pewne uprawnienia. Jednak należy zauważyć, że eskalacja w zasobach może również dać ci dostęp do wrażliwych informacji lub nawet do innych podmiotów (może to być możliwe poprzez odczytanie tajemnicy zawierającej token konta usługi).

Warto również zauważyć, że w kontach usług GCP zarówno podmioty, jak i uprawnienia są tożsame, więc eskalacja uprawnień w koncie usługi pozwoli ci również na udawanie go.

Uprawnienia w nawiasach wskazują uprawnienia potrzebne do wykorzystania podatności za pomocą gcloud. Mogą one nie być potrzebne, jeśli wykorzystasz ją za pomocą interfejsu API.

Uprawnienia dla metodologii eskalacji uprawnień

Tak testuję konkretne uprawnienia do wykonania określonych działań w GCP.

  1. Dodaj nowy skrypt do folderu tests/

Omijanie zakresów dostępu

Tokeny kont usług (SA) wyciekające z usługi metadanych GCP mają zakresy dostępu. Są to ograniczenia dotyczące uprawnień, jakie posiada 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ć wyszukać nowe poświadczenia na 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 scope. Jednak możesz być w stanie obejść to ograniczenie i wykorzystać uprawnienia, jakie ma skompromitowane konto.

Najlepszym sposobem na obejście tego ograniczenia jest znalezienie nowych poświadczeń na skompromitowanym hoście, znalezienie klucza usługi do wygenerowania tokenu OAuth bez ograniczeń lub skompromitowanie innego VM z mniej ograniczonym kontem usługi.

Sprawdź SA z wygenerowanymi kluczami przy użyciu:

for i in $(gcloud iam service-accounts list --format="table[no-heading](email)"); do
echo "Looking for keys for $i:"
gcloud iam service-accounts keys list --iam-account $i
done

Techniki eskalacji uprawnień

Sposobem na eskalację uprawnień w GCP jest posiadanie wystarczających uprawnień, aby w jakiś sposób uzyskać dostęp do uprawnień innych kont/usług/grup. Eskalacja jest łańcuchowa, aż do uzyskania dostępu administratora do organizacji.

GCP ma setki (jeśli nie tysiące) uprawnień, które można przyznać podmiotowi. W tej książce znajdziesz wszystkie uprawnienia, które znam, które można wykorzystać do eskalacji uprawnień, ale jeśli znasz jakąś ścieżkę, która tutaj nie jest wymieniona, podziel się nią.

Podstrony tej sekcji są uporządkowane według usług. Na każdej usłudze można znaleźć różne sposoby eskalacji uprawnień.

Wykorzystywanie GCP do eskalacji uprawnień lokalnie

Jeśli jesteś wewnątrz maszyny w GCP, możesz próbować wykorzystać uprawnienia do eskalacji uprawnień nawet lokalnie:

pageGCP - local privilege escalation ssh pivoting

Odwołania

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Last updated