GCP - Cloud Run Enum

Wesprzyj HackTricks

Cloud Run

Cloud Run to zarządzana platforma obliczeniowa bezserwerowa, która pozwala uruchamiać kontenery bezpośrednio na skalowalnej infrastrukturze Google.

Możesz uruchamiać swój kontener lub Jeśli korzystasz z Go, Node.js, Python, Java, .NET Core lub Ruby, możesz skorzystać z opcji wdrożenia opartego na źródle, która buduje kontener za Ciebie.

Google zbudował Cloud Run, aby dobrze współpracował z innymi usługami w Google Cloud, dzięki czemu możesz budować pełnowymiarowe 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. Służą do uruchamiania kodu reagującego na żądania sieciowe lub zdarzenia.

  • Zadania Cloud Run. Służą do uruchamiania kodu, który wykonuje pracę (zadanie) i kończy działanie po zakończeniu pracy.

Usługa Cloud Run

Google Cloud Run to kolejna oferowana usługa bezserwerowa, w której można szukać zmiennych środowiskowych. Cloud Run tworzy mały serwer WWW, domyślnie działający na porcie 8080 wewnątrz kontenera, który czeka na żądanie HTTP GET. Po otrzymaniu żądania uruchamiane jest zadanie, a dziennik zadania jest wyprowadzany poprzez odpowiedź HTTP.

Istotne szczegóły

  • Domyślnie dostęp do serwera WWW jest publiczny, ale można go również ograniczyć do ruchu wewnętrznego (VPC...) Ponadto uwierzytelnienie do kontaktu z serwerem WWW może być zezwala na wszystkich lub wymagać uwierzytelnienia za pomocą IAM.

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

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

  • Można zdefiniować zmienne środowiskowe w postaci tekstu jawnego dla wykonania, a nawet zamontować tajne klucze chmury lub dodać tajne klucze chmury 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://<nazwa-usługi>-<losowy>.a.run.app

  • Usługa Run może mieć więcej niż 1 wersję lub rewizję, i rozdzielać ruch między kilkoma rewizjami.

Wyliczenie

# 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>

Zadania Cloud Run

Zadania Cloud Run są lepszym rozwiązaniem dla kontenerów, które działają do zakończenia 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 sieciowego. Zamiast tego, kontenery z zadaniami powinny zakończyć działanie po zakończeniu pracy.

Wyliczenie

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żyć uprawnienia chmury Run do eskalacji uprawnień:

GCP - Run Privesc

Dostęp nieuwierzytelniony

GCP - Cloud Run Unauthenticated Enum

Po wykorzystaniu

GCP - Cloud Run Post Exploitation

Trwałość

GCP - Cloud Run Persistence

Odnośniki

Wesprzyj HackTricks

Last updated