# AWS - CloudFront Enum

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

## CloudFront

CloudFrontはAWSの**コンテンツ配信ネットワークで、静的および動的コンテンツの配信を加速**します。Amazon CloudFrontを通じてホスティングしているリクエストコンテンツを使用すると、リクエストは最も近いエッジロケーションにルーティングされ、最も低いレイテンシで最高のパフォーマンスを提供します。**CloudFrontアクセスログ**が有効になっていると、ウェブサイトや配信にアクセスをリクエストする各ユーザーからのリクエストを記録できます。S3アクセスログと同様に、これらのログも**耐久性と永続的なストレージのためにAmazon S3に保存されます**。ログ自体を有効にすることに対して料金は発生しませんが、ログがS3に保存されるため、S3によって使用されるストレージに対して料金が発生します。

ログファイルは一定期間のデータをキャプチャし、Amazon CloudFrontがその配信に対して受信するリクエストの量に応じて生成されるログファイルの数が決まります。これらのログファイルはS3上で作成または書き込まれないことを知っておくことが重要です。S3は、ログファイルが満杯になったときにそれらが配信される場所です。**Amazon CloudFrontは、これらのログをS3に配信する準備ができるまで保持します**。再度、これらのログファイルのサイズに応じて、この配信には**1時間から24時間**かかることがあります。

**デフォルトではクッキーロギングは無効になっていますが、これを有効にすることができます。**

### Functions

CloudFrontで関数を作成できます。これらの関数は**cloudfront**にエンドポイントが定義され、宣言された**NodeJSコード**を実行します。このコードは、AWS管理マシン上で実行される**サンドボックス**内で実行されます（基盤となるOSに逃げるためにはサンドボックスバイパスが必要です）。

関数はユーザーのAWSアカウントで実行されないため、IAMロールは添付されておらず、この機能を悪用して直接的な権限昇格は不可能です。

### 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"
```
## 認証されていないアクセス

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

## ポストエクスプロイテーション

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

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