GCP - Cloudbuild Privesc

Nauka hakowania AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

cloudbuild

Aby uzyskać więcej informacji na temat Cloud Build, sprawdź:

pageGCP - Cloud Build Enum

cloudbuild.builds.create

Z tym uprawnieniem możesz przesłać build do chmury. Maszyna cloudbuild będzie miała domyślnie token konta usługi cloudbuild w swoim systemie plików: <PROJECT_NUMBER>@cloudbuild.gserviceaccount.com. Możesz jednak wskazać dowolne konto usługi w projekcie w konfiguracji cloudbuild. Dlatego możesz po prostu sprawić, że maszyna wyeksfiltruje token na twój serwer lub uzyskać odwrócony shell wewnątrz niej i zdobyć token (plik zawierający token może ulec zmianie).

Oryginalny skrypt eksploitacji znajdziesz tutaj na GitHubie (ale lokalizacja, z której pobierany jest token, nie działała dla mnie). Sprawdź więc skrypt do automatyzacji tworzenia, eksploitacji i czyszczenia środowiska podatnego tutaj oraz skrypt w Pythonie do uzyskania odwróconego shella wewnątrz maszyny cloudbuild i ukradnij go tutaj (w kodzie znajdziesz, jak określić inne konta usług).

Dla bardziej szczegółowego wyjaśnienia odwiedź https://rhinosecuritylabs.com/gcp/iam-privilege-escalation-gcp-cloudbuild/

cloudbuild.builds.update

Potencjalnie z tym uprawnieniem będziesz mógł aktualizować build w chmurze i po prostu ukraść token konta usługi tak jak to zostało wykonane przy poprzednim uprawnieniu (niestety w chwili pisania tego nie znalazłem sposobu na wywołanie tej API).

TODO

cloudbuild.repositories.accessReadToken

Z tym uprawnieniem użytkownik może uzyskać token dostępu do odczytu używany do dostępu do repozytorium:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{}' \
"https://cloudbuild.googleapis.com/v2/projects/<PROJECT_ID>/locations/<LOCATION>/connections/<CONN_ID>/repositories/<repo-id>:accessReadToken"

cloudbuild.repositories.accessReadWriteToken

Z tym uprawnieniem użytkownik może uzyskać token dostępu do odczytu i zapisu, który jest używany do dostępu do repozytorium:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{}' \
"https://cloudbuild.googleapis.com/v2/projects/<PROJECT_ID>/locations/<LOCATION>/connections/<CONN_ID>/repositories/<repo-id>:accessReadWriteToken"
Zacznij od zera i stań się ekspertem od hakowania AWS dzięki htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Last updated