AWS - CloudFront Enum

Support HackTricks

CloudFront

CloudFront é a rede de entrega de conteúdo da AWS que acelera a distribuição do seu conteúdo estático e dinâmico através de sua rede mundial de locais de borda. Quando você usa um conteúdo de solicitação que está hospedando através do Amazon CloudFront, a solicitação é roteada para o local de borda mais próximo, que fornece a menor latência para oferecer o melhor desempenho. Quando os logs de acesso do CloudFront estão habilitados, você pode registrar a solicitação de cada usuário que solicita acesso ao seu site e distribuição. Assim como os logs de acesso do S3, esses logs também são armazenados no Amazon S3 para armazenamento durável e persistente. Não há cobranças por habilitar a gravação em si, no entanto, como os logs são armazenados no S3, você será cobrado pelo armazenamento usado pelo S3.

Os arquivos de log capturam dados ao longo de um período de tempo e, dependendo da quantidade de solicitações recebidas pelo Amazon CloudFront para essa distribuição, dependerá da quantidade de arquivos de log que são gerados. É importante saber que esses arquivos de log não são criados ou gravados no S3. O S3 é simplesmente onde eles são entregues uma vez que o arquivo de log está cheio. O Amazon CloudFront retém esses logs até que estejam prontos para serem entregues ao S3. Novamente, dependendo do tamanho desses arquivos de log, essa entrega pode levar entre uma e 24 horas.

Por padrão, o registro de cookies está desativado, mas você pode ativá-lo.

Functions

Você pode criar funções no CloudFront. Essas funções terão seu endpoint no cloudfront definido e executarão um código NodeJS declarado. Esse código será executado dentro de um sandbox em uma máquina que roda sob uma máquina gerenciada pela AWS (você precisaria de um bypass de sandbox para conseguir escapar para o sistema operacional subjacente).

Como as funções não são executadas na conta AWS dos usuários, nenhuma função IAM está anexada, portanto, não é possível um privilégio de escalonamento direto abusando desse recurso.

Enumeration

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"

Acesso Não Autenticado

AWS - Cloudfront Unauthenticated Enum

Pós Exploração

AWS - CloudFront Post Exploitation
Support HackTricks

Last updated