AWS - Cognito Unauthenticated Enum

支持 HackTricks

未经身份验证的 Cognito

Cognito 是 AWS 的一项服务,使开发人员能够授予其应用用户访问 AWS 服务的权限。开发人员将在其应用中为经过身份验证的用户授予 IAM 角色(潜在的用户只需注册即可),他们还可以为未经身份验证的用户授予 IAM 角色

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

AWS - Cognito Enum

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

Pacu,AWS 利用框架,现在包括“cognito__enum”和“cognito__attack”模块,可自动枚举帐户中所有 Cognito 资产,并标记弱配置、用于访问控制的用户属性等,并根据可修改的自定义属性、可用的身份池凭据、ID 令牌中可假定的角色等自动创建用户(包括 MFA 支持)和特权升级。

有关模块功能的描述,请参阅博客文章的第 2 部分。有关安装说明,请参阅主要的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

身份池 ID

身份池可以向未经身份验证的用户授予 IAM 角色,只需知道身份池 ID(通常容易找到),攻击者利用这些信息可以尝试访问该 IAM 角色并利用它。 此外,IAM 角色也可以分配给已经通过身份池访问的经过身份验证的用户。如果攻击者可以注册一个用户或已经访问了身份提供者,那么他可以访问分配给经过身份验证的用户的 IAM 角色并滥用其权限。

查看如何执行此操作.

用户池 ID

默认情况下,Cognito 允许注册新用户。能够注册用户可能会使您访问底层应用程序或者接受 Cognito 用户池作为身份提供者的身份池的经过身份验证的 IAM 访问角色查看如何执行此操作.

Last updated