GCP - Cloud Functions Enum
Cloud Functions
Google Cloud Functions são projetadas para hospedar seu código, que é executado em resposta a eventos, sem a necessidade de gerenciar 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 aos 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
Qualquer usuário com privilégios de leitura sobre o bucket que armazena a Cloud Function poderá ler o código executado.
Artifact Registry
Se a cloud function estiver configurada para que o contêiner Docker executado seja armazenado dentro de um repositório Artifact Registry dentro do projeto, qualquer pessoa com acesso de leitura ao repositório poderá baixar a imagem e verificar o código-fonte. Para mais informações, confira:
GCP - Artifact Registry EnumSA
Se não especificado, por padrão a App Engine Default Service Account com permissões de Editor sobre o projeto será anexada à Cloud Function.
Triggers, URL & Autenticação
Quando uma Cloud Function é criada, o trigger precisa ser especificado. Um comum é HTTPS, isso criará uma URL onde a função pode ser acionada via navegação web. Outros triggers são pub/sub, Storage, Filestore...
O formato da URL é https://<region>-<project-gcp-name>.cloudfunctions.net/<func_name>
Quando o trigger HTTPS é usado, também é indicado se o chamador precisa ter autorização IAM para chamar a Function ou se qualquer pessoa pode simplesmente chamá-la:
Dentro da Cloud Function
O código é baixado dentro da pasta /workspace
com os mesmos nomes de arquivos que os arquivos têm na Cloud Function e é executado com o usuário www-data
.
O disco não é montado como somente leitura.
Enumeração
Escalação de Privilégios
Na página a seguir, você pode verificar como abusar das permissões de cloud function para escalar privilégios:
GCP - Cloudfunctions PrivescAcesso Não Autenticado
GCP - Cloud Functions Unauthenticated EnumPós-Explotação
GCP - Cloud Functions Post ExploitationPersistência
GCP - Cloud Functions PersistenceReferências
Last updated