GCP - Storage Privesc

Aprenda hacking no AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras formas de apoiar o HackTricks:

Armazenamento

Informações Básicas:

pageGCP - Storage Enum

storage.objects.get

Esta permissão permite que você baixe arquivos armazenados dentro do Cloud Storage. Isso pode permitir que você escale privilégios porque, em algumas ocasiões, informações sensíveis são salvas lá. Além disso, alguns serviços do GCP armazenam suas informações em buckets:

  • GCP Composer: Quando você cria um Ambiente Composer, o código de todas as DAGs será salvo dentro de um bucket. Essas tarefas podem conter informações interessantes em seu código.

  • GCR (Container Registry): A imagem dos contêineres é armazenada dentro de buckets, o que significa que, se você pode ler os buckets, será capaz de baixar as imagens e procurar por vazamentos e/ou código-fonte.

storage.objects.setIamPolicy

Você pode se conceder permissão para abusar de qualquer um dos cenários anteriores desta seção.

storage.buckets.setIamPolicy

Para um exemplo de como modificar permissões com esta permissão, confira esta página:

pageGCP - Public Buckets Privilege Escalation

storage.hmacKeys.create

O recurso de "interoperabilidade" do Cloud Storage, projetado para interações entre nuvens como com o AWS S3, envolve a criação de chaves HMAC para Contas de Serviço e usuários. Um atacante pode explorar isso gerando uma chave HMAC para uma Conta de Serviço com privilégios elevados, assim escalando privilégios dentro do Cloud Storage. Enquanto as chaves HMAC associadas a usuários só podem ser recuperadas através do console web, as chaves de acesso e secretas permanecem acessíveis perpetuamente, permitindo um armazenamento de acesso de backup potencial. Por outro lado, as chaves HMAC vinculadas a Contas de Serviço são acessíveis via API, mas suas chaves de acesso e secretas não são recuperáveis após a criação, adicionando uma camada de complexidade para acesso contínuo.

# Create key
gsutil hmac create <sa-email>

# Configure gsutil to use it
gsutil config -a

# Use it
gsutil ls gs://[BUCKET_NAME]

Outro script de exploração para este método pode ser encontrado aqui.

storage.objects.create, storage.objects.delete = Permissões de Escrita no Storage

Para criar um novo objeto dentro de um bucket, você precisa de storage.objects.create e, de acordo com a documentação, você também precisa de storage.objects.delete para modificar um objeto existente.

Uma exploração comum de buckets onde você pode escrever na nuvem é no caso de o bucket estar salvando arquivos de servidor web, você pode ser capaz de armazenar novo código que será usado pela aplicação web.

Composer

Composer é o Apache Airflow gerenciado dentro do GCP. Ele possui várias características interessantes:

  • Ele roda dentro de um cluster GKE, então o SA que o cluster usa é acessível pelo código rodando dentro do Composer

  • Ele armazena o código em um bucket, portanto, qualquer um com acesso de escrita sobre esse bucket vai poder mudar/adicionar um código DGA (o código que o Apache Airflow executará) Então, se você tem acesso de escrita sobre o bucket que o Composer usa para armazenar o código, você pode privesc para o SA rodando no cluster GKE.

Cloud Functions

  • O código das Cloud Functions é armazenado no Storage, então sobrescrevê-lo possibilita a execução de código arbitrário.

App Engine

  • O código-fonte do App Engine é armazenado em buckets, sobrescrever o código poderia possibilitar a execução de código arbitrário. ISSO NÃO É POSSÍVEL

  • Parece que as camadas do container são armazenadas no bucket, talvez mudando essas?

GCR

  • Google Container Registry armazena as imagens dentro de buckets, se você pode escrever nesses buckets você pode ser capaz de mover-se lateralmente para onde esses buckets estão sendo executados.

  • O bucket usado pelo GCR terá uma URL similar a gs://<eu/usa/asia/nothing>.artifacts.<project>.appspot.com (Os subdomínios de nível superior são especificados aqui).

Referências

Aprenda hacking no AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras formas de apoiar o HackTricks:

Última actualización