외로운 Nova의 작업실

aws - S3Game(1~11) Write up 본문

Cloud Pentesting/aws

aws - S3Game(1~11) Write up

Nova_ 2023. 9. 2. 19:35

- Level 1

링크 : http://s3game-level1.s3-website.us-east-2.amazonaws.com/level1.html

 

S3 Game

_ _______ _______ _ __ ( \ ( ____ \|\ /|( ____ \( \ / \ | ( | ( \/| ) ( || ( \/| ( \/) ) | | | (__ | | | || (__ | | | | | | | __) ( ( ) )| __) | | | | | | | ( \ \_/ / | ( | | | | | (____/\| (____/\ \ / | (____/\| (____/\ __) (_ (_______/(_______/ \_/ (____

s3game-level1.s3-website.us-east-2.amazonaws.com

위 사이트에 접속하게 되면 문제 사이트가 나옵니다.

글을 읽어보면 해당 페이지는 s3에서 가져온다고 합니다. 이를 이용해서 treasure file을 찾으라고 합니다.

 

awscli를 이용해서 s3 버킷을 조회해봅니다.

treasure1 파일이 보입니다. 한번 다운로드해보겠습니다.

level2로 가는 링크가 보입니다. level2로 가보겠습니다~

 

- Level 2

레벨 1에서의 교훈을 알려주고 있습니다. 버킷 내의 객체를 나열할 수 없게 만들어야한다고 합니다. 또한, 두번째 문제에대해서는 버킷 이름을 추측하라고 하고 있습니다. 이를 기반으로 문제를 풀어보겠습니다.

먼저 아까와 동일하게 객체를 나열해보겠습니다.

AccessDenied가 뜨는 것을 확인할 수 있습니다. 즉, ls 명령어를 막고 있는 것 같습니다. 그렇다면 버킷 이름을 추측하라고 하였으니 버킷이름을 추측해서 cp 명령어로 다운로드가 가능하지 않을까요? 한번 해보겠습니다.

이전 보물이름이 treasure1이였으니 이번에는 treasure2로 예측할 수 있습니다. cp 명령어로 다운로드 해보겠습니다.

access Key와 Secret Key와 level3 링크가 나왔습니다. level3으로 가보겠습니다.

 

- Level 3

 

문제 본문에 hint로 액세스 키에대해서 언급합니다. level2에서 얻은 액세스 키로 키를 설정하고 버킷을 조회해보겠습니다.

아래에 treasure3가 있습니다. 이를 다운해보겠습니다.

level4 URL에 THE CODE 부분이 있습니다. 이가 어디에 숨겨져 있는지 생각해보라고 합니다.

해당 객체의 메타데이터를 조회해보겠습니다.

secret 코드를 찾을 수 있습니다.

이제 Level4로 가보겠습니다.

 

- Level 4

먼저 버킷 리스트를 가져와 보겠습니다.

리스트에 treasure4까지 다운로드하고 내용을 보니 또 다시 code를 알아야 level5 주소를 알 수 있습니다. 또 어디에 숨겨져 있는지 생각해보라고 문제에서 말합니다.

버킷에는 헤더 말고도 태그가 있습니다. 태그를 조회해보겠습니다.

태그에 값이 있는 것을 확인할 수 있습니다.

이제 level 5 url이 완성되었으니 level 5로 가보겠습니다.

 

- level 5

힌트에 객체가 존재하고 있으며 존재하지 않을 수 도 있다고합니다. 문제를 풀어보겠습니다.

 

먼저 버킷의 내용을 보겠습니다.

treasure 파일이 없습니다. 문제의 내용으로 볼때 삭제에 관한 문제인것 같습니다. aws s3에서 객체를 삭제할때 버전 관리를 사용하면 삭제한 객체의 내용을 복구할 수 있습니다. 이때 이 내용을 볼수도있습니다. 버전관리를 사용하는지 확인해보겠습니다.

사용하고 있다고 합니다. 버킷 아이템을 조회해보겠습니다.

DeleteMarkers가 존재합니다. 이 버전 Id를 가지고 파일을 다운로드해줍니다.

level 6 url을 찾았으니 level 6로 가보겠습니다.

 

- Level 3

CSV 파일을 sql쿼리문을 사용해서 해결해보라고합니다. sql 쿼리문을 사용해서 해결해보겠습니다.

aws s3api select-object-content \
>   --bucket s3game-level6-vjv45x1gux81 \
>   --key s3select.csv.gz \
>   --expression "SELECT s.Answer FROM s3object s WHERE s.Category = 'TREASURE'" \
>   --expression-type SQL \
>   --input-serialization '{"CSV": {"FileHeaderInfo": "USE", "FieldDelimiter": ";", "RecordDelimiter": "\n"}, "CompressionType": "GZIP"}' \
>   --output-serialization '{"CSV": {}}' \
>   treasure6

level 7으로 가보겠습니다.

 

- Level 7

문제 설명을 보면 somethingstrange를 찾고 체크하라고합니다. 그리고 presigned를 사용하라고합니다.

URL을 웹사이트로 접속하면 파일이 다운로드 되는데 그것을 열어보면 링크가 있고 그 링크를 들어가면 파일이 하나 더 다운로드됩니다.

그 파일을 보면 level8 링크가 있습니다.

 

- level 8

 

문제 설명을 보면 정책 구성이 잘못되어 배포 url 상으로 객체에 접근할 수 있다고합니다. 일단 객체의 이름을 알아보겠습니다.

위 객체에 접근해보겠습니다.

level9 으로 갈 수 있는 url이 나왔습니다.

 

 

- Level 9

 

문제의 정책을 보면 Referer이 설정되어 있습니다. 따라서 treasure을 get 하려면 Referer을 설정한 후에 get 요청을 해줘야합니다.

레벨 10으로 가능 URL이 나왔습니다.

 

- Level 10

문제를 보면 Standard-IA 스토리지 클래스안에 있는 객체를 찾아보라고합니다. s3api의 query를 이용해서 조회해보겠습니다.

key값을 이용해서 파일을 다운로드하면 level11의 링크가 나옵니다.

 

- Level 11

 

문제를 보면 암호화에 관련된 문제입니다. 문제에는 서버사이드 암호화키를 제공하고 있습니다. 먼저 암호화키 사용없이 조회 및 다운해보겠습니다.

에러가 나는 것을 확인할 수 있습니다. 이제 문제에서 제공한 암호화키로 다운로드 해보겠습니다.

레벨 12 링크가 나옵니다.

 

- Level 12

보물을 다 찾았습니다. 이것으로 s3game을 마치겠습니다.

'Cloud Pentesting > aws' 카테고리의 다른 글

aws IAM Challenge write up(1~6)  (0) 2023.09.06
Comments