AWS - CloudFront Enum

Apoya a HackTricks

CloudFront

CloudFront es la red de entrega de contenido de AWS que acelera la distribución de tu contenido estático y dinámico a través de su red mundial de ubicaciones de borde. Cuando utilizas una solicitud de contenido que estás alojando a través de Amazon CloudFront, la solicitud se dirige a la ubicación de borde más cercana que proporciona la latencia más baja para ofrecer el mejor rendimiento. Cuando se habilitan los registros de acceso de CloudFront, puedes registrar la solicitud de cada usuario que solicita acceso a tu sitio web y distribución. Al igual que con los registros de acceso de S3, estos registros también se almacenan en Amazon S3 para un almacenamiento duradero y persistente. No hay cargos por habilitar el registro en sí, sin embargo, como los registros se almacenan en S3, se almacenarán por el almacenamiento utilizado por S3.

Los archivos de registro capturan datos durante un período de tiempo y dependiendo de la cantidad de solicitudes que recibe Amazon CloudFront para esa distribución, dependerá de la cantidad de archivos de registro que se generen. Es importante saber que estos archivos de registro no se crean ni se escriben en S3. S3 es simplemente donde se entregan una vez que el archivo de registro está lleno. Amazon CloudFront retiene estos registros hasta que estén listos para ser entregados a S3. Nuevamente, dependiendo del tamaño de estos archivos de registro, esta entrega puede tardar entre una y 24 horas.

Por defecto, el registro de cookies está deshabilitado pero puedes habilitarlo.

Funciones

Puedes crear funciones en CloudFront. Estas funciones tendrán su punto final en cloudfront definido y ejecutarán un código NodeJS declarado. Este código se ejecutará dentro de un sandbox en una máquina que se ejecuta bajo una máquina administrada por AWS (necesitarías un bypass de sandbox para lograr escapar al sistema operativo subyacente).

Como las funciones no se ejecutan en la cuenta de AWS de los usuarios, no se adjunta ningún rol de IAM, por lo que no es posible realizar una escalada de privilegios directa abusando de esta característica.

Enumeración

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"

Acceso no autenticado

AWS - Cloudfront Unauthenticated Enum

Post Explotación

AWS - CloudFront Post Exploitation
Apoya a HackTricks

Last updated