GCP - Cloud Run Enum

Tip

Ucz się & ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Wspieraj HackTricks

Cloud Run

Cloud Run to zarządzana platforma obliczeniowa bezserwerowa, która pozwala na uruchamianie kontenerów bezpośrednio na skalowalnej infrastrukturze Google’a.

Możesz uruchomić swój kontener lub, jeśli używasz Go, Node.js, Pythona, Javy, .NET Core lub Rubiego, możesz skorzystać z opcji source-based deployment, która buduje kontener za Ciebie.

Google stworzył Cloud Run, aby dobrze współpracował z innymi usługami w Google Cloud, dzięki czemu możesz budować aplikacje z pełną funkcjonalnością.

Usługi i zadania

Na Cloud Run Twój kod może działać ciągle jako usługa lub jako zadanie. Zarówno usługi, jak i zadania działają w tym samym środowisku i mogą korzystać z tych samych integracji z innymi usługami w Google Cloud.

  • Usługi Cloud Run. Używane do uruchamiania kodu, który odpowiada na żądania sieciowe lub zdarzenia.
  • Zadania Cloud Run. Używane do uruchamiania kodu, który wykonuje pracę (zadanie) i kończy działanie, gdy praca jest zakończona.

Usługa Cloud Run

Google Cloud Run to kolejna oferta bezserwerowa, w której możesz również wyszukiwać zmienne środowiskowe. Cloud Run tworzy mały serwer WWW, działający domyślnie na porcie 8080 wewnątrz kontenera, który czeka na żądanie HTTP GET. Gdy żądanie zostanie odebrane, wykonywane jest zadanie, a logi zadania są zwracane w odpowiedzi HTTP.

Istotne szczegóły

  • Domyślnie dostęp do serwera WWW jest publiczny, ale może być również ograniczony do ruchu wewnętrznego (VPC…)
    Ponadto uwierzytelnienie do kontaktu z serwerem WWW może być zezwalające na wszystkich lub wymagać uwierzytelnienia za pomocą IAM.
  • Domyślnie szyfrowanie używa klucza zarządzanego przez Google, ale można również wybrać CMEK (Customer Managed Encryption Key) z KMS.
  • Domyślnie używane jest konto usługi, które jest domyślnym kontem Compute Engine, które ma dostęp Editor do projektu i ma zakres cloud-platform.
  • Możliwe jest zdefiniowanie zmiennych środowiskowych w postaci czystego tekstu do wykonania, a nawet zamontowanie tajemnic chmurowych lub dodanie tajemnic chmurowych do zmiennych środowiskowych.
  • Możliwe jest również dodanie połączeń z Cloud SQL i zamontowanie systemu plików.
  • Adresy URL wdrożonych usług są podobne do https://<svc-name>-<random>.a.run.app
  • Usługa Run może mieć więcej niż 1 wersję lub rewizję, a także dzielić ruch między kilka rewizji.

Enumeracja

# List services
gcloud run services list
gcloud run services list --platform=managed
gcloud run services list --platform=gke

# Get info of a service
gcloud run services describe --region <region> <svc-name>

# Get info of all the services together
gcloud run services list --format=yaml
gcloud run services list --platform=managed --format=json
gcloud run services list --platform=gke --format=json

# Get policy
gcloud run services get-iam-policy --region <region> <svc-name>

# Get revisions
gcloud run revisions list --region <region>
gcloud run revisions describe --region <region> <revision>

# Get domains
gcloud run domain-mappings list
gcloud run domain-mappings describe <name>

# Attempt to trigger a job unauthenticated
curl <url>

# Attempt to trigger a job with your current gcloud authorization
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" <url>

Cloud Run Jobs

Cloud Run jobs są lepszym rozwiązaniem dla kontenerów, które kończą działanie i nie obsługują żądań. Zadania nie mają możliwości obsługi żądań ani nasłuchiwania na porcie. Oznacza to, że w przeciwieństwie do usług Cloud Run, zadania nie powinny zawierać serwera webowego. Zamiast tego kontenery z zadaniami powinny zakończyć działanie, gdy skończą.

Enumeration

gcloud beta run jobs list
gcloud beta run jobs describe --region <region> <job-name>
gcloud beta run jobs get-iam-policy --region <region> <job-name>

Eskalacja Uprawnień

Na poniższej stronie możesz sprawdzić, jak nadużywać uprawnień cloud run, aby eskalować uprawnienia:

GCP - Run Privesc

Dostęp bez uwierzytelnienia

GCP - Cloud Run Unauthenticated Enum

Po Eksploatacji

GCP - Cloud Run Post Exploitation

Utrzymywanie

GCP - Cloud Run Persistence

Odniesienia

Tip

Ucz się & ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Wspieraj HackTricks