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

This commit is contained in:
Translator
2025-08-18 14:40:09 +00:00
parent ff12945534
commit 3841ffb338
2 changed files with 14 additions and 14 deletions
@@ -4,7 +4,7 @@
## Podstawowe informacje
Identity pools odgrywają kluczową rolę, umożliwiając użytkownikom **uzyskanie tymczasowych poświadczeń**. Poświadczenia te są niezbędne do uzyskania dostępu do różnych usług AWS, w tym między innymi Amazon S3 i DynamoDB. Ciekawą cechą identity pools jest ich wsparcie zarówno dla anonimowych użytkowników gości, jak i dla różnych dostawców tożsamości do uwierzytelniania użytkowników. Obsługiwane dostawcy tożsamości to:
Identity pools odgrywają kluczową rolę, umożliwiając użytkownikom **uzyskanie tymczasowych poświadczeń**. Poświadczenia te są niezbędne do uzyskania dostępu do różnych usług AWS, w tym między innymi Amazon S3 i DynamoDB. Cechą wyróżniającą identity pools jest ich wsparcie zarówno dla anonimowych użytkowników gości, jak i dla różnych dostawców tożsamości do uwierzytelniania użytkowników. Obsługiwani dostawcy tożsamości obejmują:
- Amazon Cognito user pools
- Opcje logowania społecznościowego, takie jak Facebook, Google, Login with Amazon i Sign in with Apple
@@ -35,7 +35,7 @@ print(response)
```
### Cognito Sync
Aby wygenerować sesje Identity Pool, najpierw musisz **wygenerować Identity ID**. To Identity ID jest **identyfikacją sesji tego użytkownika**. Te identyfikacje mogą mieć do 20 zestawów danych, które mogą przechowywać do 1 MB par klucz-wartość.
Aby wygenerować sesje Identity Pool, najpierw musisz **wygenerować Identity ID**. Ten Identity ID to **identyfikacja sesji tego użytkownika**. Te identyfikacje mogą mieć do 20 zestawów danych, które mogą przechowywać do 1MB par klucz-wartość.
To jest **przydatne do przechowywania informacji o użytkowniku** (który zawsze będzie używał tego samego Identity ID).
@@ -49,17 +49,17 @@ Aby uzyskać opis funkcji modułów, zobacz część 2 [postu na blogu](https://
#### Usage
Przykład użycia cognito\_\_attack do próby stworzenia użytkownika i wszystkich wektorów privesc przeciwko danej puli tożsamości i klientowi puli użytkowników:
Przykład użycia cognito\_\_attack do próby tworzenia użytkownika i wszystkich wektorów privesc przeciwko danej puli tożsamości i kliencie puli użytkowników:
```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
```
Przykładowe użycie cognito\_\_enum do zebrania wszystkich pul użytkowników, klientów pul użytkowników, pul tożsamości, użytkowników itp. widocznych w bieżącym koncie AWS:
Przykład użycia cognito\_\_enum do zbierania wszystkich pul użytkowników, klientów pul użytkowników, pul tożsamości, użytkowników itp. widocznych w bieżącym koncie AWS:
```bash
Pacu (new:test) > run cognito__enum
```
- [Cognito Scanner](https://github.com/padok-team/cognito-scanner) to narzędzie CLI w Pythonie, które implementuje różne ataki na Cognito, w tym niechciane tworzenie kont i eskalację w puli tożsamości.
- [Cognito Scanner](https://github.com/padok-team/cognito-scanner) to narzędzie CLI w Pythonie, które implementuje różne ataki na Cognito, w tym niechciane tworzenie kont i eskalację puli tożsamości.
#### Instalacja
```bash
@@ -75,12 +75,12 @@ Dla uzyskania dodatkowych informacji sprawdź https://github.com/padok-team/cogn
### Nieautoryzowany
Jedyną rzeczą, którą atakujący musi wiedzieć, aby **uzyskać dane uwierzytelniające AWS** w aplikacji Cognito jako nieautoryzowany użytkownik, jest **ID puli tożsamości**, a to **ID musi być zakodowane na sztywno** w **aplikacji** webowej/mobilnej, aby mogła z niego korzystać. ID wygląda tak: `eu-west-1:098e5341-8364-038d-16de-1865e435da3b` (nie można go złamać metodą brute force).
Jedyną rzeczą, którą atakujący musi wiedzieć, aby **uzyskać dane uwierzytelniające AWS** w aplikacji Cognito jako nieautoryzowany użytkownik, jest **ID puli tożsamości**, a to **ID musi być zakodowane na stałe** w **aplikacji** webowej/mobilnej, aby mogła z niego korzystać. ID wygląda tak: `eu-west-1:098e5341-8364-038d-16de-1865e435da3b` (nie można go złamać metodą brute force).
> [!TIP]
> **Nieautoryzowana rola IAM Cognito utworzona przez** jest domyślnie nazywana `Cognito_<Nazwa puli tożsamości>Unauth_Role`
Jeśli znajdziesz ID puli tożsamości zakodowane na sztywno i pozwala na dostęp dla nieautoryzowanych użytkowników, możesz uzyskać dane uwierzytelniające AWS za pomocą:
Jeśli znajdziesz ID puli tożsamości zakodowane na stałe i pozwala ono na dostęp dla nieautoryzowanych użytkowników, możesz uzyskać dane uwierzytelniające AWS za pomocą:
```python
import requests
@@ -118,7 +118,7 @@ aws cognito-identity get-credentials-for-identity --identity-id <identity_id> --
Poprzednia sekcja dotyczyła **domyślnego ulepszonego przepływu uwierzytelniania**. Ten przepływ ustawia **ograniczającą** [**politykę sesji**](../../aws-basic-information/index.html#session-policies) dla wygenerowanej sesji roli IAM. Ta polityka pozwoli tylko na [**korzystanie z usług z tej listy**](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html#access-policies-scope-down-services) (nawet jeśli rola miała dostęp do innych usług).
Jednak istnieje sposób, aby to obejść, jeśli **pula tożsamości ma włączony "Podstawowy (Klasyczny) Przepływ"**, użytkownik będzie mógł uzyskać sesję korzystając z tego przepływu, która **nie będzie miała tej ograniczającej polityki sesji**.
Jednak istnieje sposób, aby to obejść, jeśli **pula tożsamości ma włączony "Podstawowy (Klasyczny) Przepływ"**, użytkownik będzie mógł uzyskać sesję korzystając z tego przepływu, który **nie będzie miał tej ograniczającej polityki sesji**.
```bash
# Get auth ID
aws cognito-identity get-id --identity-pool-id <identity_pool_id> --no-sign
@@ -133,9 +133,9 @@ aws sts assume-role-with-web-identity --role-arn "arn:aws:iam::<acc_id>:role/<ro
> [!WARNING]
> Jeśli otrzymasz ten **błąd**, to dlatego, że **podstawowy przepływ nie jest włączony (domyślnie)**
> `Wystąpił błąd (InvalidParameterException) podczas wywoływania operacji GetOpenIdToken: Podstawowy (klasyczny) przepływ nie jest włączony, proszę użyć ulepszonego przepływu.`
> `An error occurred (InvalidParameterException) when calling the GetOpenIdToken operation: Basic (classic) flow is not enabled, please use enhanced flow.`
Mając zestaw poświadczeń IAM, powinieneś sprawdzić [jakie masz uprawnienia](../../index.html#whoami) i spróbować [eskalować uprawnienia](../../aws-privilege-escalation/index.html).
Mając zestaw poświadczeń IAM, powinieneś sprawdzić [jakie masz uprawnienia](../../index.html#whoami) i spróbować [podnieść uprawnienia](../../aws-privilege-escalation/index.html).
### Uwierzytelniony
@@ -144,10 +144,10 @@ Mając zestaw poświadczeń IAM, powinieneś sprawdzić [jakie masz uprawnienia]
Mogą być również dostępne **role** dla **uwierzytelnionych użytkowników uzyskujących dostęp do puli tożsamości**.
W tym celu możesz potrzebować dostępu do **dostawcy tożsamości**. Jeśli jest to **Cognito User Pool**, być może możesz wykorzystać domyślne zachowanie i **samodzielnie utworzyć nowego użytkownika**.
W tym celu możesz potrzebować dostępu do **dostawcy tożsamości**. Jeśli to jest **Cognito User Pool**, być może możesz wykorzystać domyślne zachowanie i **samodzielnie utworzyć nowego użytkownika**.
> [!TIP]
> **Rola uwierzytelniona IAM Cognito utworzona przez** jest domyślnie nazywana `Cognito_<Nazwa Puli Tożsamości>Auth_Role`
> **IAM Cognito uwierzytelniona rola utworzona przez** jest domyślnie nazywana `Cognito_<Nazwa Puli Tożsamości>Auth_Role`
W każdym razie, **następny przykład** zakłada, że już zalogowałeś się w **Cognito User Pool** używanym do uzyskania dostępu do Puli Tożsamości (nie zapomnij, że inne typy dostawców tożsamości mogą być również skonfigurowane).
@@ -20,7 +20,7 @@ task-$(date '+%Y%m%d%H%M%S') \
```
### `cloudtasks.tasks.run`, `cloudtasks.tasks.list`
Napastnik z tymi uprawnieniami może **uruchamiać istniejące zaplanowane zadania** bez posiadania uprawnień do konta usługi powiązanego z zadaniem. Umożliwia to wykonywanie zadań, które zostały wcześniej utworzone z kontami usługi o wyższych uprawnieniach.
Napastnik z tymi uprawnieniami może **uruchamiać istniejące zaplanowane zadania** bez posiadania uprawnień do konta usługi powiązanego z zadaniem. Umożliwia to wykonywanie zadań, które zostały wcześniej utworzone z użyciem kont usług o wyższych uprawnieniach.
```bash
gcloud tasks run projects/<project_id>/locations/us-central1/queues/<queue_name>/tasks/<task_id>
```
@@ -36,7 +36,7 @@ gcloud tasks queues add-iam-policy-binding \
--member serviceAccount:<account>@<project_id>.iam.gserviceaccount.com \
--role roles/cloudtasks.admin
```
To pozwala atakującemu przyznać pełne uprawnienia administratora Cloud Tasks w kolejce do dowolnego konta usługi, które kontroluje.
To pozwala atakującemu na przyznanie pełnych uprawnień administratora Cloud Tasks w kolejce do dowolnego konta usługi, które kontroluje.
## References