Translated ['src/pentesting-cloud/aws-security/aws-services/aws-cognito-

This commit is contained in:
Translator
2025-08-18 14:46:45 +00:00
parent a644a6c5c0
commit 7b86cff528

View File

@@ -35,7 +35,7 @@ print(response)
```
### Cognito Sync
要生成身份池会话,您首先需要**生成身份 ID**。这个身份 ID 是**该用户会话的标识**。这些标识可以有多达 20 个数据集,可以存储多达 1MB 的键值对。
要生成身份池会话,您首先需要**生成身份 ID**。这个身份 ID 是**该用户会话的标识**。这些标识可以有多达 20 个数据集,最多可以存储 1MB 的键值对。
这对于**保持用户信息**(用户将始终使用相同的身份 ID是**有用的**。
@@ -55,7 +55,7 @@ Pacu (new:test) > run cognito__attack --username randomuser --email XX+sdfs2@gma
us-east-2:a06XXXXX-c9XX-4aXX-9a33-9ceXXXXXXXXX --user_pool_clients
59f6tuhfXXXXXXXXXXXXXXXXXX@us-east-2_0aXXXXXXX
```
示例 cognito\_\_enum 用法以收集当前 AWS 账户中可见的所有用户池、用户池客户端、身份池、用户等:
示例 cognito__enum 用法以收集当前 AWS 账户中可见的所有用户池、用户池客户端、身份池、用户等:
```bash
Pacu (new:test) > run cognito__enum
```
@@ -75,10 +75,10 @@ $ cognito-scanner --help
### 未认证
攻击者需要知道的唯一信息,以便在 Cognito 应用中作为未认证用户**获取 AWS 凭证**,就是**身份池 ID**,并且此**ID 必须在**web/mobile **应用中硬编码**以供使用。ID 看起来像这样`eu-west-1:098e5341-8364-038d-16de-1865e435da3b`(无法通过暴力破解获得)。
攻击者需要知道的唯一信息**在 Cognito 应用中获取 AWS 凭证****身份池 ID**,并且此 **ID 必须硬编码**web/mobile **应用程序** 中以供使用。ID 的格式如下`eu-west-1:098e5341-8364-038d-16de-1865e435da3b`(无法通过暴力破解获得)。
> [!TIP]
> 通过创建的**IAM Cognito 未认证角色默认称为** `Cognito_<Identity Pool name>Unauth_Role`
> 默认情况下,通过创建的 **IAM Cognito 未认证角色** 被称为 `Cognito_<Identity Pool name>Unauth_Role`
如果您发现一个硬编码的身份池 ID 并且它允许未认证用户,您可以使用以下方法获取 AWS 凭证:
```python
@@ -131,25 +131,25 @@ aws cognito-identity get-open-id-token --identity-id <identity_id> --no-sign
aws sts assume-role-with-web-identity --role-arn "arn:aws:iam::<acc_id>:role/<role_name>" --role-session-name sessionname --web-identity-token <token> --no-sign
```
> [!WARNING]
> 如果您收到此 **错误**,则是因为 **基本流程未启用(默认)**
> 如果您收到此**错误**,则是因为**基本流程未启用(默认)**
> `发生错误InvalidParameterException调用 GetOpenIdToken 操作时:基本(经典)流程未启用,请使用增强流程。`
拥有一组 IAM 凭证后,您应该检查 [您拥有的访问权限](../../index.html#whoami) 并尝试 [提升权限](../../aws-privilege-escalation/index.html)。
拥有一组 IAM 凭证后,您应该检查[您拥有的访问权限](../../index.html#whoami)并尝试[提升权限](../../aws-privilege-escalation/index.html)。
### 已认证
> [!NOTE]
> 请记住,**已认证用户**可能会被授予 **不同的权限**,因此如果您可以 **在应用程序内注册**,请尝试这样做并获取新凭证。
> 请记住,**已认证用户**可能会被授予**不同的权限**,因此如果您可以**在应用程序内注册**,请尝试这样做并获取新凭证。
对于 **访问身份池的已认证用户**,可能还有 **角色** 可用。
对于**访问身份池的已认证用户**,可能还有**角色**可用。
为此,您可能需要访问 **身份提供者**。如果这是 **Cognito 用户池**,也许您可以利用默认行为 **自己创建一个新用户**
为此,您可能需要访问**身份提供者**。如果这是一个**Cognito 用户池**,也许您可以利用默认行为**自己创建一个新用户**。
> [!TIP]
> 通过 **IAM Cognito 认证角色创建的角色** 默认称为 `Cognito_<Identity Pool name>Auth_Role`
> 通过创建的**IAM Cognito 认证角色**默认称为 `Cognito_<Identity Pool name>Auth_Role`
无论如何,**以下示例** 假设您已经登录到用于访问身份池的 **Cognito 用户池**(不要忘记,其他类型的身份提供者也可以被配置)。
无论如何,**以下示例**假设您已经登录到用于访问身份池的**Cognito 用户池**(不要忘记,其他类型的身份提供者也可以被配置)。
<pre class="language-bash"><code class="lang-bash">
# 更新格式
@@ -184,6 +184,6 @@ aws cognito-identity get-credentials-for-identity \
</code></pre>
> [!WARNING]
> 可以 **根据用户登录的身份提供者** 配置不同的 IAM 角色,甚至仅仅根据 **用户**(使用声明)。因此,如果您通过相同或不同的提供者访问不同的用户,可能 **值得登录并访问他们所有 IAM 角色**。
> 可以**根据用户登录的身份提供者**或甚至**根据用户**(使用声明)配置不同的 IAM 角色。因此,如果您通过相同或不同的提供者访问不同的用户,**登录并访问他们所有 IAM 角色可能是值得的**。
{{#include ../../../../banners/hacktricks-training.md}}