GCP - Cloud Run Enum

Support HackTricks

Cloud Run

Cloud Run은 Google의 확장 가능한 인프라 위에서 컨테이너를 실행할 수 있는 서버리스 관리 컴퓨팅 플랫폼입니다.

컨테이너를 실행할 수 있으며, Go, Node.js, Python, Java, .NET Core 또는 Ruby를 사용하는 경우, 컨테이너를 자동으로 빌드하는 소스 기반 배포 옵션을 사용할 수 있습니다.

Google은 Cloud Run이 Google Cloud의 다른 서비스와 잘 작동하도록 구축했습니다. 따라서 전체 기능을 갖춘 애플리케이션을 구축할 수 있습니다.

Services and jobs

Cloud Run에서 코드는 _서비스_로 지속적으로 실행되거나 _작업_으로 실행될 수 있습니다. 서비스와 작업 모두 동일한 환경에서 실행되며 Google Cloud의 다른 서비스와 동일한 통합을 사용할 수 있습니다.

  • Cloud Run 서비스. 웹 요청이나 이벤트에 응답하는 코드를 실행하는 데 사용됩니다.

  • Cloud Run 작업. 작업을 수행하고 작업이 완료되면 종료되는 코드를 실행하는 데 사용됩니다.

Cloud Run Service

Google Cloud Run은 환경 변수를 검색할 수 있는 또 다른 서버리스 서비스입니다. Cloud Run은 기본적으로 컨테이너 내부의 포트 8080에서 HTTP GET 요청을 기다리는 작은 웹 서버를 생성합니다. 요청이 수신되면 작업이 실행되고 작업 로그가 HTTP 응답을 통해 출력됩니다.

Relevant details

  • 기본적으로, 웹 서버에 대한 접근공개되지만, 내부 트래픽(VPC...)으로 제한할 수도 있습니다. 또한, 웹 서버에 연락하기 위한 인증모두 허용하거나 IAM을 통한 인증 요구로 설정할 수 있습니다.

  • 기본적으로 암호화Google 관리 키를 사용하지만, KMSCMEK(고객 관리 암호화 키)를 선택할 수도 있습니다.

  • 기본적으로, 사용되는 서비스 계정Compute Engine 기본 계정으로, 프로젝트에 대해 편집자 접근 권한을 가지며 cloud-platform 범위를 가집니다.

  • 실행을 위해 평문 환경 변수를 정의할 수 있으며, 클라우드 비밀을 마운트하거나 환경 변수에 클라우드 비밀을 추가할 수도 있습니다.

  • Cloud SQL과의 연결 추가파일 시스템 마운트도 가능합니다.

  • 배포된 서비스의 URL은 **https://<svc-name>-<random>.a.run.app**와 유사합니다.

  • Run 서비스는 1개 이상의 버전 또는 수정본을 가질 수 있으며, 여러 수정본 간에 트래픽을 분할할 수 있습니다.

Enumeration

# 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 작업은 완료될 때까지 실행되고 요청을 제공하지 않는 컨테이너에 더 적합합니다. 작업은 요청을 제공하거나 포트를 수신할 수 있는 기능이 없습니다. 이는 Cloud Run 서비스와 달리 작업은 웹 서버를 포함해서는 안 된다는 것을 의미합니다. 대신, 작업 컨테이너는 완료되면 종료되어야 합니다.

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>

권한 상승

다음 페이지에서 클라우드 런 권한을 악용하여 권한을 상승시키는 방법을 확인할 수 있습니다:

GCP - Run Privesc

인증되지 않은 접근

GCP - Cloud Run Unauthenticated Enum

포스트 익스플로잇

GCP - Cloud Run Post Exploitation

지속성

GCP - Cloud Run Persistence

참고자료

HackTricks 지원하기

Last updated