mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-01-14 13:56:30 -08:00
Translated ['src/README.md', 'src/banners/hacktricks-training.md', 'src/
This commit is contained in:
@@ -1,20 +1,20 @@
|
||||
# AWS - IAM, Identity Center & SSO Enum
|
||||
# AWS - IAM, Центр ідентифікації та SSO Enum
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## IAM
|
||||
|
||||
You can find a **description of IAM** in:
|
||||
Ви можете знайти **опис IAM** в:
|
||||
|
||||
{{#ref}}
|
||||
../aws-basic-information/
|
||||
{{#endref}}
|
||||
|
||||
### Enumeration
|
||||
### Перерахування
|
||||
|
||||
Main permissions needed:
|
||||
Основні дозволи, які потрібні:
|
||||
|
||||
- `iam:ListPolicies`, `iam:GetPolicy` and `iam:GetPolicyVersion`
|
||||
- `iam:ListPolicies`, `iam:GetPolicy` та `iam:GetPolicyVersion`
|
||||
- `iam:ListRoles`
|
||||
- `iam:ListUsers`
|
||||
- `iam:ListGroups`
|
||||
@@ -22,10 +22,9 @@ Main permissions needed:
|
||||
- `iam:ListAttachedUserPolicies`
|
||||
- `iam:ListAttachedRolePolicies`
|
||||
- `iam:ListAttachedGroupPolicies`
|
||||
- `iam:ListUserPolicies` and `iam:GetUserPolicy`
|
||||
- `iam:ListGroupPolicies` and `iam:GetGroupPolicy`
|
||||
- `iam:ListRolePolicies` and `iam:GetRolePolicy`
|
||||
|
||||
- `iam:ListUserPolicies` та `iam:GetUserPolicy`
|
||||
- `iam:ListGroupPolicies` та `iam:GetGroupPolicy`
|
||||
- `iam:ListRolePolicies` та `iam:GetRolePolicy`
|
||||
```bash
|
||||
# All IAMs
|
||||
## Retrieves information about all IAM users, groups, roles, and policies
|
||||
@@ -89,64 +88,54 @@ aws iam get-account-password-policy
|
||||
aws iam list-mfa-devices
|
||||
aws iam list-virtual-mfa-devices
|
||||
```
|
||||
|
||||
### Permissions Brute Force
|
||||
|
||||
If you are interested in your own permissions but you don't have access to query IAM you could always brute-force them.
|
||||
Якщо вас цікавлять ваші власні дозволи, але у вас немає доступу для запиту IAM, ви завжди можете їх брутфорсити.
|
||||
|
||||
#### bf-aws-permissions
|
||||
|
||||
The tool [**bf-aws-permissions**](https://github.com/carlospolop/bf-aws-permissions) is just a bash script that will run using the indicated profile all the **`list*`, `describe*`, `get*`** actions it can find using `aws` cli help messages and **return the successful executions**.
|
||||
|
||||
Інструмент [**bf-aws-permissions**](https://github.com/carlospolop/bf-aws-permissions) - це просто bash-скрипт, який буде виконувати всі **`list*`, `describe*`, `get*`** дії, які він може знайти, використовуючи повідомлення допомоги `aws` cli, і **повертати успішні виконання**.
|
||||
```bash
|
||||
# Bruteforce permissions
|
||||
bash bf-aws-permissions.sh -p default > /tmp/bf-permissions-verbose.txt
|
||||
```
|
||||
|
||||
#### bf-aws-perms-simulate
|
||||
|
||||
The tool [**bf-aws-perms-simulate**](https://github.com/carlospolop/bf-aws-perms-simulate) can find your current permission (or the ones of other principals) if you have the permission **`iam:SimulatePrincipalPolicy`**
|
||||
|
||||
Інструмент [**bf-aws-perms-simulate**](https://github.com/carlospolop/bf-aws-perms-simulate) може знайти ваші поточні дозволи (або дозволи інших суб'єктів), якщо у вас є дозвіл **`iam:SimulatePrincipalPolicy`**
|
||||
```bash
|
||||
# Ask for permissions
|
||||
python3 aws_permissions_checker.py --profile <AWS_PROFILE> [--arn <USER_ARN>]
|
||||
```
|
||||
|
||||
#### Perms2ManagedPolicies
|
||||
|
||||
If you found **some permissions your user has**, and you think that they are being granted by a **managed AWS role** (and not by a custom one). You can use the tool [**aws-Perms2ManagedRoles**](https://github.com/carlospolop/aws-Perms2ManagedPolicies) to check all the **AWS managed roles that grants the permissions you discovered that you have**.
|
||||
|
||||
Якщо ви знайшли **деякі дозволи, які має ваш користувач**, і вважаєте, що вони надаються **керованою роллю AWS** (а не кастомною). Ви можете використовувати інструмент [**aws-Perms2ManagedRoles**](https://github.com/carlospolop/aws-Perms2ManagedPolicies), щоб перевірити всі **керовані ролі AWS, які надають дозволи, які ви виявили, що маєте**.
|
||||
```bash
|
||||
# Run example with my profile
|
||||
python3 aws-Perms2ManagedPolicies.py --profile myadmin --permissions-file example-permissions.txt
|
||||
```
|
||||
|
||||
> [!WARNING]
|
||||
> It's possible to "know" if the permissions you have are granted by an AWS managed role if you see that **you have permissions over services that aren't used** for example.
|
||||
> Можливо "знати", чи надані вам дозволи через керовану роль AWS, якщо ви бачите, що **у вас є дозволи на сервіси, які не використовуються**, наприклад.
|
||||
|
||||
#### Cloudtrail2IAM
|
||||
|
||||
[**CloudTrail2IAM**](https://github.com/carlospolop/Cloudtrail2IAM) is a Python tool that analyses **AWS CloudTrail logs to extract and summarize actions** done by everyone or just an specific user or role. The tool will **parse every cloudtrail log from the indicated bucket**.
|
||||
|
||||
[**CloudTrail2IAM**](https://github.com/carlospolop/Cloudtrail2IAM) - це інструмент на Python, який аналізує **журнали AWS CloudTrail для витягування та узагальнення дій**, виконаних усіма або лише конкретним користувачем чи роллю. Інструмент **розпарсить кожен журнал cloudtrail з вказаного бакету**.
|
||||
```bash
|
||||
git clone https://github.com/carlospolop/Cloudtrail2IAM
|
||||
cd Cloudtrail2IAM
|
||||
pip install -r requirements.txt
|
||||
python3 cloudtrail2IAM.py --prefix PREFIX --bucket_name BUCKET_NAME --profile PROFILE [--filter-name FILTER_NAME] [--threads THREADS]
|
||||
```
|
||||
|
||||
> [!WARNING]
|
||||
> If you find .tfstate (Terraform state files) or CloudFormation files (these are usually yaml files located inside a bucket with the prefix cf-templates), you can also read them to find aws configuration and find which permissions have been assigned to who.
|
||||
> Якщо ви знайдете .tfstate (файли стану Terraform) або файли CloudFormation (це зазвичай файли yaml, розташовані в бакеті з префіксом cf-templates), ви також можете їх прочитати, щоб знайти конфігурацію aws і дізнатися, які дозволи були надані кому.
|
||||
|
||||
#### enumerate-iam
|
||||
|
||||
To use the tool [**https://github.com/andresriancho/enumerate-iam**](https://github.com/andresriancho/enumerate-iam) you first need to download all the API AWS endpoints, from those the script **`generate_bruteforce_tests.py`** will get all the **"list\_", "describe\_", and "get\_" endpoints.** And finally, it will try to **access them** with the given credentials and **indicate if it worked**.
|
||||
Щоб використовувати інструмент [**https://github.com/andresriancho/enumerate-iam**](https://github.com/andresriancho/enumerate-iam), спочатку потрібно завантажити всі API AWS кінцеві точки, з яких скрипт **`generate_bruteforce_tests.py`** отримає всі **"list\_", "describe\_", і "get\_" кінцеві точки.** І, нарешті, він спробує **доступитися до них** з наданими обліковими даними і **вказати, чи спрацювало**.
|
||||
|
||||
(In my experience the **tool hangs at some point**, [**checkout this fix**](https://github.com/andresriancho/enumerate-iam/pull/15/commits/77ad5b41216e3b5f1511d0c385da8cd5984c2d3c) to try to fix that).
|
||||
(На моєму досвіді **інструмент зависає в деякий момент**, [**перевірте це виправлення**](https://github.com/andresriancho/enumerate-iam/pull/15/commits/77ad5b41216e3b5f1511d0c385da8cd5984c2d3c), щоб спробувати це виправити).
|
||||
|
||||
> [!WARNING]
|
||||
> In my experience this tool is like the previous one but working worse and checking less permissions
|
||||
|
||||
> На моєму досвіді цей інструмент схожий на попередній, але працює гірше і перевіряє менше дозволів.
|
||||
```bash
|
||||
# Install tool
|
||||
git clone git@github.com:andresriancho/enumerate-iam.git
|
||||
@@ -163,11 +152,9 @@ cd ..
|
||||
# Enumerate permissions
|
||||
python3 enumerate-iam.py --access-key ACCESS_KEY --secret-key SECRET_KEY [--session-token SESSION_TOKEN] [--region REGION]
|
||||
```
|
||||
|
||||
#### weirdAAL
|
||||
|
||||
You could also use the tool [**weirdAAL**](https://github.com/carnal0wnage/weirdAAL/wiki). This tool will check **several common operations on several common services** (will check some enumeration permissions and also some privesc permissions). But it will only check the coded checks (the only way to check more stuff if coding more tests).
|
||||
|
||||
Ви також можете використовувати інструмент [**weirdAAL**](https://github.com/carnal0wnage/weirdAAL/wiki). Цей інструмент перевірить **декілька загальних операцій на декількох загальних сервісах** (перевірить деякі дозволи на перерахування, а також деякі дозволи на підвищення привілеїв). Але він перевірить лише закодовані перевірки (єдиний спосіб перевірити більше - це написати більше тестів).
|
||||
```bash
|
||||
# Install
|
||||
git clone https://github.com/carnal0wnage/weirdAAL.git
|
||||
@@ -191,12 +178,10 @@ python3 weirdAAL.py -m recon_all -t MyTarget # Check all permissions
|
||||
# [+] elbv2 Actions allowed are [+]
|
||||
# ['DescribeLoadBalancers', 'DescribeAccountLimits', 'DescribeTargetGroups']
|
||||
```
|
||||
|
||||
#### Hardening Tools to BF permissions
|
||||
#### Ускладнення інструментів для BF дозволів
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="CloudSploit" }}
|
||||
|
||||
```bash
|
||||
# Export env variables
|
||||
./index.js --console=text --config ./config.js --json /tmp/out-cloudsploit.json
|
||||
@@ -207,11 +192,9 @@ jq 'map(select(.status | contains("UNKNOWN") | not))' /tmp/out-cloudsploit.json
|
||||
# Get services by regions
|
||||
jq 'group_by(.region) | map({(.[0].region): ([map((.resource | split(":"))[2]) | unique])})' ~/Desktop/pentests/cere/greybox/core-dev-dev-cloudsploit-filtered.json
|
||||
```
|
||||
|
||||
{{#endtab }}
|
||||
|
||||
{{#tab name="SteamPipe" }}
|
||||
|
||||
```bash
|
||||
# https://github.com/turbot/steampipe-mod-aws-insights
|
||||
steampipe check all --export=json
|
||||
@@ -220,50 +203,48 @@ steampipe check all --export=json
|
||||
# In this case you cannot output to JSON, so heck it in the dashboard
|
||||
steampipe dashboard
|
||||
```
|
||||
|
||||
{{#endtab }}
|
||||
{{#endtabs }}
|
||||
|
||||
#### \<YourTool>
|
||||
|
||||
Neither of the previous tools is capable of checking close to all permissions, so if you know a better tool send a PR!
|
||||
Жоден з попередніх інструментів не здатний перевірити майже всі дозволи, тому якщо ви знаєте кращий інструмент, надішліть PR!
|
||||
|
||||
### Unauthenticated Access
|
||||
### Неавтентифікований доступ
|
||||
|
||||
{{#ref}}
|
||||
../aws-unauthenticated-enum-access/aws-iam-and-sts-unauthenticated-enum.md
|
||||
{{#endref}}
|
||||
|
||||
### Privilege Escalation
|
||||
### Підвищення привілеїв
|
||||
|
||||
In the following page you can check how to **abuse IAM permissions to escalate privileges**:
|
||||
На наступній сторінці ви можете перевірити, як **зловживати дозволами IAM для підвищення привілеїв**:
|
||||
|
||||
{{#ref}}
|
||||
../aws-privilege-escalation/aws-iam-privesc.md
|
||||
{{#endref}}
|
||||
|
||||
### IAM Post Exploitation
|
||||
### IAM Після експлуатації
|
||||
|
||||
{{#ref}}
|
||||
../aws-post-exploitation/aws-iam-post-exploitation.md
|
||||
{{#endref}}
|
||||
|
||||
### IAM Persistence
|
||||
### IAM Постійність
|
||||
|
||||
{{#ref}}
|
||||
../aws-persistence/aws-iam-persistence.md
|
||||
{{#endref}}
|
||||
|
||||
## IAM Identity Center
|
||||
## IAM Центр ідентичності
|
||||
|
||||
You can find a **description of IAM Identity Center** in:
|
||||
Ви можете знайти **опис IAM Центру ідентичності** в:
|
||||
|
||||
{{#ref}}
|
||||
../aws-basic-information/
|
||||
{{#endref}}
|
||||
|
||||
### Connect via SSO with CLI
|
||||
|
||||
### Підключення через SSO з CLI
|
||||
```bash
|
||||
# Connect with sso via CLI aws configure sso
|
||||
aws configure sso
|
||||
@@ -274,20 +255,18 @@ sso_account_id = <account_numbre>
|
||||
sso_role_name = AdministratorAccess
|
||||
sso_region = us-east-1
|
||||
```
|
||||
|
||||
### Enumeration
|
||||
|
||||
The main elements of the Identity Center are:
|
||||
Основні елементи Центру ідентичності:
|
||||
|
||||
- Users and groups
|
||||
- Permission Sets: Have policies attached
|
||||
- AWS Accounts
|
||||
- Користувачі та групи
|
||||
- Набори дозволів: Мають прикріплені політики
|
||||
- Облікові записи AWS
|
||||
|
||||
Then, relationships are created so users/groups have Permission Sets over AWS Account.
|
||||
Потім створюються відносини, щоб користувачі/групи мали Набори дозволів над Обліковим записом AWS.
|
||||
|
||||
> [!NOTE]
|
||||
> Note that there are 3 ways to attach policies to a Permission Set. Attaching AWS managed policies, Customer managed policies (these policies needs to be created in all the accounts the Permissions Set is affecting), and inline policies (defined in there).
|
||||
|
||||
> Зверніть увагу, що є 3 способи прикріплення політик до Набору дозволів. Прикріплення керованих політик AWS, політик, керованих замовником (ці політики потрібно створити в усіх облікових записах, на які впливають Набори дозволів), і вбудованих політик (визначених там).
|
||||
```bash
|
||||
# Check if IAM Identity Center is used
|
||||
aws sso-admin list-instances
|
||||
@@ -321,11 +300,9 @@ aws identitystore list-group-memberships --identity-store-id <store-id> --group-
|
||||
## Get memberships or a user or a group
|
||||
aws identitystore list-group-memberships-for-member --identity-store-id <store-id> --member-id <member-id>
|
||||
```
|
||||
|
||||
### Local Enumeration
|
||||
|
||||
It's possible to create inside the folder `$HOME/.aws` the file config to configure profiles that are accessible via SSO, for example:
|
||||
|
||||
Можливо створити всередині папки `$HOME/.aws` файл config для налаштування профілів, які доступні через SSO, наприклад:
|
||||
```ini
|
||||
[default]
|
||||
region = us-west-2
|
||||
@@ -343,20 +320,16 @@ output = json
|
||||
role_arn = arn:aws:iam::<acc-id>:role/ReadOnlyRole
|
||||
source_profile = Hacktricks-Admin
|
||||
```
|
||||
|
||||
This configuration can be used with the commands:
|
||||
|
||||
Ця конфігурація може бути використана з командами:
|
||||
```bash
|
||||
# Login in ms-sso-profile
|
||||
aws sso login --profile my-sso-profile
|
||||
# Use dependent-profile
|
||||
aws s3 ls --profile dependent-profile
|
||||
```
|
||||
Коли **профіль з SSO використовується** для доступу до деякої інформації, облікові дані **кешуються** у файлі всередині папки **`$HOME/.aws/sso/cache`**. Тому їх можна **читати та використовувати звідти**.
|
||||
|
||||
When a **profile from SSO is used** to access some information, the credentials are **cached** in a file inside the folder **`$HOME/.aws/sso/cache`**. Therefore they can be **read and used from there**.
|
||||
|
||||
Moreover, **more credentials** can be stored in the folder **`$HOME/.aws/cli/cache`**. This cache directory is primarily used when you are **working with AWS CLI profiles** that use IAM user credentials or **assume** roles through IAM (without SSO). Config example:
|
||||
|
||||
Більше того, **більше облікових даних** можна зберігати в папці **`$HOME/.aws/cli/cache`**. Ця директорія кешу в основному використовується, коли ви **працюєте з профілями AWS CLI**, які використовують облікові дані користувача IAM або **припускають** ролі через IAM (без SSO). Приклад конфігурації:
|
||||
```ini
|
||||
[profile crossaccountrole]
|
||||
role_arn = arn:aws:iam::234567890123:role/SomeRole
|
||||
@@ -364,43 +337,36 @@ source_profile = default
|
||||
mfa_serial = arn:aws:iam::123456789012:mfa/saanvi
|
||||
external_id = 123456
|
||||
```
|
||||
|
||||
### Unauthenticated Access
|
||||
### Неавтентифікований доступ
|
||||
|
||||
{{#ref}}
|
||||
../aws-unauthenticated-enum-access/aws-identity-center-and-sso-unauthenticated-enum.md
|
||||
{{#endref}}
|
||||
|
||||
### Privilege Escalation
|
||||
### Підвищення привілеїв
|
||||
|
||||
{{#ref}}
|
||||
../aws-privilege-escalation/aws-sso-and-identitystore-privesc.md
|
||||
{{#endref}}
|
||||
|
||||
### Post Exploitation
|
||||
### Після експлуатації
|
||||
|
||||
{{#ref}}
|
||||
../aws-post-exploitation/aws-sso-and-identitystore-post-exploitation.md
|
||||
{{#endref}}
|
||||
|
||||
### Persistence
|
||||
|
||||
#### Create a user an assign permissions to it
|
||||
### Постійність
|
||||
|
||||
#### Створити користувача та призначити йому дозволи
|
||||
```bash
|
||||
# Create user identitystore:CreateUser
|
||||
aws identitystore create-user --identity-store-id <store-id> --user-name privesc --display-name privesc --emails Value=sdkabflvwsljyclpma@tmmbt.net,Type=Work,Primary=True --name Formatted=privesc,FamilyName=privesc,GivenName=privesc
|
||||
## After creating it try to login in the console using the selected username, you will receive an email with the code and then you will be able to select a password
|
||||
```
|
||||
- Створіть групу та призначте їй дозволи, а також встановіть контрольованого користувача
|
||||
- Надати додаткові дозволи контрольованому користувачу або групі
|
||||
- За замовчуванням лише користувачі з дозволами з Облікового запису управління зможуть отримати доступ і контролювати IAM Identity Center.
|
||||
|
||||
- Create a group and assign it permissions and set on it a controlled user
|
||||
- Give extra permissions to a controlled user or group
|
||||
- By default, only users with permissions form the Management Account are going to be able to access and control the IAM Identity Center.
|
||||
|
||||
However, it's possible via Delegate Administrator to allow users from a different account to manage it. They won't have exactly the same permission, but they will be able to perform [**management activities**](https://docs.aws.amazon.com/singlesignon/latest/userguide/delegated-admin.html).
|
||||
Однак, за допомогою Делегованого адміністратора можна дозволити користувачам з іншого облікового запису керувати ним. Вони не матимуть точно таких же дозволів, але зможуть виконувати [**управлінські дії**](https://docs.aws.amazon.com/singlesignon/latest/userguide/delegated-admin.html).
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user