From 8a79a14d7727f3d35929b497707f52230d63f37d Mon Sep 17 00:00:00 2001 From: Translator Date: Mon, 18 Aug 2025 14:20:40 +0000 Subject: [PATCH] Translated ['src/pentesting-cloud/aws-security/aws-services/aws-cognito- --- .../cognito-identity-pools.md | 52 ++++++++++++------- 1 file changed, 33 insertions(+), 19 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 f5771a3e0..507becc03 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 @@ -37,13 +37,13 @@ print(response) Щоб згенерувати сесії Identity Pool, спочатку потрібно **згенерувати ідентифікатор Identity ID**. Цей ідентифікатор є **ідентифікацією сесії цього користувача**. Ці ідентифікації можуть мати до 20 наборів даних, які можуть зберігати до 1 МБ пар ключ-значення. -Це **корисно для збереження інформації про користувача** (який завжди буде використовувати один і той же ідентифікатор Identity ID). +Це **корисно для зберігання інформації про користувача** (який завжди буде використовувати один і той же ідентифікатор Identity ID). Більше того, сервіс **cognito-sync** є сервісом, який дозволяє **керувати та синхронізувати цю інформацію** (в наборах даних, надсилаючи інформацію в потоках та повідомленнях SNS...). ### Tools for pentesting -- [Pacu](https://github.com/RhinoSecurityLabs/pacu), фреймворк експлуатації AWS, тепер включає модулі "cognito\_\_enum" та "cognito\_\_attack", які автоматизують перерахування всіх активів Cognito в обліковому записі та позначають слабкі конфігурації, атрибути користувачів, що використовуються для контролю доступу тощо, а також автоматизують створення користувачів (включаючи підтримку MFA) та ескалацію привілеїв на основі змінних атрибутів, що підлягають модифікації, використовуваних облікових даних пулу ідентичностей, ролей, які можна прийняти в токенах ідентифікації тощо. +- [Pacu](https://github.com/RhinoSecurityLabs/pacu), фреймворк експлуатації AWS, тепер включає модулі "cognito\_\_enum" та "cognito\_\_attack", які автоматизують перерахування всіх активів Cognito в обліковому записі та позначають слабкі конфігурації, атрибути користувачів, що використовуються для контролю доступу тощо, а також автоматизують створення користувачів (включаючи підтримку MFA) та ескалацію привілеїв на основі змінних користувацьких атрибутів, використовуваних облікових даних пулу ідентичностей, ролей, які можна прийняти в токенах ідентифікації тощо. Для опису функцій модулів дивіться частину 2 [блог-посту](https://rhinosecuritylabs.com/aws/attacking-aws-cognito-with-pacu-p2). Для інструкцій з установки дивіться основну сторінку [Pacu](https://github.com/RhinoSecurityLabs/pacu). @@ -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 ``` @@ -73,14 +73,14 @@ $ cognito-scanner --help ## Доступ до IAM ролей -### Неавтентифіковані +### Неавтентифікований -Єдине, що атакуючий повинен знати, щоб **отримати AWS облікові дані** в додатку Cognito як неавтентифікований користувач, це **ID пулу ідентичності**, і цей **ID повинен бути закодований** в веб/мобільному **додатку** для його використання. ID виглядає так: `eu-west-1:098e5341-8364-038d-16de-1865e435da3b` (його не можна зламати методом перебору). +Єдине, що потрібно знати зловмиснику, щоб **отримати AWS облікові дані** в додатку Cognito як неавтентифікований користувач, це **ID пулу ідентичності**, і цей **ID повинен бути закодований** в веб/мобільному **додатку** для його використання. ID виглядає так: `eu-west-1:098e5341-8364-038d-16de-1865e435da3b` (його не можна зламати методом перебору). > [!TIP] > **IAM роль Cognito для неавтентифікованих користувачів, створена через**, за замовчуванням називається `Cognito_<Назва пулу ідентичності>Unauth_Role` -Якщо ви знайдете ID пулу ідентичності, закодований у коді, і він дозволяє неавтентифікованим користувачам, ви можете отримати AWS облікові дані за допомогою: +Якщо ви знайдете ID пулу ідентичності, закодований в додатку, і він дозволяє неавтентифікованим користувачам, ви можете отримати AWS облікові дані за допомогою: ```python import requests @@ -114,9 +114,9 @@ aws cognito-identity get-credentials-for-identity --identity-id -- > [!WARNING] > Зверніть увагу, що за замовчуванням неавтентифікований cognito **користувач НЕ МОЖЕ мати жодних дозволів, навіть якщо вони були призначені через політику**. Перевірте наступний розділ. -### Розширений vs Базовий потік автентифікації +### Покращений vs Базовий потік автентифікації -Попередній розділ слідував **за замовчуванням розширеному потоку автентифікації**. Цей потік встановлює **обмежувальну** [**політику сесії**](../../aws-basic-information/index.html#session-policies) для сесії ролі IAM, що генерується. Ця політика дозволить сесії лише [**використовувати послуги з цього списку**](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html#access-policies-scope-down-services) (навіть якщо роль мала доступ до інших послуг). +Попередній розділ слідував **за замовчуванням покращеному потоку автентифікації**. Цей потік встановлює **обмежувальну** [**політику сесії**](../../aws-basic-information/index.html#session-policies) для сесії ролі IAM, що генерується. Ця політика дозволить сесії лише [**використовувати послуги з цього списку**](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html#access-policies-scope-down-services) (навіть якщо роль мала доступ до інших послуг). Однак є спосіб обійти це, якщо **Ідентифікаційний пул має увімкнений "Базовий (Класичний) Потік"**, користувач зможе отримати сесію, використовуючи цей потік, який **не матиме цієї обмежувальної політики сесії**. ```bash @@ -147,29 +147,43 @@ aws sts assume-role-with-web-identity --role-arn "arn:aws:iam:::role/ [!TIP] -> **IAM роль Cognito, створена через**, за замовчуванням називається `Cognito_<Ім'я Identity Pool>Auth_Role` +> **IAM роль аутентифікованого Cognito, створена через**, за замовчуванням називається `Cognito_Auth_Role` У будь-якому випадку, **наступний приклад** передбачає, що ви вже увійшли в **Cognito User Pool**, який використовується для доступу до Identity Pool (не забувайте, що також можуть бути налаштовані інші типи постачальників ідентичності). -
aws cognito-identity get-id \
+

+# Updated format
+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/": ""}'
+
+ +> **Deprecated format** — ці команди можуть більше не працювати з поточним 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}}