mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-07-28 22:51:09 -07:00
Translated ['src/pentesting-cloud/aws-security/aws-services/aws-cognito-
This commit is contained in:
+12
-12
@@ -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).
|
||||
|
||||
|
||||
+2
-2
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user