# AWS - CloudFront Enum

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

## CloudFront

CloudFront est le **réseau de distribution de contenu d'AWS qui accélère la distribution** de votre contenu statique et dynamique à travers son réseau mondial de points de présence. Lorsque vous utilisez un contenu de demande que vous hébergez via Amazon CloudFront, la demande est acheminée vers le point de présence le plus proche, ce qui lui fournit la latence la plus basse pour offrir la meilleure performance. Lorsque les **journaux d'accès CloudFront** sont activés, vous pouvez enregistrer la demande de chaque utilisateur demandant l'accès à votre site web et à votre distribution. Comme pour les journaux d'accès S3, ces journaux sont également **stockés sur Amazon S3 pour un stockage durable et persistant**. Il n'y a pas de frais pour activer la journalisation elle-même, cependant, comme les journaux sont stockés dans S3, vous serez facturé pour le stockage utilisé par S3.

Les fichiers journaux capturent des données sur une période de temps et en fonction du nombre de demandes reçues par Amazon CloudFront pour cette distribution, cela dépendra du nombre de fichiers journaux générés. Il est important de savoir que ces fichiers journaux ne sont pas créés ou écrits sur S3. S3 est simplement l'endroit où ils sont livrés une fois que le fichier journal est plein. **Amazon CloudFront conserve ces journaux jusqu'à ce qu'ils soient prêts à être livrés à S3**. Encore une fois, en fonction de la taille de ces fichiers journaux, cette livraison peut prendre **entre une et 24 heures**.

**Par défaut, la journalisation des cookies est désactivée** mais vous pouvez l'activer.

### Functions

Vous pouvez créer des fonctions dans CloudFront. Ces fonctions auront leur **point de terminaison dans cloudfront** défini et exécuteront un **code NodeJS** déclaré. Ce code s'exécutera à l'intérieur d'un **sandbox** sur une machine fonctionnant sous une machine gérée par AWS (vous auriez besoin d'un contournement de sandbox pour réussir à échapper au système d'exploitation sous-jacent).

Comme les fonctions ne sont pas exécutées dans le compte AWS des utilisateurs, aucun rôle IAM n'est attaché, donc aucune élévation de privilèges directe n'est possible en abusant de cette fonctionnalité.

### 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"
```
## Accès non authentifié

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

## Post exploitation

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

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