AWS - Cognito Unauthenticated Enum

支持 HackTricks

未认证的 Cognito

Cognito 是一个 AWS 服务,使开发者能够 授予他们的应用用户访问 AWS 服务的权限。开发者将 IAM 角色授予其应用中的认证用户(潜在地,用户可以直接注册),他们也可以将 IAM 角色授予未认证用户

有关 Cognito 的基本信息,请查看:

身份池 ID

身份池可以将 IAM 角色授予仅仅 知道身份池 ID 的未认证用户(这在 查找 时相当常见),拥有此信息的攻击者可能会尝试 访问该 IAM 角色 并利用它。 此外,IAM 角色也可以分配给访问身份池的 认证用户。如果攻击者能够 注册用户 或已经 访问身份池中使用的身份提供者,则可以访问 授予认证用户的 IAM 角色 并滥用其权限。

查看如何做到这一点

用户池 ID

默认情况下,Cognito 允许 注册新用户。能够注册用户可能会让你 访问 底层应用程序接受 Cognito 用户池作为身份提供者的身份池的认证 IAM 访问角色查看如何做到这一点

Pacu 模块用于渗透测试和枚举

Pacu,AWS 利用框架,现在包括 "cognito__enum" 和 "cognito__attack" 模块,这些模块自动枚举账户中的所有 Cognito 资产并标记弱配置、用于访问控制的用户属性等,同时还自动创建用户(包括 MFA 支持)和基于可修改自定义属性、可用身份池凭证、可假设角色的 ID 令牌等的权限提升。

有关模块功能的描述,请参见 博客文章 的第二部分。有关安装说明,请参见主 Pacu 页面。

用法

示例 cognito__attack 用法,尝试在给定身份池和用户池客户端上创建用户和所有权限提升向量:

Pacu (new:test) > run cognito__attack --username randomuser --email XX+sdfs2@gmail.com --identity_pools
us-east-2:a06XXXXX-c9XX-4aXX-9a33-9ceXXXXXXXXX --user_pool_clients
59f6tuhfXXXXXXXXXXXXXXXXXX@us-east-2_0aXXXXXXX

示例 cognito__enum 用法,以收集当前 AWS 账户中可见的所有用户池、用户池客户端、身份池、用户等:

Pacu (new:test) > run cognito__enum
支持 HackTricks

Last updated