AWS - Cognito Unauthenticated Enum
인증되지 않은 Cognito
Cognito는 개발자가 앱 사용자에게 AWS 서비스 액세스 권한을 부여할 수 있게 해주는 AWS 서비스입니다. 개발자들은 앱에서 인증된 사용자에게 IAM 역할을 부여할 수 있고(사람들이 가입만 하면 될 수도 있음) 인증되지 않은 사용자에게도 IAM 역할을 부여할 수 있습니다.
Cognito에 대한 기본 정보는 다음을 확인하세요:
AWS - Cognito EnumPentesting 및 열거를 위한 Pacu 모듈
AWS 공격 프레임워크인 Pacu는 이제 계정 내 모든 Cognito 자산을 열거하고 약한 구성, 액세스 제어에 사용되는 사용자 속성 등을 자동으로 식별하며, 수정 가능한 사용자 지정 속성, 사용 가능한 ID 풀 자격 증명, ID 토큰의 가정 가능한 역할 등을 기반으로 사용자 생성(다중 인증 지원 포함) 및 권한 상승을 자동화하는 "cognito__enum" 및 "cognito__attack" 모듈을 포함합니다.
모듈 기능에 대한 설명은 블로그 게시물의 2부를 참조하세요. 설치 지침은 주요 Pacu 페이지를 참조하세요.
사용법
주어진 ID 풀 및 사용자 풀 클라이언트에 대해 사용자 생성 및 모든 권한 상승 벡터를 시도하는 샘플 cognito__attack 사용법:
다음은 현재 AWS 계정에서 볼 수 있는 모든 사용자 풀, 사용자 풀 클라이언트, ID 풀, 사용자 등을 수집하기 위한 cognito__enum 사용 예시입니다:
Identity Pool ID
Identity Pools는 인증되지 않은 사용자에게 IAM 역할을 부여할 수 있으며 이는 그냥 Identity Pool ID를 알고 있다면(상대적으로 찾기 쉬움) 해당 IAM 역할에 액세스를 시도할 수 있는 공격자가 있을 수 있습니다. 더구나, IAM 역할은 인증된 사용자에게 할당될 수도 있습니다. 공격자가 사용자를 등록하거나 이미 Identity Pool에서 사용된 ID 공급자에 액세스할 수 있다면, 인증된 사용자에게 제공되는 IAM 역할에 액세스하여 권한을 남용할 수 있습니다.
User Pool ID
기본적으로 Cognito는 새 사용자를 등록할 수 있습니다. 사용자를 등록할 수 있다면 밑바닥 애플리케이션이나 Cognito 사용자 풀을 ID 공급자로 사용하는 Identity Pool의 인증된 IAM 액세스 역할에 액세스할 수 있을 수 있습니다. 여기에서 그 방법을 확인하세요.
Last updated