GCP - Cloud Run Enum

Support 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 wdrożenia opartego na źródle, 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ć w pełni funkcjonalne aplikacje.

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 wszystko lub wymagać uwierzytelnienia za pomocą IAM.

  • Domyślnie szyfrowanie używa klucza zarządzanego przez Google, ale można również wybrać CMEK (Klucz Szyfrowania Zarządzany przez Klienta) z KMS.

  • Domyślnie używane jest konto usługi, które jest domyślnym kontem Compute Engine, które ma dostęp Edytora do projektu i ma zakres cloud-platform.

  • Możliwe jest zdefiniowanie zmiennych środowiskowych w postaci czystego tekstu do wykonania, a nawet zamontowanie tajemnic w chmurze lub dodanie tajemnic w chmurze do zmiennych środowiskowych.

  • Możliwe jest również dodanie połączeń z Cloud SQL i zamontowanie systemu plików.

  • URL-e 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 ruch może być dzielony 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 WWW. Zamiast tego kontenery zadań 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 następnej 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

Referencje

Wsparcie dla HackTricks

Last updated