GCP - Cloudbuild Privesc
cloudbuild
Więcej informacji o Cloud Build znajdziesz tutaj:
GCP - Cloud Build Enumcloudbuild.builds.create
cloudbuild.builds.create
Z tą uprawnieniem możesz przesłać cloud build. Maszyna cloudbuild będzie miała w swoim systemie plików domyślnie token konta usługi cloudbuild: <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óconą powłokę w niej i samodzielnie zdobyć token (plik zawierający token może się zmienić).
Oryginalny skrypt exploita znajdziesz tutaj na GitHubie (ale lokalizacja, z której pobiera token, nie działała dla mnie). Dlatego sprawdź skrypt automatyzujący tworzenie, eksploatację i czyszczenie podatnego środowiska tutaj oraz skrypt w pythonie, aby uzyskać odwróconą powłokę w maszynie cloudbuild i ukraść 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
cloudbuild.builds.update
Potencjalnie z tą uprawnieniem będziesz mógł zaktualizować cloud build i po prostu ukraść token konta usługi tak jak to było wykonane z poprzednią uprawnieniem (ale niestety w momencie pisania tego tekstu nie mogłem znaleźć żadnego sposobu na wywołanie tego API).
TODO
cloudbuild.repositories.accessReadToken
cloudbuild.repositories.accessReadToken
Z tą uprawnieniem użytkownik może uzyskać token dostępu do odczytu używany do uzyskiwania dostępu do repozytorium:
cloudbuild.repositories.accessReadWriteToken
cloudbuild.repositories.accessReadWriteToken
Dzięki temu uprawnieniu użytkownik może uzyskać token dostępu do odczytu i zapisu używany do uzyskiwania dostępu do repozytorium:
cloudbuild.connections.fetchLinkableRepositories
cloudbuild.connections.fetchLinkableRepositories
Z tym uprawnieniem możesz uzyskać repozytoria, do których połączenie ma dostęp:
Last updated