GCP - Cloud Build Enum
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Google Cloud Build to zarządzana platforma CI/CD, która automatyzuje procesy budowy i wydania oprogramowania, integrując się z repozytoriami kodu źródłowego i wspierając szeroki zakres języków programowania. Pozwala deweloperom na automatyczne budowanie, testowanie i wdrażanie kodu, jednocześnie zapewniając elastyczność w dostosowywaniu kroków budowy i przepływów pracy.
Każdy wyzwalacz Cloud Build jest powiązany z repozytorium w chmurze lub bezpośrednio połączony z zewnętrznym repozytorium (Github, Bitbucket i Gitlab).
Nie widziałem żadnego sposobu na kradzież tokena Github/Bitbucket stąd lub z repozytoriów w chmurze, ponieważ gdy repozytorium jest pobierane, jest dostępne przez URL https://source.cloud.google.com/ i Github nie jest dostępny przez klienta.
Cloud Build może być wyzwalany, jeśli:
Push do gałęzi: Określ gałąź
Push nowego tagu: Określ tag
Pull request: Określ gałąź, która otrzymuje PR
Ręczne wywołanie
Wiadomość Pub/Sub: Określ temat
Zdarzenie Webhook: Ujawni URL HTTPS, a żądanie musi być uwierzytelnione za pomocą sekretu
Są 3 opcje:
Plik yaml/json określający polecenia do wykonania. Zwykle: /cloudbuild.yaml
Tylko jeden, który można określić „w linii” w konsoli internetowej i w cli
Najczęstsza opcja
Istotna dla nieautoryzowanego dostępu
Dockerfile do budowy
Buildpack do budowy
Konto usługi ma zakres cloud-platform
, więc może używać wszystkich uprawnień. Jeśli nie określono SA (jak przy składaniu), to domyślne SA <proj-number>@cloudbuild.gserviceaccount.com
będzie używane.
Domyślnie nie przyznaje się żadnych uprawnień, ale jest to dość łatwe do nadania:
Możliwe jest skonfigurowanie Cloud Build, aby wymagał zatwierdzeń dla wykonania budowy (domyślnie wyłączone).
Gdy wyzwalacz to PR, ponieważ każdy może składać PR do publicznych repozytoriów, byłoby bardzo niebezpiecznie po prostu zezwolić na wykonanie wyzwalacza z dowolnym PR. Dlatego domyślnie wykonanie będzie automatyczne tylko dla właścicieli i współpracowników, a aby wykonać wyzwalacz z PR innych użytkowników, właściciel lub współpracownik musi skomentować /gcbrun
.
Połączenia można tworzyć przez:
GitHub: Pojawi się monit OAuth o pozwolenie na uzyskanie tokena Github, który będzie przechowywany w Secret Manager.
GitHub Enterprise: Poprosi o zainstalowanie GithubApp. Zostanie utworzony i przechowany w tym projekcie token uwierzytelniający z hosta GitHub Enterprise jako sekret Secret Manager.
GitLab / Enterprise: Musisz podać token dostępu API i token dostępu do odczytu API, które będą przechowywane w Secret Manager.
Gdy połączenie zostanie wygenerowane, możesz go użyć do połączenia repozytoriów, do których konto Github ma dostęp.
Ta opcja jest dostępna przez przycisk:
Zauważ, że repozytoria połączone w ten sposób są dostępne tylko w wyzwalaczach używających 2. generacji.
To nie to samo co connection
. To pozwala na różne sposoby uzyskania dostępu do repozytorium Github lub Bitbucket, ale nie generuje obiektu połączenia, ale generuje obiekt repozytorium (1. generacji).
Ta opcja jest dostępna przez przycisk:
Czasami Cloud Build generuje nową przestrzeń dyskową do przechowywania plików dla wyzwalacza. Dzieje się tak na przykład w przykładzie, który oferuje GCP z:
Został utworzony koszyk Storage o nazwie security-devbox_cloudbuild w celu przechowywania pliku .tgz
z plikami do użycia.
Zainstaluj gcloud wewnątrz cloud build:
Możesz znaleźć wrażliwe informacje w konfiguracjach budowy i logach.
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)