AWS - Cognito Privesc
Cognito
Cognito에 대한 자세한 정보는 다음을 확인하세요:
pageAWS - Cognito EnumIdentity Pool에서 자격 증명 수집
Cognito는 인증된 및 인증되지 않은 사용자 모두에게 IAM 역할 자격 증명을 부여할 수 있으므로, 애플리케이션의 Identity Pool ID를 찾으면 (일반적으로 하드코딩되어 있음) 새로운 자격 증명을 얻을 수 있으며, 따라서 권한 상승이 가능합니다 (아마도 이전에 자격 증명이 없었던 AWS 계정 내에서).
자세한 정보는 이 페이지를 확인하세요.
잠재적 영향: 인증되지 않은 사용자에 연결된 서비스 역할 및 (아마도) 인증된 사용자에 연결된 역할로 직접 권한 상승이 가능합니다.
cognito-identity:SetIdentityPoolRoles
, iam:PassRole
cognito-identity:SetIdentityPoolRoles
, iam:PassRole
이 권한을 사용하면 cognito 앱의 인증된/인증되지 않은 사용자에게 모든 cognito 역할을 부여할 수 있습니다.
만약 Cognito 앱에 인증되지 않은 사용자가 활성화되어 있지 않다면, 인증되지 않은 사용자를 활성화하기 위해 cognito-identity:UpdateIdentityPool
권한이 필요할 수도 있습니다.
잠재적인 영향: 어떤 Cognito 역할에 대한 직접적인 권한 상승.
cognito-identity:update-identity-pool
cognito-identity:update-identity-pool
이 권한을 가진 공격자는 예를 들어 자신이 제어하는 Cognito 사용자 풀 또는 다른 신원 제공자를 설정할 수 있습니다. 그런 다음, 해당 사용자 제공자에 로그인하기만 하면 Identity Pool에서 구성된 인증된 역할에 액세스할 수 있습니다.
이 권한을 남용하여 기본 인증을 허용하는 것도 가능합니다:
잠재적 영향: 식별 풀 내에서 구성된 인증된 IAM 역할을 침해할 수 있습니다.
cognito-idp:AdminAddUserToGroup
cognito-idp:AdminAddUserToGroup
이 권한은 Cognito 사용자를 Cognito 그룹에 추가하는 것을 허용합니다. 따라서 공격자는 이 권한을 악용하여 자신이 제어하는 사용자를 더 나은 권한이나 다른 IAM 역할을 가진 다른 그룹에 추가할 수 있습니다.
잠재적 영향: 다른 Cognito 그룹 및 User Pool 그룹에 연결된 IAM 역할로의 권한 상승.
(cognito-idp:CreateGroup
| cognito-idp:UpdateGroup
), iam:PassRole
cognito-idp:CreateGroup
| cognito-idp:UpdateGroup
), iam:PassRole
이러한 권한을 가진 공격자는 모든 손상된 Cognito Identity Provider에서 사용할 수 있는 IAM 역할로 그룹을 생성/업데이트하고 손상된 사용자를 그룹의 일부로 만들어 모든 역할에 액세스할 수 있습니다:
잠재적인 영향: 다른 Cognito IAM 역할로의 권한 상승.
cognito-idp:AdminConfirmSignUp
cognito-idp:AdminConfirmSignUp
이 권한은 가입을 확인하는 것을 허용합니다. 기본적으로 누구나 Cognito 애플리케이션에 로그인할 수 있습니다. 이를 그대로 두면 사용자는 임의의 데이터로 계정을 생성하고 이 권한으로 확인할 수 있습니다.
잠재적 영향: 새로운 사용자를 등록할 수 있다면 인증된 사용자를 위한 identity pool IAM 역할에 대한 간접적인 권한 상승이 가능합니다. 어떤 계정이든 확인할 수 있으므로 다른 앱 기능에 대한 간접적인 권한 상승이 가능합니다.
cognito-idp:AdminCreateUser
cognito-idp:AdminCreateUser
이 권한은 공격자가 사용자 풀 내에서 새로운 사용자를 생성할 수 있도록 합니다. 새로운 사용자는 활성화되어 생성되지만 비밀번호를 변경해야 합니다.
잠재적 영향: 인증된 사용자를 위한 Identity Pool IAM 역할에 대한 직접적인 권한 상승. 어떤 사용자든 생성할 수 있는 다른 앱 기능에 대한 간접적인 권한 상승
cognito-idp:AdminEnableUser
cognito-idp:AdminEnableUser
이 권한은 매우 특수한 상황에서 도움이 될 수 있습니다. 공격자가 비활성화된 사용자의 자격 증명을 찾은 경우 다시 활성화해야 하는 경우입니다.
잠재적 영향: 인증된 사용자의 Identity Pool IAM 역할 및 사용자의 권한에 대한 간접적인 권한 상승, 공격자가 비활성화된 사용자의 자격 증명을 가지고 있는 경우
cognito-idp:AdminInitiateAuth
, cognito-idp:AdminRespondToAuthChallenge
cognito-idp:AdminInitiateAuth
, cognito-idp:AdminRespondToAuthChallenge
이 권한은 ADMIN_USER_PASSWORD_AUTH** 방법으로 로그인**할 수 있게 합니다. 자세한 정보는 링크를 참조하세요.
cognito-idp:AdminSetUserPassword
cognito-idp:AdminSetUserPassword
이 권한은 공격자가 모든 사용자의 비밀번호를 변경할 수 있게 하여, 그 사용자를 사칭할 수 있게 합니다 (MFA가 활성화되지 않은 사용자에 한정).
잠재적 영향: 잠재적으로 모든 사용자에 대한 직접적인 권한 상승으로, 각 사용자가 소속된 모든 그룹에 대한 액세스 및 Identity Pool 인증된 IAM 역할에 대한 액세스가 가능합니다.
cognito-idp:AdminSetUserSettings
| cognito-idp:SetUserMFAPreference
| cognito-idp:SetUserPoolMfaConfig
| cognito-idp:UpdateUserPool
cognito-idp:AdminSetUserSettings
| cognito-idp:SetUserMFAPreference
| cognito-idp:SetUserPoolMfaConfig
| cognito-idp:UpdateUserPool
AdminSetUserSettings: 공격자는 이 권한을 악용하여 자신이 제어하는 휴대폰을 사용자의 SMS MFA로 설정할 수 있습니다.
SetUserMFAPreference: 이전과 유사하게, 이 권한은 사용자의 MFA 환경 설정을 변경하여 MFA 보호를 우회하는 데 사용될 수 있습니다.
SetUserPoolMfaConfig: 이전과 유사하게, 이 권한은 사용자 풀의 MFA 환경 설정을 변경하여 MFA 보호를 우회하는 데 사용될 수 있습니다.
UpdateUserPool: 사용자 풀을 업데이트하여 MFA 정책을 변경할 수도 있습니다. 여기에서 cli를 확인하세요.
잠재적 영향: 공격자가 자격 증명을 알고 있는 모든 사용자에게 간접적인 권한 상승을 할 수 있으며, 이로 인해 MFA 보호를 우회할 수 있습니다.
cognito-idp:AdminUpdateUserAttributes
cognito-idp:AdminUpdateUserAttributes
이 권한을 가진 공격자는 자신이 제어하는 사용자의 이메일, 전화번호 또는 기타 속성을 변경하여 하부 응용 프로그램에서 더 많은 권한을 얻으려고 시도할 수 있습니다. 이를 통해 이메일이나 전화번호를 변경하고 확인된 상태로 설정할 수 있습니다.
잠재적 영향: Cognito User Pool을 사용하여 기존 애플리케이션에서 간접적인 권한 상승이 가능하며, 이는 사용자 속성에 기반한 권한을 부여합니다.
cognito-idp:CreateUserPoolClient
| cognito-idp:UpdateUserPoolClient
cognito-idp:CreateUserPoolClient
| cognito-idp:UpdateUserPoolClient
이 권한을 가진 공격자는 기존 풀 클라이언트보다 제한이 적은 새로운 사용자 풀 클라이언트를 생성할 수 있습니다. 예를 들어, 새로운 클라이언트는 어떤 종류의 인증 방법을 허용하거나, 비밀번호가 없거나, 토큰 폐기가 비활성화되어 있거나, 토큰의 유효 기간이 더 길 수 있습니다.
기존 클라이언트를 수정하는 대신, 기존 클라이언트를 수정할 수도 있습니다.
명령 줄 (또는 업데이트 명령)에서 모든 옵션을 확인할 수 있습니다. 확인해보세요!.
잠재적 영향: 새로운 클라이언트를 생성하여 보안 조치를 완화하고 공격자가 생성할 수 있는 사용자로 로그인할 수 있게 하는 것이 가능하므로, 사용자 풀에 의해 사용되는 Identity Pool의 인가된 사용자에 대한 잠재적인 권한 상승이 발생할 수 있습니다.
cognito-idp:CreateUserImportJob
| cognito-idp:StartUserImportJob
cognito-idp:CreateUserImportJob
| cognito-idp:StartUserImportJob
해당 권한을 악용하여 공격자는 새로운 사용자를 csv 파일로 업로드하여 생성할 수 있습니다.
(In the case where you create a new import job you might also need the iam passrole permission, I haven't tested it yet).
잠재적 영향: 인증된 사용자를 위한 Identity Pool IAM 역할로의 직접 권한 상승. 어떤 사용자든지 생성할 수 있는 다른 앱 기능으로의 간접 권한 상승.
cognito-idp:CreateIdentityProvider
| cognito-idp:UpdateIdentityProvider
cognito-idp:CreateIdentityProvider
| cognito-idp:UpdateIdentityProvider
공격자는 새로운 Identity Provider를 생성하여 이를 통해 로그인할 수 있게 될 수 있습니다.
잠재적 영향: 인증된 사용자를 위한 Identity Pool IAM 역할에 대한 직접적인 권한 상승. 어떤 사용자든 생성할 수 있는 다른 앱 기능에 대한 간접적인 권한 상승.
cognito-sync:* 분석
이는 Cognito Identity Pool의 역할에서 기본적으로 매우 일반적인 권한입니다. 권한에 와일드카드가 있는 것은 항상 나쁜 것처럼 보입니다(AWS에서 특히 그렇습니다). 그러나 공격자의 관점에서는 주어진 권한은 매우 유용하지 않습니다.
이 권한은 Identity Pool 및 Identity Pool 내의 Identity ID의 사용자 정보를 읽을 수 있게 합니다(이는 민감한 정보가 아닙니다). Identity ID에는 Datasets가 할당될 수 있으며, 이는 세션의 정보(AWS에서는 저장된 게임으로 정의됨)입니다. 이것에는 일부 민감한 정보가 포함될 수 있지만, 그 확률은 매우 낮습니다. 이 정보에 액세스하는 방법은 enumeration page에서 찾을 수 있습니다.
공격자는 또한 이러한 권한을 사용하여 이러한 데이터 세트에 대한 변경 사항을 게시하는 Cognito 스트림에 자신을 등록하거나 cognito 이벤트가 트리거되는 람다를 사용할 수 있습니다. 이를 사용한 적은 보지 못했으며, 여기에 민감한 정보가 있는 것은 기대하기 어렵지만 불가능하지는 않습니다.
자동화 도구
Pacu, AWS 공격 프레임워크,는 이제 계정 내의 모든 Cognito 자산의 열거 및 약한 구성, 액세스 제어에 사용되는 사용자 속성 등을 자동화하는 "cognito__enum" 및 "cognito__attack" 모듈을 포함하고 있으며, 수정 가능한 사용자 정의 속성, 사용 가능한 Identity Pool 자격 증명, ID 토큰에서 가정 가능한 역할 등을 기반으로 사용자 생성(다중 인증 지원 포함) 및 권한 상승도 자동화합니다.
모듈 기능에 대한 설명은 블로그 게시물의 2부를 참조하십시오. 설치 지침은 Pacu 메인 페이지를 참조하십시오.
사용법
주어진 Identity Pool 및 사용자 풀 클라이언트에 대해 사용자 생성 및 모든 권한 상승 벡터를 시도하기 위한 샘플 cognito__attack 사용법:
현재 AWS 계정에서 볼 수 있는 모든 사용자 풀, 사용자 풀 클라이언트, 신원 풀, 사용자 등을 수집하기 위한 cognito__enum 사용 예시:
이 명령은 현재 AWS 계정에서 사용 가능한 모든 사용자 풀, 사용자 풀 클라이언트, 신원 풀, 사용자 등의 정보를 수집합니다.
Cognito Scanner은 Cognito에 대한 다양한 공격, 특히 권한 상승(privesc)을 포함한 Python으로 구현된 CLI 도구입니다.
설치
사용법
Description
자세한 정보는 https://github.com/padok-team/cognito-scanner를 확인하세요.
最終更新