AWS - CloudFront Enum

Support HackTricks

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

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"

인증되지 않은 접근

AWS - Cloudfront Unauthenticated Enum

포스트 익스플로잇

AWS - CloudFront Post Exploitation
HackTricks 지원하기

Last updated