AWS - CloudFront Enum

Sostieni HackTricks

CloudFront

CloudFront è la rete di distribuzione dei contenuti di AWS che velocizza la distribuzione dei tuoi contenuti statici e dinamici attraverso la sua rete globale di posizioni ai margini. Quando si utilizza una richiesta di contenuto che si sta ospitando tramite Amazon CloudFront, la richiesta viene instradata alla posizione ai margini più vicina che fornisce la latenza più bassa per offrire le migliori prestazioni. Quando i log di accesso a CloudFront sono abilitati, è possibile registrare la richiesta da parte di ciascun utente che richiede l'accesso al tuo sito web e alla distribuzione. Come per i log di accesso a S3, questi log sono anche archiviati su Amazon S3 per uno storage durevole e persistente. Non ci sono costi per abilitare il logging in sé, tuttavia, poiché i log sono archiviati in S3, verranno memorizzati per lo storage utilizzato da S3.

I file di log catturano i 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 mantiene questi log fino a quando non sono pronti per essere consegnati a S3. Di nuovo, 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 è possibile abilitarlo.

Funzioni

È possibile creare funzioni in CloudFront. Queste funzioni avranno il suo endpoint in cloudfront definito e eseguiranno un codice NodeJS dichiarato. Questo codice verrà eseguito all'interno di un sandbox in una macchina in esecuzione sotto una macchina gestita da AWS (è necessario un bypass del sandbox per riuscire a sfuggire al sistema operativo sottostante).

Poiché le funzioni non vengono eseguite nell'account AWS degli utenti, nessun ruolo IAM è collegato, quindi non è possibile un privesc diretto sfruttando questa funzionalità.

Enumerazione

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

AWS - Cloudfront Unauthenticated Enum

Post Esploitation

AWS - CloudFront Post Exploitation
Supporta HackTricks

Last updated