AWS - Cognito Unauthenticated Enum
Last updated
Last updated
学习与实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE) 学习与实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)
Cognito 是一个 AWS 服务,使开发者能够 授予他们的应用用户访问 AWS 服务的权限。开发者将为其应用中的 认证用户 授予 IAM 角色(潜在地,用户可以直接注册),他们也可以为 未认证用户 授予 IAM 角色。
有关 Cognito 的基本信息,请查看:
AWS - Cognito Enum身份池可以为 仅知道身份池 ID 的 未认证用户 授予 IAM 角色(这在 查找 时相当常见),拥有此信息的攻击者可能会尝试 访问该 IAM 角色 并利用它。 此外,IAM 角色也可以分配给访问身份池的 认证用户。如果攻击者能够 注册用户 或已经 访问身份池中使用的身份提供者,则可以访问 授予认证用户的 IAM 角色 并滥用其权限。
默认情况下,Cognito 允许 注册新用户。能够注册用户可能会使您 访问 基础应用程序 或 接受 Cognito 用户池作为身份提供者的身份池的认证 IAM 访问角色。 查看如何做到这一点。
Pacu,AWS 利用框架,现在包括 "cognito__enum" 和 "cognito__attack" 模块,这些模块自动枚举账户中的所有 Cognito 资产并标记弱配置、用于访问控制的用户属性等,同时还自动创建用户(包括 MFA 支持)和基于可修改自定义属性、可用身份池凭证、可假设角色的 ID 令牌等的权限提升。
有关模块功能的描述,请参见 博客文章 的第 2 部分。有关安装说明,请参见主 Pacu 页面。
示例 cognito__attack
用法,尝试在给定身份池和用户池客户端上创建用户和所有权限提升向量:
示例 cognito__enum 用法,以收集当前 AWS 账户中可见的所有用户池、用户池客户端、身份池、用户等:
学习与实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE) 学习与实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)