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
'Hack > Cloud' 카테고리의 다른 글
| [The Big IAM Challenge] One final push (0) | 2023.07.09 | 
|---|---|
| [The Big IAM Challenge] Do I know you? (0) | 2023.07.09 | 
| [The Big IAM Challenge] Enable Push Notifications (0) | 2023.07.09 | 
| [The Big IAM Challenge] Google Analytics (0) | 2023.07.09 | 
| [The Big IAM Challenge] Buckets of Fun (0) | 2023.07.09 | 
 
														
													 
														
													 
														
													 
														
													
댓글