From 0d0cdea9399ff71ebe27032934981f4afce22dfc Mon Sep 17 00:00:00 2001 From: Translator Date: Thu, 12 Feb 2026 13:06:07 +0000 Subject: [PATCH] Translated ['', 'src/pentesting-cloud/aws-security/aws-services/aws-s3-a --- .../aws-s3-athena-and-glacier-enum.md | 150 +++++++++--------- 1 file changed, 75 insertions(+), 75 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 99cfaf2b1..97bee9743 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,39 +1,39 @@ -# AWS - S3, Athena & Glacier Enum +# AWS - S3, Athena & Glacier Enumerazione {{#include ../../../banners/hacktricks-training.md}} ## S3 -Amazon S3 è un servizio che consente di **memorizzare grandi quantità di dati**. +Amazon S3 è un servizio che ti permette di **archiviare grandi quantità di dati**. -Amazon S3 offre diverse opzioni per ottenere la **protezione** dei dati a riposo. Le opzioni includono **Permessi** (Policy), **Crittografia** (Client e Server Side), **Versioning del Bucket** e **eliminazione** basata su **MFA**. L'**utente può abilitare** una di queste opzioni per ottenere la protezione dei dati. La **replicazione dei dati** è una funzionalità interna di AWS in cui **S3 replica automaticamente ogni oggetto in tutte le Availability Zones** e l'organizzazione non deve abilitarla in questo caso. +Amazon S3 offre più opzioni per ottenere la **protezione** dei dati a riposo. Le opzioni includono **Permission** (Policy), **Encryption** (Client and Server Side), **Bucket Versioning** e **MFA based delete**. L'**utente può abilitare** una qualsiasi di queste opzioni per ottenere la protezione dei dati. La **Data replication** è una funzionalità interna di AWS dove **S3 automaticamente replica ogni oggetto attraverso tutte le Availability Zones** e l'organizzazione non deve abilitarla in questo caso. -Con permessi basati sulle risorse, puoi definire permessi per le sottodirectory del tuo bucket separatamente. +Con autorizzazioni basate sulle risorse, puoi definire separatamente i permessi per le sottodirectory del tuo bucket. -### Versioning del Bucket e eliminazione basata su MFA +### Bucket Versioning and MFA based delete -Quando il versioning del bucket è abilitato, qualsiasi azione che tenta di modificare un file all'interno di un file genererà una nuova versione del file, mantenendo anche il contenuto precedente dello stesso. Pertanto, non sovrascriverà il suo contenuto. +Quando Bucket Versioning è abilitato, qualsiasi azione che tenta di modificare un file all'interno di un bucket genererà una nuova versione del file, mantenendo anche il contenuto precedente. Pertanto, non sovrascriverà il contenuto. -Inoltre, l'eliminazione basata su MFA impedirà che le versioni di file nel bucket S3 vengano eliminate e anche che il Versioning del Bucket venga disabilitato, quindi un attaccante non sarà in grado di alterare questi file. +Inoltre, MFA based delete impedirà che le versioni dei file nel bucket S3 vengano cancellate e impedirà anche la disabilitazione del Bucket Versioning, quindi un attaccante non potrà alterare questi file. -### Log di accesso S3 +### S3 Access logs -È possibile **abilitare il login di accesso S3** (che per impostazione predefinita è disabilitato) per un certo bucket e salvare i log in un bucket diverso per sapere chi sta accedendo al bucket (entrambi i bucket devono trovarsi nella stessa regione). +È possibile **abilitare S3 access login** (che di default è disabilitato) per un bucket e salvare i log in un bucket diverso per sapere chi sta accedendo al bucket (entrambi i bucket devono essere nella stessa regione). -### URL presigned S3 +### S3 Presigned URLs -È possibile generare un URL presigned che può solitamente essere utilizzato per **accedere al file specificato** nel bucket. Un **URL presigned appare così**: +È possibile generare una presigned URL che solitamente può essere utilizzata per **accedere al file specificato** nel bucket. Una **presigned URL appare così**: ``` 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 ``` -Un URL prefirmato può essere **creato dalla cli utilizzando le credenziali di un principale con accesso all'oggetto** (se l'account che utilizzi non ha accesso, verrà creato un URL prefirmato più breve ma sarà inutile) +Una presigned URL può essere **creata dalla cli utilizzando le credenziali di un principal con accesso all'oggetto** (se l'account che usi non ha accesso, verrà creata una presigned URL più corta ma sarà inutile) ```bash aws s3 presign --region 's3:///' ``` > [!NOTE] -> L'unico permesso richiesto per generare un URL presigned è il permesso concesso, quindi per il comando precedente l'unico permesso necessario per il principale è `s3:GetObject` +> L'unico permesso richiesto per generare una presigned URL è il permesso che viene concesso, quindi per il comando precedente l'unico permesso necessario per il soggetto è `s3:GetObject` -È anche possibile creare URL presigned con **altri permessi**: +È anche possibile creare presigned URL con **altri permessi**: ```python import boto3 url = boto3.client('s3').generate_presigned_url( @@ -42,24 +42,24 @@ Params={'Bucket': 'BUCKET_NAME', 'Key': 'OBJECT_KEY'}, ExpiresIn=3600 ) ``` -### S3 Encryption Mechanisms +### Meccanismi di crittografia S3 -**DEK significa Data Encryption Key** ed è la chiave che viene sempre generata e utilizzata per crittografare i dati. +**DEK significa Data Encryption Key** e corrisponde alla chiave che viene sempre generata e usata per cifrare i dati.
Server-side encryption with S3 managed keys, SSE-S3 -Questa opzione richiede una configurazione minima e tutta la gestione delle chiavi di crittografia utilizzate è gestita da AWS. Tutto ciò che devi fare è **caricare i tuoi dati e S3 gestirà tutti gli altri aspetti**. Ogni bucket in un account S3 è assegnato a una chiave del bucket. +Questa opzione richiede una configurazione minima e tutta la gestione delle chiavi di crittografia è effettuata da AWS. Tutto quello che devi fare è **caricare i tuoi dati e S3 si occuperà di tutto il resto**. A ogni bucket in un account S3 viene assegnata una bucket key. -- Crittografia: -- Dati dell'oggetto + DEK in chiaro creato --> Dati crittografati (memorizzati all'interno di S3) -- DEK in chiaro creato + Chiave Master S3 --> DEK crittografato (memorizzato all'interno di S3) e il testo in chiaro viene eliminato dalla memoria -- Decrittografia: -- DEK crittografato + Chiave Master S3 --> DEK in chiaro -- DEK in chiaro + Dati crittografati --> Dati dell'oggetto +- 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 -Si prega di notare che in questo caso **la chiave è gestita da AWS** (rotazione solo ogni 3 anni). Se utilizzi la tua chiave, potrai ruotare, disabilitare e applicare controlli di accesso. +Per favore, nota che in questo caso **la chiave è gestita da AWS** (rotation solo ogni 3 anni). Se usi la tua chiave potrai ruotarla, disabilitarla e applicare controlli di accesso.
@@ -67,16 +67,16 @@ Si prega di notare che in questo caso **la chiave è gestita da AWS** (rotazione Server-side encryption with KMS managed keys, SSE-KMS -Questo metodo consente a S3 di utilizzare il servizio di gestione delle chiavi per generare le chiavi di crittografia dei dati. KMS ti offre una flessibilità molto maggiore su come vengono gestite le tue chiavi. Ad esempio, puoi disabilitare, ruotare e applicare controlli di accesso al CMK, e ordinare contro il loro utilizzo utilizzando AWS Cloud Trail. +Questo metodo permette a S3 di utilizzare il key management service per generare le tue data encryption keys. KMS ti offre una flessibilità molto maggiore su come le chiavi vengono gestite. Per esempio, puoi disabilitare, ruotare e applicare controlli di accesso al CMK, e monitorarne l'uso tramite AWS CloudTrail. -- Crittografia: -- S3 richiede chiavi di dati a KMS CMK -- KMS utilizza un CMK per generare la coppia DEK in chiaro e DEK crittografato e inviarle a S3 -- S3 utilizza la chiave in chiaro per crittografare i dati, memorizza i dati crittografati e la chiave crittografata ed elimina dalla memoria la chiave in chiaro -- Decrittografia: -- S3 chiede a KMS di decrittografare la chiave di dati crittografata dell'oggetto -- KMS decrittografa la chiave di dati con il CMK e la restituisce a S3 -- S3 decrittografa i dati dell'oggetto +- 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 plaintext 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 @@ -84,17 +84,17 @@ Questo metodo consente a S3 di utilizzare il servizio di gestione delle chiavi p Server-side encryption with customer provided keys, SSE-C -Questa opzione ti offre l'opportunità di fornire la tua chiave master che potresti già utilizzare al di fuori di AWS. La tua chiave fornita dal cliente verrebbe quindi inviata con i tuoi dati a S3, dove S3 eseguirebbe la crittografia per te. +Questa opzione ti dà la possibilità di fornire la tua master key che potresti già usare al di fuori di AWS. La customer-provided key verrebbe inviata insieme ai dati a S3, dove S3 eseguirà la crittografia per te. -- Crittografia: -- L'utente invia i dati dell'oggetto + Chiave del cliente a S3 -- La chiave del cliente viene utilizzata per crittografare i dati e i dati crittografati vengono memorizzati -- un valore HMAC salato della chiave del cliente viene memorizzato anche per la futura validazione della chiave -- la chiave del cliente viene eliminata dalla memoria -- Decrittografia: -- L'utente invia la chiave del cliente -- La chiave viene convalidata rispetto al valore HMAC memorizzato -- La chiave fornita dal cliente viene quindi utilizzata per decrittografare i dati +- 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 @@ -102,17 +102,17 @@ Questa opzione ti offre l'opportunità di fornire la tua chiave master che potre Client-side encryption with KMS, CSE-KMS -Analogamente a SSE-KMS, questo utilizza anche il servizio di gestione delle chiavi per generare le chiavi di crittografia dei dati. Tuttavia, questa volta KMS viene chiamato tramite il client e non S3. La crittografia avviene quindi lato client e i dati crittografati vengono inviati a S3 per essere memorizzati. +Analogamente a SSE-KMS, anche qui viene utilizzato il key management service per generare le data encryption keys. Tuttavia, in questo caso KMS viene chiamato dal client e non da S3. La crittografia avviene quindi client-side e i dati cifrati vengono poi inviati a S3 per l'archiviazione. -- Crittografia: -- Il client richiede una chiave di dati a KMS -- KMS restituisce il DEK in chiaro e il DEK crittografato con il CMK -- Entrambe le chiavi vengono restituite -- Il client quindi crittografa i dati con il DEK in chiaro e invia a S3 i dati crittografati + il DEK crittografato (che viene salvato come metadati dei dati crittografati all'interno di S3) -- Decrittografia: -- I dati crittografati con il DEK crittografato vengono inviati al client -- Il client chiede a KMS di decrittografare la chiave crittografata utilizzando il CMK e KMS restituisce il DEK in chiaro -- Il client può ora decrittografare i dati crittografati +- 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 @@ -120,21 +120,21 @@ Analogamente a SSE-KMS, questo utilizza anche il servizio di gestione delle chia Client-side encryption with customer provided keys, CSE-C -Utilizzando questo meccanismo, puoi utilizzare le tue chiavi fornite e utilizzare un client AWS-SDK per crittografare i tuoi dati prima di inviarli a S3 per la memorizzazione. +Con questo meccanismo puoi utilizzare chiavi fornite da te e un client AWS-SDK per cifrare i dati prima di inviarli a S3 per l'archiviazione. -- Crittografia: -- Il client genera un DEK e crittografa i dati in chiaro -- Poi, utilizzando il proprio CMK personalizzato, crittografa il DEK -- invia i dati crittografati + DEK crittografato a S3 dove vengono memorizzati -- Decrittografia: -- S3 invia i dati crittografati e il DEK -- Poiché il client ha già il CMK utilizzato per crittografare il DEK, decrittografa il DEK e poi utilizza il DEK in chiaro per decrittografare i dati +- 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 ### **Enumeration** -Uno dei principali modi tradizionali per compromettere le organizzazioni AWS inizia compromettendo i bucket accessibili pubblicamente. **Puoi trovare** [**enumeratori di bucket pubblici in questa pagina**](../aws-unauthenticated-enum-access/#s3-buckets)**.** +Uno dei modi principali e tradizionali per compromettere organizzazioni AWS inizia compromettendo bucket pubblicamente accessibili. **You can find** [**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,22 +229,22 @@ aws s3api put-object-acl --bucket --key flag --access-control-poli ``` ### dual-stack -Puoi accedere a un bucket S3 tramite un endpoint dual-stack utilizzando un nome di endpoint in stile host virtuale o in stile percorso. Questi sono utili per accedere a S3 tramite IPv6. +Puoi accedere a un bucket S3 tramite un endpoint dual-stack usando un nome di endpoint in stile virtual hosted o in stile path. Questi sono utili per accedere a S3 tramite IPv6. -Gli endpoint dual-stack utilizzano la seguente sintassi: +Dual-stack endpoints use the following syntax: - `bucketname.s3.dualstack.aws-region.amazonaws.com` - `s3.dualstack.aws-region.amazonaws.com/bucketname` ### Privesc -Nella pagina seguente puoi controllare come **abusare dei permessi S3 per escalare i privilegi**: +Nella pagina seguente puoi vedere come **abusare dei permessi S3 per escalare i privilegi**: {{#ref}} ../aws-privilege-escalation/aws-s3-privesc/README.md {{#endref}} -### Accesso non autenticato +### Unauthenticated Access {{#ref}} ../aws-unauthenticated-enum-access/aws-s3-unauthenticated-enum/README.md @@ -256,29 +256,29 @@ Nella pagina seguente puoi controllare come **abusare dei permessi S3 per escala ../aws-post-exploitation/aws-s3-post-exploitation/README.md {{#endref}} -### Persistenza +### Persistence {{#ref}} ../aws-persistence/aws-s3-persistence/README.md {{#endref}} -## Altre vulnerabilità S3 +## Other S3 vulns -### Problema di avvelenamento della cache HTTP S3 +### S3 HTTP Cache Poisoning Issue -[**Secondo questa ricerca**](https://rafa.hashnode.dev/exploiting-http-parsers-inconsistencies#heading-s3-http-desync-cache-poisoning-issue) è stato possibile memorizzare nella cache la risposta di un bucket arbitrario come se appartenesse a un altro. Questo potrebbe essere stato abusato per cambiare, ad esempio, le risposte dei file javascript e compromettere pagine arbitrarie utilizzando S3 per memorizzare codice statico. +[**According to this research**](https://rafa.hashnode.dev/exploiting-http-parsers-inconsistencies#heading-s3-http-desync-cache-poisoning-issue) era possibile memorizzare nella cache la risposta di un bucket arbitrario come se appartenesse a un altro. Questo avrebbe potuto essere abusato per modificare, per esempio, le risposte di file javascript e compromettere pagine arbitrarie che usano S3 per memorizzare codice statico. ## Amazon Athena -Amazon Athena è un servizio di query interattivo che semplifica l'**analisi dei dati** direttamente in Amazon Simple Storage Service (Amazon **S3**) **utilizzando** SQL standard. +Amazon Athena è un servizio di query interattivo che semplifica l'**analisi dei dati** direttamente in Amazon Simple Storage Service (Amazon **S3**) **usando** SQL standard. -Devi **preparare una tabella DB relazionale** con il formato del contenuto che apparirà nei bucket S3 monitorati. E poi, Amazon Athena sarà in grado di popolare il DB dai log, così potrai interrogarlo. +Devi **preparare una tabella DB relazionale** con il formato del contenuto che apparirà nei bucket S3 monitorati. Poi, Amazon Athena sarà in grado di popolare il DB dai log, permettendoti di eseguire query. -Amazon Athena supporta la **possibilità di interrogare i dati S3 che sono già crittografati** e, se configurato per farlo, **Athena può anche crittografare i risultati della query che possono poi essere memorizzati in S3**. +Amazon Athena supporta la **possibilità di interrogare dati S3 già cifrati** e, se configurata per farlo, **Athena può anche cifrare i risultati della query che poi possono essere memorizzati in S3**. -**Questa crittografia dei risultati è indipendente dai dati S3 interrogati**, il che significa che anche se i dati S3 non sono crittografati, i risultati interrogati possono essere crittografati. Un paio di punti da tenere a mente è che Amazon Athena supporta solo dati che sono stati **crittografati** con i **seguenti metodi di crittografia S3**, **SSE-S3, SSE-KMS e CSE-KMS**. +**Questa cifratura dei risultati è indipendente dai dati S3 sottostanti interrogati**, il che significa che anche se i dati S3 non sono cifrati, i risultati della query possono esserlo. Un paio di punti da tenere a mente: Amazon Athena supporta solo dati che sono stati **cifrati** con i **seguenti metodi di cifratura S3**, **SSE-S3, SSE-KMS, and CSE-KMS**. -SSE-C e CSE-E non sono supportati. Inoltre, è importante comprendere che Amazon Athena eseguirà query solo su **oggetti crittografati che si trovano nella stessa regione della query stessa**. Se hai bisogno di interrogare dati S3 che sono stati crittografati utilizzando KMS, allora sono necessarie specifiche autorizzazioni da parte dell'utente Athena per consentire loro di eseguire la query. +SSE-C e CSE-C non sono supportati. Inoltre, è importante capire che Amazon Athena eseguirà query solo su **oggetti cifrati che si trovano nella stessa regione della query**. Se è necessario interrogare dati S3 cifrati usando KMS, sono richieste specifiche autorizzazioni per l'utente Athena per permettere l'esecuzione della query. ### Enumeration ```bash