From 269d97a954d7429b27f79c61a146204765c6fe80 Mon Sep 17 00:00:00 2001 From: Translator Date: Thu, 12 Feb 2026 13:06:23 +0000 Subject: [PATCH] Translated ['', 'src/pentesting-cloud/aws-security/aws-services/aws-s3-a --- .../aws-s3-athena-and-glacier-enum.md | 158 +++++++++--------- 1 file changed, 79 insertions(+), 79 deletions(-) diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-s3-athena-and-glacier-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-s3-athena-and-glacier-enum.md index 66f9bd5aa..4c3a96e96 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-s3-athena-and-glacier-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-s3-athena-and-glacier-enum.md @@ -1,32 +1,32 @@ -# AWS - S3, Athena & Glacier Enum +# AWS - S3, Athena & Glacier Enumeração {{#include ../../../banners/hacktricks-training.md}} ## S3 -Amazon S3 é um serviço que permite que você **armazenar grandes quantidades de dados**. +Amazon S3 é um serviço que permite que você **armazene grandes quantidades de dados**. -Amazon S3 fornece várias opções para alcançar a **proteção** de dados em repouso. As opções incluem **Permissão** (Política), **Criptografia** (Lado do Cliente e Lado do Servidor), **Versionamento de Bucket** e **exclusão baseada em MFA**. O **usuário pode habilitar** qualquer uma dessas opções para alcançar a proteção de dados. A **replicação de dados** é uma funcionalidade interna da AWS onde **S3 replica automaticamente cada objeto em todas as Zonas de Disponibilidade** e a organização não precisa habilitá-la nesse caso. +Amazon S3 oferece múltiplas opções para alcançar a **proteção** de dados em repouso. As opções incluem **Permissão** (Policy), **Criptografia** (Client and Server Side), **Bucket Versioning** e **MFA based delete**. O **usuário pode ativar** qualquer uma dessas opções para obter proteção dos dados. **Data replication** é uma funcionalidade interna da AWS onde **S3 automaticamente replica cada objeto através de todas as Availability Zones** e a organização não precisa habilitá-la nesse caso. -Com permissões baseadas em recursos, você pode definir permissões para subdiretórios do seu bucket separadamente. +Com permissões baseadas em recursos, você pode definir permissões para sub-diretórios do seu bucket separadamente. -### Versionamento de Bucket e exclusão baseada em MFA +### Bucket Versioning and MFA based delete -Quando o versionamento de bucket está habilitado, qualquer ação que tenta alterar um arquivo dentro de um arquivo gerará uma nova versão do arquivo, mantendo também o conteúdo anterior do mesmo. Portanto, não sobrescreverá seu conteúdo. +Quando o Bucket Versioning está habilitado, qualquer ação que tente alterar um arquivo no bucket gerará uma nova versão do arquivo, mantendo também o conteúdo anterior. Portanto, não sobrescreverá o conteúdo. -Além disso, a exclusão baseada em MFA impedirá que versões de arquivos no bucket S3 sejam excluídas e também que o Versionamento de Bucket seja desativado, de modo que um atacante não poderá alterar esses arquivos. +Além disso, o MFA based delete impedirá que versões de arquivos no bucket S3 sejam excluídas e também que o Bucket Versioning seja desabilitado, então um atacante não conseguirá alterar esses arquivos. -### Logs de Acesso do S3 +### S3 Access logs -É possível **habilitar o login de acesso do S3** (que por padrão está desativado) para algum bucket e salvar os logs em um bucket diferente para saber quem está acessando o bucket (ambos os buckets devem estar na mesma região). +É possível **ativar S3 access logging** (que por padrão está desabilitado) em um bucket e salvar os logs em um bucket diferente para saber quem está acessando o bucket (ambos os buckets devem estar na mesma região). -### URLs Presignadas do S3 +### S3 Presigned URLs -É possível gerar uma URL presignada que pode ser usada para **acessar o arquivo especificado** no bucket. Uma **URL presignada se parece com isso**: +É possível gerar um presigned URL que normalmente pode ser usado para **acessar o arquivo especificado** no bucket. Um **presigned URL se parece com isto**: ``` https://.s3.us-east-1.amazonaws.com/asd.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAUUE8GZC4S5L3TY3P%2F20230227%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20230227T142551Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Security-Token=IQoJb3JpZ2luX2VjELf%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCXVzLWVhc3QtMSJHMEUCIBhQpdETJO3HKKDk2hjNIrPWwBE8gZaQccZFV3kCpPCWAiEAid3ueDtFFU%2FOQfUpvxYTGO%2BHoS4SWDMUrQAE0pIaB40qggMIYBAAGgwzMTgxNDIxMzg1NTMiDJLI5t7gr2EGxG1Y5CrfAioW0foHIQ074y4gvk0c%2B%2Fmqc7cNWb1njQslQkeePHkseJ3owzc%2FCwkgE0EuZTd4mw0aJciA2XIbJRCLPWTb%2FCBKPnIMJ5aBzIiA2ltsiUNQTTUxYmEgXZoJ6rFYgcodnmWW0Et4Xw59UlHnCDB2bLImxPprriyCzDDCD6nLyp3J8pFF1S8h3ZTJE7XguA8joMs4%2B2B1%2FeOZfuxXKyXPYSKQOOSbQiHUQc%2BFnOfwxleRL16prWk1t7TamvHR%2Bt3UgMn5QWzB3p8FgWwpJ6GjHLkYMJZ379tkimL1tJ7o%2BIod%2FMYrS7LDCifP9d%2FuYOhKWGhaakPuJKJh9fl%2B0vGl7kmApXigROxEWon6ms75laXebltsWwKcKuYca%2BUWu4jVJx%2BWUfI4ofoaGiCSaKALTqwu4QNBRT%2BMoK6h%2BQa7gN7JFGg322lkxRY53x27WMbUE4unn5EmI54T4dWt1%2Bg8ljDS%2BvKfBjqmAWRwuqyfwXa5YC3xxttOr3YVvR6%2BaXpzWtvNJQNnb6v0uI3%2BTtTexZkJpLQYqFcgZLQSxsXWSnf988qvASCIUhAzp2UnS1uqy7QjtD5T73zksYN2aesll7rvB80qIuujG6NOdHnRJ2M5%2FKXXNo1Yd15MtzPuSjRoSB9RSMon5jFu31OrQnA9eCUoawxbB0nHqwK8a43CKBZHhA8RoUAJW%2B48EuFsp3U%3D&X-Amz-Signature=3436e4139e84dbcf5e2e6086c0ebc92f4e1e9332b6fda24697bc339acbf2cdfa ``` -Uma URL pré-assinada pode ser **criada a partir do cli usando credenciais de um principal com acesso ao objeto** (se a conta que você usa não tiver acesso, uma URL pré-assinada mais curta será criada, mas será inútil) +Uma presigned URL pode ser **criada a partir do cli usando credentials de um principal com acesso ao object** (se a account que você usar não tiver acesso, uma presigned URL mais curta será criada, mas será inútil) ```bash aws s3 presign --region 's3:///' ``` @@ -42,99 +42,99 @@ Params={'Bucket': 'BUCKET_NAME', 'Key': 'OBJECT_KEY'}, ExpiresIn=3600 ) ``` -### Mecanismos de Criptografia do S3 +### Mecanismos de criptografia do S3 -**DEK significa Chave de Criptografia de Dados** e é a chave que é sempre gerada e usada para criptografar dados. +**DEK means Data Encryption Key** e é a chave que é sempre gerada e usada para criptografar dados.
-Criptografia do lado do servidor com chaves gerenciadas pelo S3, SSE-S3 +Server-side encryption with S3 managed keys, SSE-S3 -Esta opção requer configuração mínima e toda a gestão das chaves de criptografia utilizadas é gerenciada pela AWS. Tudo o que você precisa fazer é **fazer o upload dos seus dados e o S3 cuidará de todos os outros aspectos**. Cada bucket em uma conta S3 é atribuído a uma chave de bucket. +Esta opção requer configuração mínima e todo o gerenciamento das chaves de criptografia é feito pela AWS. Tudo o que você precisa fazer é **enviar seus dados e o S3 cuidará de todos os outros aspectos**. Cada bucket em uma conta S3 recebe uma bucket key. -- Criptografia: -- Dados do objeto + DEK em texto simples criado --> Dados criptografados (armazenados dentro do S3) -- DEK em texto simples criado + Chave Mestra do S3 --> DEK criptografado (armazenado dentro do S3) e o texto em claro é excluído da memória -- Descriptografia: -- DEK criptografado + Chave Mestra do S3 --> DEK em texto claro -- DEK em texto claro + Dados criptografados --> Dados do objeto +- Encryption: +- Object Data + created plaintext DEK --> Encrypted data (stored inside S3) +- Created plaintext DEK + S3 Master Key --> Encrypted DEK (stored inside S3) and plain text is deleted from memory +- Decryption: +- Encrypted DEK + S3 Master Key --> Plaintext DEK +- Plaintext DEK + Encrypted data --> Object Data -Por favor, note que neste caso **a chave é gerenciada pela AWS** (rotação apenas a cada 3 anos). Se você usar sua própria chave, poderá rotacionar, desativar e aplicar controle de acesso. +Por favor, note que neste caso **a chave é gerenciada pela AWS** (rotacionamento apenas a cada 3 anos). Se você usar sua própria chave você poderá rotacionar, desabilitar e aplicar controle de acesso.
-Criptografia do lado do servidor com chaves gerenciadas pelo KMS, SSE-KMS +Server-side encryption with KMS managed keys, SSE-KMS -Este método permite que o S3 use o serviço de gerenciamento de chaves para gerar suas chaves de criptografia de dados. O KMS oferece uma flexibilidade muito maior sobre como suas chaves são gerenciadas. Por exemplo, você pode desativar, rotacionar e aplicar controles de acesso ao CMK, e ordenar contra seu uso usando o AWS Cloud Trail. +Este método permite que o S3 utilize o Key Management Service para gerar suas data encryption keys. KMS oferece muito mais flexibilidade sobre como suas chaves são gerenciadas. Por exemplo, você pode desabilitar, rotacionar e aplicar controles de acesso ao CMK, e auditar seu uso usando AWS Cloud Trail. -- Criptografia: -- S3 solicita chaves de dados ao KMS CMK -- O KMS usa um CMK para gerar o par DEK em texto simples e DEK criptografado e os envia para o S3 -- O S3 usa a chave em texto simples para criptografar os dados, armazena os dados criptografados e a chave criptografada e exclui da memória a chave em texto claro -- Descriptografia: -- O S3 solicita ao KMS para descriptografar a chave de dados criptografada do objeto -- O KMS descriptografa a chave de dados com o CMK e a envia de volta ao S3 -- O S3 descriptografa os dados do objeto +- Encryption: +- S3 request data keys from KMS CMK +- KMS uses a CMK to generate the pair DEK plaintext and DEK encrypted and send them to S£ +- S3 uses the paintext key to encrypt the data, store the encrypted data and the encrypted key and deletes from memory the plain text key +- Decryption: +- S3 ask to KMS to decrypt the encrypted data key of the object +- KMS decrypt the data key with the CMK and send it back to S3 +- S3 decrypts the object data
-Criptografia do lado do servidor com chaves fornecidas pelo cliente, SSE-C +Server-side encryption with customer provided keys, SSE-C -Esta opção oferece a oportunidade de fornecer sua própria chave mestra que você pode já estar usando fora da AWS. Sua chave fornecida pelo cliente seria então enviada com seus dados para o S3, onde o S3 realizaria a criptografia para você. +Esta opção permite que você forneça sua própria master key que talvez já utilize fora da AWS. Sua chave fornecida pelo cliente seria então enviada junto com seus dados para o S3, onde o S3 executaria a criptografia para você. -- Criptografia: -- O usuário envia os dados do objeto + chave do cliente para o S3 -- A chave do cliente é usada para criptografar os dados e os dados criptografados são armazenados -- um valor HMAC salgado da chave do cliente também é armazenado para validação futura da chave -- a chave do cliente é excluída da memória -- Descriptografia: -- O usuário envia a chave do cliente -- A chave é validada contra o valor HMAC armazenado -- A chave fornecida pelo cliente é então usada para descriptografar os dados +- Encryption: +- The user sends the object data + Customer key to S3 +- The customer key is used to encrypt the data and the encrypted data is stored +- a salted HMAC value of the customer key is stored also for future key validation +- the customer key is deleted from memory +- Decryption: +- The user send the customer key +- The key is validated against the HMAC value stored +- The customer provided key is then used to decrypt the data
-Criptografia do lado do cliente com KMS, CSE-KMS +Client-side encryption with KMS, CSE-KMS -De forma semelhante ao SSE-KMS, isso também usa o serviço de gerenciamento de chaves para gerar suas chaves de criptografia de dados. No entanto, desta vez o KMS é chamado pelo cliente, não pelo S3. A criptografia ocorre do lado do cliente e os dados criptografados são enviados ao S3 para serem armazenados. +Similar ao SSE-KMS, este também usa o Key Management Service para gerar suas data encryption keys. Porém, desta vez o KMS é chamado pelo cliente, não pelo S3. A criptografia então ocorre no lado do cliente e os dados criptografados são enviados ao S3 para armazenamento. -- Criptografia: -- O cliente solicita uma chave de dados ao KMS -- O KMS retorna o DEK em texto claro e o DEK criptografado com o CMK -- Ambas as chaves são enviadas de volta -- O cliente então criptografa os dados com o DEK em texto claro e envia ao S3 os dados criptografados + o DEK criptografado (que é salvo como metadados dos dados criptografados dentro do S3) -- Descriptografia: -- Os dados criptografados com o DEK criptografado são enviados ao cliente -- O cliente solicita ao KMS para descriptografar a chave criptografada usando o CMK e o KMS envia de volta o DEK em texto claro -- O cliente agora pode descriptografar os dados criptografados +- Encryption: +- Client request for a data key to KMS +- KMS returns the plaintext DEK and the encrypted DEK with the CMK +- Both keys are sent back +- The client then encrypts the data with the plaintext DEK and send to S3 the encrypted data + the encrypted DEK (which is saved as metadata of the encrypted data inside S3) +- Decryption: +- The encrypted data with the encrypted DEK is sent to the client +- The client asks KMS to decrypt the encrypted key using the CMK and KMS sends back the plaintext DEK +- The client can now decrypt the encrypted data
-Criptografia do lado do cliente com chaves fornecidas pelo cliente, CSE-C +Client-side encryption with customer provided keys, CSE-C Usando este mecanismo, você pode utilizar suas próprias chaves fornecidas e usar um cliente AWS-SDK para criptografar seus dados antes de enviá-los ao S3 para armazenamento. -- Criptografia: -- O cliente gera um DEK e criptografa os dados em texto claro -- Em seguida, usando seu próprio CMK personalizado, ele criptografa o DEK -- envia os dados criptografados + DEK criptografado para o S3, onde são armazenados -- Descriptografia: -- O S3 envia os dados criptografados e o DEK -- Como o cliente já possui o CMK usado para criptografar o DEK, ele descriptografa o DEK e, em seguida, usa o DEK em texto claro para descriptografar os dados +- Encryption: +- The client generates a DEK and encrypts the plaintext data +- Then, using it's own custom CMK it encrypts the DEK +- submit the encrypted data + encrypted DEK to S3 where it's stored +- Decryption: +- S3 sends the encrypted data and DEK +- As the client already has the CMK used to encrypt the DEK, it decrypts the DEK and then uses the plaintext DEK to decrypt the data
### **Enumeração** -Uma das principais maneiras tradicionais de comprometer organizações AWS começa comprometendo buckets acessíveis publicamente. **Você pode encontrar** [**enumeradores de buckets públicos nesta página**](../aws-unauthenticated-enum-access/#s3-buckets)**.** +Uma das maneiras tradicionais principais de comprometer organizações AWS começa por comprometer buckets publicamente acessíveis. **Você pode encontrar** [**public buckets enumerators in this page**](../aws-unauthenticated-enum-access/index.html#s3-buckets)**.** ```bash # Get buckets ACLs aws s3api get-bucket-acl --bucket @@ -229,58 +229,58 @@ aws s3api put-object-acl --bucket --key flag --access-control-poli ``` ### dual-stack -Você pode acessar um bucket S3 através de um endpoint dual-stack usando um nome de endpoint de estilo hospedado virtual ou de estilo de caminho. Estes são úteis para acessar o S3 através de IPv6. +Você pode acessar um bucket S3 através de um endpoint dual-stack usando um nome de endpoint no formato virtual hosted-style ou path-style. Esses são úteis para acessar o S3 via IPv6. -Os endpoints dual-stack usam a seguinte sintaxe: +Dual-stack endpoints usam a seguinte sintaxe: - `bucketname.s3.dualstack.aws-region.amazonaws.com` - `s3.dualstack.aws-region.amazonaws.com/bucketname` ### Privesc -Na página a seguir, você pode verificar como **abusar das permissões do S3 para escalar privilégios**: +In the following page you can check how to **abuse S3 permissions to escalate privileges**: {{#ref}} ../aws-privilege-escalation/aws-s3-privesc/README.md {{#endref}} -### Acesso Não Autenticado +### Unauthenticated Access {{#ref}} ../aws-unauthenticated-enum-access/aws-s3-unauthenticated-enum/README.md {{#endref}} -### S3 Pós Exploração +### S3 Post Exploitation {{#ref}} ../aws-post-exploitation/aws-s3-post-exploitation/README.md {{#endref}} -### Persistência +### Persistence {{#ref}} ../aws-persistence/aws-s3-persistence/README.md {{#endref}} -## Outras vulnerabilidades do S3 +## Other S3 vulns -### Problema de Envenenamento de Cache HTTP do S3 +### S3 HTTP Cache Poisoning Issue -[**De acordo com esta pesquisa**](https://rafa.hashnode.dev/exploiting-http-parsers-inconsistencies#heading-s3-http-desync-cache-poisoning-issue), foi possível armazenar em cache a resposta de um bucket arbitrário como se pertencesse a um diferente. Isso poderia ter sido abusado para alterar, por exemplo, as respostas de arquivos javascript e comprometer páginas arbitrárias usando o S3 para armazenar código estático. +[**According to this research**](https://rafa.hashnode.dev/exploiting-http-parsers-inconsistencies#heading-s3-http-desync-cache-poisoning-issue) era possível armazenar em cache a resposta de um bucket arbitrário como se pertencesse a outro diferente. Isso poderia ter sido abusado para alterar, por exemplo, respostas de arquivos javascript e comprometer páginas arbitrárias que usam o S3 para armazenar código estático. ## Amazon Athena -Amazon Athena é um serviço de consulta interativa que facilita a **análise de dados** diretamente no Amazon Simple Storage Service (Amazon **S3**) **usando** SQL padrão. +Amazon Athena é um serviço de consultas interativo que facilita a análise de dados diretamente no Amazon Simple Storage Service (Amazon **S3**) usando SQL padrão. -Você precisa **preparar uma tabela de DB relacional** com o formato do conteúdo que vai aparecer nos buckets S3 monitorados. E então, o Amazon Athena será capaz de popular o DB a partir dos logs, para que você possa consultá-lo. +Você precisa **preparar uma tabela relacional DB** com o formato do conteúdo que vai aparecer nos buckets S3 monitorados. Em seguida, o Amazon Athena poderá popular o DB a partir dos logs, permitindo que você o consulte. -Amazon Athena suporta a **capacidade de consultar dados do S3 que já estão criptografados** e, se configurado para isso, **Athena também pode criptografar os resultados da consulta que podem ser armazenados no S3**. +O Amazon Athena suporta a **capacidade de consultar dados S3 que já estão criptografados** e, se configurado para tal, **o Athena também pode criptografar os resultados da consulta, que então podem ser armazenados no S3**. -**Essa criptografia de resultados é independente dos dados S3 consultados**, o que significa que mesmo que os dados S3 não estejam criptografados, os resultados consultados podem ser criptografados. Alguns pontos a serem observados são que o Amazon Athena suporta apenas dados que foram **criptografados** com os **seguintes métodos de criptografia do S3**, **SSE-S3, SSE-KMS e CSE-KMS**. +**Essa criptografia dos resultados é independente dos dados S3 subjacentes consultados**, o que significa que mesmo que os dados S3 não estejam criptografados, os resultados consultados podem ser criptografados. Alguns pontos a observar: o Amazon Athena só suporta dados que foram **criptografados** com os **seguintes métodos de criptografia S3**, **SSE-S3, SSE-KMS, and CSE-KMS**. -SSE-C e CSE-E não são suportados. Além disso, é importante entender que o Amazon Athena só executará consultas contra **objetos criptografados que estão na mesma região que a própria consulta**. Se você precisar consultar dados do S3 que foram criptografados usando KMS, permissões específicas são necessárias pelo usuário do Athena para permitir que eles realizem a consulta. +SSE-C and CSE-C não são suportados. Além disso, é importante entender que o Amazon Athena executará consultas apenas contra **objetos criptografados que estejam na mesma região da própria consulta**. Se você precisa consultar dados S3 que foram criptografados usando KMS, permissões específicas são exigidas para o usuário do Athena permitir que ele execute a consulta. -### Enumeração +### Enumeration ```bash # Get catalogs aws athena list-data-catalogs