GCP - Cloudbuild Privesc
cloudbuild
Aby uzyskać więcej informacji na temat Cloud Build, sprawdź:
pageGCP - Cloud Build Enumcloudbuild.builds.create
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
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
cloudbuild.repositories.accessReadToken
Z tym uprawnieniem użytkownik może uzyskać token dostępu do odczytu używany do dostępu do repozytorium:
cloudbuild.repositories.accessReadWriteToken
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:
Last updated