GCP - Enumeração de Cloud Functions
Reading time: 5 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.
Cloud Functions
Google Cloud Functions são projetadas para hospedar seu código, que é executado em resposta a eventos, sem necessitar da gestão de um sistema operacional host. Além disso, essas funções suportam o armazenamento de variáveis de ambiente, que o código pode utilizar.
Armazenamento
O código das Cloud Functions é armazenado no GCP Storage. Portanto, qualquer pessoa com acesso de leitura sobre os buckets no GCP poderá ler o código das Cloud Functions.
O código é armazenado em um bucket como um dos seguintes:
gcf-sources-<number>-<region>/<function-name>-<uuid>/version-<n>/function-source.zip
gcf-v2-sources-<number>-<region>/<function-name>function-source.zip
Por exemplo:
gcf-sources-645468741258-us-central1/function-1-003dcbdf-32e1-430f-a5ff-785a6e238c76/version-4/function-source.zip
warning
Qualquer usuário com privilegios de leitura sobre o bucket que armazena a Cloud Function pode ler o código executado.
Registro de Artefatos
Se a função em nuvem estiver configurada para que o contêiner Docker executado seja armazenado dentro de um repositório do Artifact Registry dentro do projeto, qualquer um com acesso de leitura sobre o repositório poderá baixar a imagem e verificar o código-fonte. Para mais informações, consulte:
SA
Se não especificado, por padrão a Conta de Serviço Padrão do App Engine com permissões de Editor sobre o projeto será anexada à Cloud Function.
Gatilhos, URL e Autenticação
Quando uma Cloud Function é criada, o gatilho precisa ser especificado. Um comum é HTTPS, isso criará uma URL onde a função pode ser acionada via navegação na web.
Outros gatilhos são pub/sub, Storage, Filestore...
O formato da URL é https://<region>-<project-gcp-name>.cloudfunctions.net/<func_name>
Quando o gatilho HTTPS é usado, também é indicado se o chamador precisa ter autorização IAM para chamar a Função ou se qualquer um pode apenas chamá-la:
.png)
Dentro da Cloud Function
O código é baixado dentro da pasta /workspace
com os mesmos nomes de arquivo que os arquivos têm na Cloud Function e é executado com o usuário www-data
.
O disco não está montado como somente leitura.
Enumeração
# List functions
gcloud functions list
gcloud functions describe <func_name> # Check triggers to see how is this function invoked
gcloud functions get-iam-policy <func_name>
# Get logs of previous runs. By default, limits to 10 lines
gcloud functions logs read <func_name> --limit [NUMBER]
# Call a function
curl https://<region>-<project>.cloudfunctions.net/<func_name>
gcloud functions call <func_name> --data='{"message": "Hello World!"}'
# If you know the name of projects you could try to BF cloud functions names
# Get events that could be used to trigger a cloud function
gcloud functions event-types list
# Access function with authentication
curl -X POST https://<region>-<project>.cloudfunctions.net/<func_name> \
-H "Authorization: bearer $(gcloud auth print-identity-token)" \
-H "Content-Type: application/json" \
-d '{}'
Escalação de Privilégios
Na página a seguir, você pode verificar como abusar das permissões de funções em nuvem para escalar privilégios:
Acesso Não Autenticado
GCP - Cloud Functions Unauthenticated Enum
Pós Exploração
GCP - Cloud Functions Post Exploitation
Persistência
GCP - Cloud Functions Persistence
Referências
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.