From d87c34475a13dd15106ff8a0d7031560d7a60724 Mon Sep 17 00:00:00 2001 From: Translator Date: Mon, 18 Aug 2025 14:21:18 +0000 Subject: [PATCH] Translated ['src/pentesting-cloud/aws-security/aws-services/aws-cognito- --- .../cognito-identity-pools.md | 60 ++++++++++++------- 1 file changed, 37 insertions(+), 23 deletions(-) diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/cognito-identity-pools.md b/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/cognito-identity-pools.md index d81ba3405..15c1b7b69 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/cognito-identity-pools.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/cognito-identity-pools.md @@ -43,19 +43,19 @@ Identity Pool セッションを生成するには、まず **Identity ID を生 ### Tools for pentesting -- [Pacu](https://github.com/RhinoSecurityLabs/pacu) は、AWS のエクスプロイトフレームワークで、現在 "cognito\_\_enum" および "cognito\_\_attack" モジュールが含まれており、アカウント内のすべての Cognito アセットの列挙を自動化し、弱い構成、アクセス制御に使用されるユーザー属性などをフラグ付けし、ユーザー作成(MFA サポートを含む)や、変更可能なカスタム属性、使用可能なアイデンティティプールの資格情報、ID トークン内の引き受け可能なロールに基づく特権昇格を自動化します。 +- [Pacu](https://github.com/RhinoSecurityLabs/pacu) は、AWS のエクスプロイトフレームワークで、現在 "cognito\_\_enum" および "cognito\_\_attack" モジュールが含まれており、アカウント内のすべての Cognito アセットの列挙を自動化し、弱い構成、アクセス制御に使用されるユーザー属性などをフラグ付けし、またユーザー作成(MFA サポートを含む)や、変更可能なカスタム属性に基づく特権昇格、使用可能なアイデンティティプールの資格情報、ID トークン内の引き受け可能なロールなどを自動化します。 モジュールの機能の説明については、[ブログ記事](https://rhinosecuritylabs.com/aws/attacking-aws-cognito-with-pacu-p2)のパート 2 を参照してください。インストール手順については、メインの [Pacu](https://github.com/RhinoSecurityLabs/pacu) ページを参照してください。 #### Usage -サンプル cognito\_\_attack 使用法は、特定のアイデンティティプールおよびユーザープールクライアントに対してユーザー作成とすべての特権昇格ベクターを試みるものです: +サンプルの cognito\_\_attack 使用法は、特定のアイデンティティプールおよびユーザープールクライアントに対してユーザー作成とすべての特権昇格ベクターを試みるものです: ```bash 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 アカウントで表示されるすべてのユーザープール、ユーザープールクライアント、アイデンティティプール、ユーザーなどを収集します: +サンプル cognito\_\_enum を使用して、現在の AWS アカウントで表示されるすべてのユーザープール、ユーザープールクライアント、アイデンティティプール、ユーザーなどを収集します: ```bash Pacu (new:test) > run cognito__enum ``` @@ -75,12 +75,12 @@ For more information check https://github.com/padok-team/cognito-scanner ### 認証されていない -攻撃者がCognitoアプリで**AWSクレデンシャル**を取得するために認証されていないユーザーとして知っておく必要がある唯一のことは**アイデンティティプールID**であり、この**IDはハードコーディングされている必要があります**。IDは次のようになります: `eu-west-1:098e5341-8364-038d-16de-1865e435da3b`(ブルートフォース攻撃はできません)。 +攻撃者がCognitoアプリで認証されていないユーザーとして**AWS資格情報**を取得するために知っておくべき唯一のことは**アイデンティティプールID**であり、この**IDはウェブ/モバイル**アプリケーションにハードコーディングされている必要があります。IDは次のようになります: `eu-west-1:098e5341-8364-038d-16de-1865e435da3b`(ブルートフォース攻撃はできません)。 > [!TIP] -> **IAM Cognitoの認証されていないロールは、デフォルトで** `Cognito_Unauth_Role` **と呼ばれます** +> **IAM Cognitoの認証されていないロールは、デフォルトで** `Cognito_Unauth_Role` と呼ばれます。 -ハードコーディングされたアイデンティティプールIDが見つかり、認証されていないユーザーを許可している場合、次の方法でAWSクレデンシャルを取得できます: +ハードコーディングされたアイデンティティプールIDが見つかり、認証されていないユーザーを許可している場合、次の方法でAWS資格情報を取得できます: ```python import requests @@ -112,13 +112,13 @@ aws cognito-identity get-id --identity-pool-id --no-sign aws cognito-identity get-credentials-for-identity --identity-id --no-sign ``` > [!WARNING] -> デフォルトでは、認証されていないcognito **ユーザーは、ポリシーを介して割り当てられていても、いかなる権限も持つことができません**。次のセクションを確認してください。 +> デフォルトでは、認証されていないcognito **ユーザーはポリシーを介して割り当てられていても、いかなる権限も持つことができません**。次のセクションを確認してください。 ### 強化された認証フローと基本認証フロー -前のセクションでは、**デフォルトの強化された認証フロー**に従いました。このフローは、生成されたIAMロールセッションに**制限的な**[**セッションポリシー**](../../aws-basic-information/index.html#session-policies)を設定します。このポリシーは、セッションが[**このリストのサービスを使用することを許可する**](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html#access-policies-scope-down-services)だけです(ロールが他のサービスへのアクセスを持っていても)。 +前のセクションでは、**デフォルトの強化された認証フロー**に従いました。このフローは、生成されたIAMロールセッションに**制限的な** [**セッションポリシー**](../../aws-basic-information/index.html#session-policies)を設定します。このポリシーは、セッションが[**このリストのサービスを使用することを許可する**](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html#access-policies-scope-down-services)だけです(ロールが他のサービスにアクセスできた場合でも)。 -しかし、これを回避する方法があります。**アイデンティティプールに「基本(クラシック)フロー」が有効になっている場合**、ユーザーはそのフローを使用してセッションを取得でき、**その制限的なセッションポリシーは適用されません**。 +ただし、これを回避する方法があります。**アイデンティティプールに「基本(クラシック)フロー」が有効になっている場合**、ユーザーはそのフローを使用してセッションを取得でき、**その制限的なセッションポリシーは適用されません**。 ```bash # Get auth ID aws cognito-identity get-id --identity-pool-id --no-sign @@ -131,7 +131,7 @@ aws cognito-identity get-open-id-token --identity-id --no-sign aws sts assume-role-with-web-identity --role-arn "arn:aws:iam:::role/" --role-session-name sessionname --web-identity-token --no-sign ``` > [!WARNING] -> この**エラー**が表示される場合、**基本フローが有効になっていない(デフォルト)**ためです。 +> この**エラー**が表示された場合、**基本フローが有効になっていない(デフォルト)**ためです。 > `An error occurred (InvalidParameterException) when calling the GetOpenIdToken operation: Basic (classic) flow is not enabled, please use enhanced flow.` @@ -140,36 +140,50 @@ IAM資格情報のセットを持っている場合は、[どのアクセス権 ### 認証済み > [!NOTE] -> **認証済みユーザー**には**異なる権限**が付与される可能性があるため、もし**アプリ内でサインアップできる**場合は、それを試みて新しい資格情報を取得してください。 +> **認証済みユーザー**には**異なる権限**が付与される可能性があるため、**アプリ内でサインアップ**できる場合は、それを試みて新しい資格情報を取得してください。 -**認証済みユーザーがIdentity Poolにアクセスするための役割**も存在する可能性があります。 +**認証済みユーザーがIdentity Poolにアクセスするための役割**も利用可能な場合があります。 -そのためには、**アイデンティティプロバイダー**へのアクセスが必要です。もしそれが**Cognitoユーザープール**であれば、デフォルトの動作を悪用して**自分で新しいユーザーを作成できるかもしれません**。 +そのためには、**アイデンティティプロバイダー**へのアクセスが必要です。もしそれが**Cognitoユーザープール**であれば、デフォルトの動作を悪用して**自分で新しいユーザーを作成**できるかもしれません。 > [!TIP] > **IAM Cognito認証済みロールはデフォルトで** `Cognito_Auth_Role` と呼ばれます。 いずれにせよ、**以下の例**は、Identity Poolにアクセスするために使用される**Cognitoユーザープール**にすでにログインしていることを前提としています(他のタイプのアイデンティティプロバイダーも構成されている可能性があることを忘れないでください)。 -
aws cognito-identity get-id \
+

+# 更新されたフォーマット
+aws cognito-identity get-id \
 --identity-pool-id  \
---logins cognito-idp..amazonaws.com/=
+--logins '{"cognito-idp..amazonaws.com/": ""}'
 
-# 前のコマンドの応答からidentity_idを取得
 aws cognito-identity get-credentials-for-identity \
 --identity-id  \
---logins cognito-idp..amazonaws.com/=
+--logins '{"cognito-idp..amazonaws.com/": ""}'
 
-
-# IdTokenにはユーザーがUser Poolグループのためにアクセスできる役割が含まれています
-# --custom-role-arnを使用して特定の役割の資格情報を取得します
 aws cognito-identity get-credentials-for-identity \
 --identity-id  \
-    --custom-role-arn  \
-    --logins cognito-idp..amazonaws.com/=
+--custom-role-arn  \
+--logins '{"cognito-idp..amazonaws.com/": ""}'
+
+ +> **非推奨フォーマット** — これらは現在のAWS CLIでは動作しない可能性があります: +

+aws cognito-identity get-id \
+--identity-pool-id  \
+--logins cognito-idp..amazonaws.com/=
+
+aws cognito-identity get-credentials-for-identity \
+--identity-id  \
+--logins cognito-idp..amazonaws.com/=
+
+aws cognito-identity get-credentials-for-identity \
+--identity-id  \
+--custom-role-arn  \
+--logins cognito-idp..amazonaws.com/=
 
> [!WARNING] -> ユーザーがログインしているアイデンティティプロバイダーや**ユーザー**(クレームを使用)に応じて、**異なるIAMロールを構成することが可能です**。したがって、同じまたは異なるプロバイダーを通じて異なるユーザーにアクセスできる場合は、**すべてのユーザーのIAMロールにログインしてアクセスする価値があるかもしれません**。 +> **アイデンティティプロバイダー**によってユーザーがログインしている場合や、**ユーザー**(クレームを使用)によって異なるIAMロールを**構成することが可能**です。したがって、同じまたは異なるプロバイダーを通じて異なるユーザーにアクセスできる場合は、**すべてのユーザーのIAMロールにログインしてアクセスする価値があるかもしれません**。 {{#include ../../../../banners/hacktricks-training.md}}