GCP - Storage Enum
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
O Google Cloud Platform (GCP) Storage é uma solução de armazenamento baseada em nuvem que fornece armazenamento de objetos altamente durável e disponível para dados não estruturados. Ele oferece várias classes de armazenamento com base em desempenho, disponibilidade e custo, incluindo Standard, Nearline, Coldline e Archive. O GCP Storage também fornece recursos avançados, como políticas de ciclo de vida, versionamento e controle de acesso para gerenciar e proteger dados de forma eficaz.
O bucket pode ser armazenado em uma região, em 2 regiões ou multi-região (padrão).
Standard Storage: Esta é a opção de armazenamento padrão que oferece acesso de alto desempenho e baixa latência a dados frequentemente acessados. É adequada para uma ampla gama de casos de uso, incluindo servir conteúdo de sites, streaming de mídia e hospedagem de pipelines de análise de dados.
Nearline Storage: Esta classe de armazenamento oferece custos de armazenamento mais baixos e custos de acesso ligeiramente mais altos do que o Standard Storage. É otimizada para dados acessados com pouca frequência, com uma duração mínima de armazenamento de 30 dias. É ideal para fins de backup e arquivamento.
Coldline Storage: Esta classe de armazenamento é otimizada para armazenamento de longo prazo de dados acessados com pouca frequência, com uma duração mínima de armazenamento de 90 dias. Oferece custos de armazenamento mais baixos do que o Nearline Storage, mas com custos de acesso mais altos.
Archive Storage: Esta classe de armazenamento é projetada para dados frios que são acessados muito raramente, com uma duração mínima de armazenamento de 365 dias. Oferece os custos de armazenamento mais baixos de todas as opções de armazenamento do GCP, mas com os custos de acesso mais altos. É adequada para retenção de longo prazo de dados que precisam ser armazenados por razões de conformidade ou regulamentação.
Autoclass: Se você não sabe quanto vai acessar os dados, pode selecionar Autoclass e o GCP mudará automaticamente o tipo de armazenamento para você a fim de minimizar custos.
Por padrão, é recomendado controlar o acesso via IAM, mas também é possível habilitar o uso de ACLs. Se você optar por usar apenas IAM (padrão) e 90 dias se passarem, você não poderá habilitar ACLs para o bucket.
É possível habilitar o versionamento, isso salvará versões antigas do arquivo dentro do bucket. É possível configurar o número de versões que você deseja manter e até mesmo quanto tempo você deseja que as versões não atuais (versões antigas) permaneçam. O recomendado é 7 dias para o tipo Standard.
Os metadados de uma versão não atual são mantidos. Além disso, as ACLs das versões não atuais também são mantidas, então versões mais antigas podem ter ACLs diferentes da versão atual.
Saiba mais na docs.
Indique por quanto tempo você deseja proibir a exclusão de Objetos dentro do bucket (muito útil para conformidade, pelo menos). Apenas uma das políticas de versionamento ou retenção pode ser habilitada ao mesmo tempo.
Por padrão, os objetos são criptografados usando chaves gerenciadas pelo Google, mas você também pode usar uma chave do KMS.
É possível dar acesso a usuários externos (logados no GCP ou não) ao conteúdo dos buckets. Por padrão, quando um bucket é criado, ele terá desativada a opção de expor publicamente o bucket, mas com permissões suficientes, isso pode ser alterado.
O formato de uma URL para acessar um bucket é https://storage.googleapis.com/<bucket-name>
ou https://<bucket_name>.storage.googleapis.com
(ambos são válidos).
Uma chave HMAC é um tipo de credencial e pode ser associada a uma conta de serviço ou a uma conta de usuário no Cloud Storage. Você usa uma chave HMAC para criar assinaturas que são então incluídas em solicitações ao Cloud Storage. As assinaturas mostram que uma dada solicitação é autorizada pelo usuário ou conta de serviço.
As chaves HMAC têm duas partes principais, um ID de acesso e um segredo.
Access ID: Uma string alfanumérica vinculada a um serviço ou conta de usuário específico. Quando vinculada a uma conta de serviço, a string tem 61 caracteres de comprimento, e quando vinculada a uma conta de usuário, a string tem 24 caracteres de comprimento. O seguinte mostra um exemplo de um ID de acesso:
GOOGTS7C7FUP3AIRVJTE2BCDKINBTES3HC2GY5CBFJDCQ2SYHV6A6XXVTJFSA
Secret: Uma string codificada em Base-64 de 40 caracteres que está vinculada a um ID de acesso específico. Um segredo é uma chave pré-compartilhada que apenas você e o Cloud Storage conhecem. Você usa seu segredo para criar assinaturas como parte do processo de autenticação. O seguinte mostra um exemplo de um segredo:
bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ
Tanto o ID de acesso quanto o segredo identificam exclusivamente uma chave HMAC, mas o segredo é uma informação muito mais sensível, porque é usado para criar assinaturas.
Se você receber um erro de permissão negada ao listar os buckets, ainda pode ter acesso ao conteúdo. Então, agora que você conhece a convenção de nomes dos buckets, pode gerar uma lista de nomes possíveis e tentar acessá-los:
Com permissões storage.objects.list
e storage.objects.get
, você deve ser capaz de enumerar todas as pastas e arquivos do bucket para baixá-los. Você pode conseguir isso com este script Python:
Na página a seguir, você pode verificar como abusar das permissões de armazenamento para escalar privilégios:
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)