mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2025-12-09 14:20:48 -08:00
Translated ['src/pentesting-cloud/aws-security/aws-services/aws-cognito-
This commit is contained in:
@@ -39,7 +39,7 @@ Identity Pool 세션을 생성하려면 먼저 **Identity ID를 생성해야**
|
||||
|
||||
이는 **사용자의 정보를 유지하는 데 유용합니다** (항상 동일한 Identity ID를 사용하는 사용자).
|
||||
|
||||
게다가, 서비스 **cognito-sync**는 **이 정보를 관리하고 동기화하는** 서비스를 제공합니다 (데이터 세트에서, 스트림 및 SNS 메시지로 정보를 전송하는 등).
|
||||
또한, 서비스 **cognito-sync**는 **이 정보를 관리하고 동기화하는** 서비스입니다 (데이터 세트에서, 스트림 및 SNS 메시지로 정보를 전송하는 등).
|
||||
|
||||
### Tools for pentesting
|
||||
|
||||
@@ -61,7 +61,7 @@ Pacu (new:test) > run cognito__enum
|
||||
```
|
||||
- [Cognito Scanner](https://github.com/padok-team/cognito-scanner)는 원치 않는 계정 생성 및 아이덴티티 풀 상승을 포함하여 Cognito에 대한 다양한 공격을 구현하는 파이썬 CLI 도구입니다.
|
||||
|
||||
#### 설치
|
||||
#### Installation
|
||||
```bash
|
||||
$ pip install cognito-scanner
|
||||
```
|
||||
@@ -69,13 +69,13 @@ $ pip install cognito-scanner
|
||||
```bash
|
||||
$ cognito-scanner --help
|
||||
```
|
||||
더 많은 정보는 https://github.com/padok-team/cognito-scanner 를 확인하세요.
|
||||
더 많은 정보는 https://github.com/padok-team/cognito-scanner를 확인하세요.
|
||||
|
||||
## IAM 역할 접근
|
||||
|
||||
### 인증되지 않음
|
||||
### 인증되지 않은 사용자
|
||||
|
||||
인증되지 않은 사용자로서 Cognito 앱에서 **AWS 자격 증명**을 **얻기 위해** 공격자가 알아야 할 유일한 것은 **Identity Pool ID**이며, 이 **ID는 웹/모바일** **애플리케이션**에 하드코딩되어 있어야 사용될 수 있습니다. ID는 다음과 같이 보입니다: `eu-west-1:098e5341-8364-038d-16de-1865e435da3b` (무작위 대입 공격이 불가능합니다).
|
||||
공격자가 Cognito 앱에서 인증되지 않은 사용자로 **AWS 자격 증명**을 얻기 위해 알아야 할 유일한 것은 **Identity Pool ID**이며, 이 **ID는 웹/모바일** **애플리케이션**에 하드코딩되어 있어야 사용될 수 있습니다. ID는 다음과 같이 보입니다: `eu-west-1:098e5341-8364-038d-16de-1865e435da3b` (무작위 대입 공격이 불가능합니다).
|
||||
|
||||
> [!TIP]
|
||||
> 기본적으로 **IAM Cognito 인증되지 않은 역할은** `Cognito_<Identity Pool name>Unauth_Role`로 호출됩니다.
|
||||
@@ -116,9 +116,9 @@ aws cognito-identity get-credentials-for-identity --identity-id <identity_id> --
|
||||
|
||||
### Enhanced vs Basic Authentication flow
|
||||
|
||||
이전 섹션은 **기본 향상된 인증 흐름**을 따랐습니다. 이 흐름은 생성된 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)합니다 (역할이 다른 서비스에 접근할 수 있었더라도).
|
||||
|
||||
그러나 **Identity pool에 "Basic (Classic) Flow"가 활성화되어 있으면**, 사용자는 해당 흐름을 사용하여 **제한적인 세션 정책이 없는** 세션을 얻을 수 있습니다.
|
||||
그러나 **Identity pool에 "Basic (Classic) Flow"가 활성화되어 있으면**, 사용자는 해당 흐름을 사용하여 **제한적인 세션 정책이 없는** 세션을 얻을 수 있는 방법이 있습니다.
|
||||
```bash
|
||||
# Get auth ID
|
||||
aws cognito-identity get-id --identity-pool-id <identity_pool_id> --no-sign
|
||||
@@ -131,20 +131,20 @@ 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]
|
||||
> 이 **오류**가 발생하는 이유는 **기본 흐름이 활성화되지 않았기 때문입니다 (기본값)**
|
||||
> 이 **오류**가 발생하는 경우, **기본 흐름이 활성화되지 않았기 때문입니다 (기본값)**
|
||||
|
||||
> `An error occurred (InvalidParameterException) when calling the GetOpenIdToken operation: Basic (classic) flow is not enabled, please use enhanced flow.`
|
||||
|
||||
IAM 자격 증명이 설정되어 있다면 [어떤 접근 권한이 있는지 확인하고](../../index.html#whoami) [권한 상승을 시도하세요](../../aws-privilege-escalation/index.html).
|
||||
IAM 자격 증명이 있는 경우 [어떤 접근 권한이 있는지 확인하고](../../index.html#whoami) [권한 상승을 시도하세요](../../aws-privilege-escalation/index.html).
|
||||
|
||||
### 인증된 사용자
|
||||
|
||||
> [!NOTE]
|
||||
> **인증된 사용자**는 아마도 **다른 권한**이 부여될 것이므로, **앱 내에서 가입할 수 있다면** 그렇게 시도하여 새로운 자격 증명을 얻으세요.
|
||||
> **인증된 사용자**는 아마도 **다른 권한**이 부여될 것이므로, **앱 내에서 가입할 수 있다면**, 그렇게 시도하여 새로운 자격 증명을 얻으세요.
|
||||
|
||||
**인증된 사용자**가 **Identity Pool**에 접근할 수 있는 **역할**이 있을 수도 있습니다.
|
||||
|
||||
이를 위해서는 **아이덴티티 제공자**에 접근할 수 있어야 합니다. 만약 그것이 **Cognito User Pool**이라면, 기본 동작을 악용하여 **직접 새로운 사용자를 생성할 수 있을지도 모릅니다**.
|
||||
이를 위해 **아이덴티티 제공자**에 접근할 필요가 있을 수 있습니다. 만약 그것이 **Cognito User Pool**이라면, 기본 동작을 악용하여 **직접 새로운 사용자를 생성할 수 있을지도 모릅니다**.
|
||||
|
||||
> [!TIP]
|
||||
> **IAM Cognito 인증 역할은 기본적으로** `Cognito_<Identity Pool name>Auth_Role`로 생성됩니다.
|
||||
@@ -152,7 +152,7 @@ IAM 자격 증명이 설정되어 있다면 [어떤 접근 권한이 있는지
|
||||
어쨌든, **다음 예제**는 이미 **Identity Pool**에 접근하기 위해 사용된 **Cognito User Pool**에 로그인한 상태를 가정합니다 (다른 유형의 아이덴티티 제공자도 구성될 수 있다는 점을 잊지 마세요).
|
||||
|
||||
<pre class="language-bash"><code class="lang-bash">
|
||||
# 업데이트된 형식
|
||||
# Updated format
|
||||
aws cognito-identity get-id \
|
||||
--identity-pool-id <identity_pool_id> \
|
||||
--logins '{"cognito-idp.<region>.amazonaws.com/<user_pool_id>": "<ID_TOKEN>"}'
|
||||
@@ -167,7 +167,7 @@ aws cognito-identity get-credentials-for-identity \
|
||||
--logins '{"cognito-idp.<region>.amazonaws.com/<user_pool_id>": "<ID_TOKEN>"}'
|
||||
</code></pre>
|
||||
|
||||
> **더 이상 사용되지 않는 형식** — 현재 AWS CLI와 함께 작동하지 않을 수 있습니다:
|
||||
> **Deprecated format** — 현재 AWS CLI와 호환되지 않을 수 있습니다:
|
||||
<pre class="language-bash"><code class="lang-bash">
|
||||
aws cognito-identity get-id \
|
||||
--identity-pool-id <identity_pool_id> \
|
||||
@@ -184,6 +184,6 @@ aws cognito-identity get-credentials-for-identity \
|
||||
</code></pre>
|
||||
|
||||
> [!WARNING]
|
||||
> 사용자가 로그인하는 아이덴티티 제공자에 따라 **다른 IAM 역할을 구성할 수 있습니다** 또는 **사용자**에 따라 (클레임을 사용하여). 따라서 동일한 또는 다른 제공자를 통해 다양한 사용자에 접근할 수 있다면, **모든 사용자의 IAM 역할에 로그인하고 접근하는 것이 가치가 있을 수 있습니다**.
|
||||
> 사용자가 로그인하는 아이덴티티 제공자에 따라 **다른 IAM 역할을 구성할 수 있습니다**. 따라서 동일한 또는 다른 제공자를 통해 여러 사용자에 접근할 수 있는 경우, **모든 사용자의 IAM 역할에 로그인하고 접근하는 것이 가치가 있을 수 있습니다**.
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -24,7 +24,7 @@ task-$(date '+%Y%m%d%H%M%S') \
|
||||
```bash
|
||||
gcloud tasks run projects/<project_id>/locations/us-central1/queues/<queue_name>/tasks/<task_id>
|
||||
```
|
||||
이 명령을 실행하는 주체는 **작업의 서비스 계정에 대한 `iam.serviceAccounts.actAs` 권한이 필요하지 않습니다**. 그러나 이는 기존 작업을 실행할 수만 있게 하며, 작업을 생성하거나 수정할 수 있는 권한은 부여하지 않습니다.
|
||||
이 명령을 실행하는 주체는 **작업의 서비스 계정에 대한 `iam.serviceAccounts.actAs` 권한이 필요하지 않습니다**. 그러나 이는 기존 작업을 실행할 수만 있으며, 작업을 생성하거나 수정할 수 있는 권한은 부여하지 않습니다.
|
||||
|
||||
### `cloudtasks.queues.setIamPolicy`
|
||||
|
||||
|
||||
Reference in New Issue
Block a user