GCP - Privilege Escalation

Support HackTricks

Introduction to GCP Privilege Escalation

GCP, jak każda inna chmura, ma pewne zasady: użytkownicy, grupy i konta serwisowe, oraz pewne zasoby takie jak silnik obliczeniowy, funkcje chmurowe… Następnie, poprzez role, uprawnienia są przyznawane tym zasadom nad zasobami. To jest sposób na określenie uprawnień, jakie zasada ma nad zasobą w GCP. Istnieją pewne uprawnienia, które pozwolą użytkownikowi uzyskać jeszcze więcej uprawnień nad zasobą lub zasobami osób trzecich, i to nazywa się eskalacją uprawnień (także, wykorzystanie luk w zabezpieczeniach, aby uzyskać więcej uprawnień).

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

  • Eskalacja do zasady: To pozwoli ci udawać inną zasadę, a tym samym działać jak ona ze wszystkimi jej uprawnieniami. np.: Wykorzystanie getAccessToken do udawania konta serwisowego.

  • Eskalacja nad zasobą: To pozwoli ci uzyskać więcej uprawnień nad konkretną zasobą. np.: możesz wykorzystać uprawnienie setIamPolicy nad cloudfunctions, aby umożliwić sobie wywołanie funkcji.

  • Zauważ, że niektóre uprawnienia zasobów również pozwolą ci dołączyć dowolne konto serwisowe do zasoby. Oznacza to, że będziesz mógł uruchomić zasobę z SA, dostać się do zasoby i ukraść token SA. Dlatego to pozwoli na eskalację do zasady poprzez eskalację zasobów. To zdarzyło się w kilku zasobach wcześniej, ale teraz jest mniej powszechne (ale nadal może się zdarzyć).

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 eskalacja w zasobach może również dać ci dostęp do wrażliwych informacji lub nawet do innych zasad (może poprzez odczytanie sekretu, który zawiera token SA).

Ważne jest również, aby zauważyć, że w GCP konta serwisowe są zarówno zasadami, jak i uprawnieniami, więc eskalacja uprawnień w SA pozwoli ci również na jego udawanie.

Uprawnienia w nawiasach wskazują na uprawnienia potrzebne do wykorzystania luki za pomocą gcloud. Mogą nie być potrzebne, jeśli wykorzystujesz to przez API.

Permissions for Privilege Escalation Methodology

To jest sposób, w jaki testuję konkretne uprawnienia do wykonywania konkretnych działań w GCP.

  1. Dodaj w tests/ nowy skrypt

Bypassing access scopes

Tokeny SA wyciekające z usługi metadanych GCP mają zakresy dostępu. Są to ograniczenia dotyczące uprawnień, które 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 SA ma więcej uprawnień w IAM.

Nie ma bezpośredniego sposobu na obejście tych uprawnień, ale zawsze możesz spróbować poszukać nowych poświadczeń w skompromitowanym hoście, znaleźć klucz usługi do wygenerowania tokena OAuth bez ograniczeń lub przejść do innej VM mniej ograniczonej.

Gdy używane są zakresy dostępu, token OAuth, który jest generowany dla instancji obliczeniowej (VM), będzie miał ograniczenie zakresu włączone. Jednak możesz być w stanie obejść to ograniczenie i wykorzystać uprawnienia, które 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 tokena OAuth bez ograniczeń lub skompromitowanie innej VM z SA mniej ograniczonym.

Sprawdź SA z kluczami wygenerowanymi za pomocą:

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ę swoich uprawnień w AWS jest posiadanie wystarczających uprawnień, aby w jakiś sposób uzyskać dostęp do uprawnień innych kont usługowych/użytkowników/grup. Łączenie eskalacji, aż uzyskasz dostęp administratora do organizacji.

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

Podstrony tej sekcji są uporządkowane według usług. Na każdej usłudze znajdziesz różne sposoby na eskalację uprawnień w tych usługach.

Wykorzystywanie GCP do lokalnej eskalacji uprawnień

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

GCP - local privilege escalation ssh pivoting

Odniesienia

Wsparcie dla HackTricks

Last updated