> For the complete documentation index, see [llms.txt](https://www.pentestwiki.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://www.pentestwiki.com/cloud/aws.md).

# AWS

### S3 Bucket

Amazon S3(Simple Storage Service)는 AWS가 제공하는 객체 스토리지 서비스로, 데이터 파일을 버킷이라는 최상위 컨테이너 단위에 저장합니다. S3 버킷은 정적 웹 사이트 호스팅, 백업 및 로그 저장, 리소스 관리 등 다양한 용도로 사용됩니다.

기본적으로 S3 버킷 자체가 취약한 것은 아니지만 이것으로 인해 공격자는 정보 수집이 가능하며, AWS 구성이 잘못 되었을 경우 정보 수집으로 인한 초기 침투 및 서버 장악도 가능합니다.

### 접근 제어

<figure><img src="/files/vfDzFG0Mc5WGNQ17Kqyn" alt=""><figcaption></figcaption></figure>

공개되었으며 익명의 사용자에게 ListBucket 권한을 허용한 버킷이라고 하더라도 웹 브라우저로 접근 시 위와 같은 접근 거부 페이지가 나타나는 이유는 접근 방식에 있습니다.

일반적으로 브라우저를 통해 S3 버킷에 접근하면 Rest API 요청 방식과 같이 접근하는데, 이때 요청에는 자격증명 없이 접근하기 때문에 권한을 요구하는 API 엔드포인트에서 접근을 차단합니다.

<figure><img src="/files/VaQP0pcmaQkW4cjE8i6O" alt=""><figcaption></figcaption></figure>

또한 cli 기반이라고 하더라도 aws 도구에 저장된 자격증명이 있을 경우 기본적으로 버킷에 접근하면 차단되는 반면 익명 권한으로 접근 시에는 객체를 열거할 수 있는 점이 확인됩니다. 이런 현상이 나타나는 이유는 AWS는 다음과 같은 순서대로 권한을 확인하기 때문입니다.

1. 명시적 Deny
2. 명시적 Allow
3. 기본 Deny

<figure><img src="/files/mkCxEotYFoydwS7nQRXY" alt=""><figcaption></figcaption></figure>

기본 자격증명을 가진 상태로 버킷에 접근 시 익명 접근을 허용한 버킷은 명시적으로 접근이 차단된 사용자인지 확인합니다. 이후 차단된 사용자가 아닐 경우 명시적으로 허용했는지 확인하는데, 자격증명을 가진 사용자는 버킷의 정책에서 허용한 익명 권한이 아니기 때문에 접근할 수 없게 됩니다.
