GCP - Privilege Escalation

Tip

Ucz się & ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Wspieraj HackTricks

Wprowadzenie do eskalacji uprawnień w GCP

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 w odniesieniu do zasobów. To jest sposób na określenie uprawnień, jakie ma zasada w odniesieniu do zasobu w GCP.
Istnieją pewne uprawnienia, które pozwolą użytkownikowi na uzyskanie jeszcze większych uprawnień do zasobu lub zasobów osób trzecich, i to nazywa się eskalacją uprawnień (także, wykorzystanie luk w zabezpieczeniach do uzyskania większych 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 na zasobie: To pozwoli ci uzyskać więcej uprawnień do konkretnego zasobu. np.: możesz wykorzystać uprawnienie setIamPolicy na 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 zasobu. Oznacza to, że będziesz mógł uruchomić zasób z SA, wejść do zasobu i ukraść token SA. Dlatego to pozwoli na eskalację do zasady poprzez eskalację zasobu. To zdarzyło się w kilku zasobach wcześniej, ale teraz jest to mniej częste (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, do których 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).

Warning

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.

Note

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

Uprawnienia do metodologii eskalacji uprawnień

Tak testuję konkretne uprawnienia do wykonywania konkretnych działań w GCP.

  1. Pobierz repozytorium github https://github.com/carlospolop/gcp_privesc_scripts
  2. Dodaj w tests/ nowy skrypt

Obejście zakresów dostępu

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. 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, albo znalezienie klucza usługi do wygenerowania tokena OAuth bez ograniczeń, albo skompromentowanie 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 móc w jakiś sposób uzyskać dostęp do uprawnień innych kont/usług/grup. Łączenie eskalacji, aż uzyskasz dostęp administratora do organizacji.

Warning

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. Możesz znaleźć w każdej usłudze 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

Tip

Ucz się & ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Wspieraj HackTricks