# AWS - CloudFront Enum

{{#include ../../../banners/hacktricks-training.md}}

## CloudFront

CloudFront è la **rete di distribuzione dei contenuti di AWS che accelera la distribuzione** dei tuoi contenuti statici e dinamici attraverso la sua rete mondiale di località edge. Quando utilizzi una richiesta di contenuto che stai ospitando tramite Amazon CloudFront, la richiesta viene instradata alla località edge più vicina, che fornisce la latenza più bassa per offrire le migliori prestazioni. Quando i **log di accesso di CloudFront** sono abilitati, puoi registrare la richiesta di ciascun utente che richiede accesso al tuo sito web e alla tua distribuzione. Come per i log di accesso S3, anche questi log sono **archiviati su Amazon S3 per uno storage durevole e persistente**. Non ci sono costi per abilitare il logging stesso, tuttavia, poiché i log sono archiviati in S3, ti verrà addebitato lo storage utilizzato da S3.

I file di log catturano dati nel corso del tempo e a seconda della quantità di richieste ricevute da Amazon CloudFront per quella distribuzione, dipenderà dalla quantità di file di log generati. È importante sapere che questi file di log non vengono creati o scritti su S3. S3 è semplicemente dove vengono consegnati una volta che il file di log è pieno. **Amazon CloudFront conserva questi log fino a quando non sono pronti per essere consegnati a S3**. Ancora una volta, a seconda delle dimensioni di questi file di log, questa consegna può richiedere **tra una e 24 ore**.

**Per impostazione predefinita, il logging dei cookie è disabilitato** ma puoi abilitarlo.

### Functions

Puoi creare funzioni in CloudFront. Queste funzioni avranno il loro **endpoint in cloudfront** definito e eseguiranno un **codice NodeJS** dichiarato. Questo codice verrà eseguito all'interno di un **sandbox** su una macchina che gira sotto una macchina gestita da AWS (avresti bisogno di un bypass del sandbox per riuscire a fuggire verso il sistema operativo sottostante).

Poiché le funzioni non vengono eseguite nell'account AWS degli utenti, non è allegato alcun ruolo IAM, quindi non è possibile un accesso privilegiato diretto abusando di questa funzionalità.

### Enumeration
```bash
aws cloudfront list-distributions
aws cloudfront get-distribution --id <id> # Just get 1
aws cloudfront get-distribution-config --id <id>

aws cloudfront list-functions
aws cloudfront get-function --name TestFunction function_code.js

aws cloudfront list-distributions | jq ".DistributionList.Items[] | .Id, .Origins.Items[].Id, .Origins.Items[].DomainName, .AliasICPRecordals[].CNAME"
```
## Accesso non autenticato

{{#ref}}
../aws-unauthenticated-enum-access/aws-cloudfront-unauthenticated-enum/README.md
{{#endref}}

## Post Sfruttamento

{{#ref}}
../aws-post-exploitation/aws-cloudfront-post-exploitation/README.md
{{#endref}}

{{#include ../../../banners/hacktricks-training.md}}
