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-iam-enum
This commit is contained in:
+21
-9
@@ -4,7 +4,7 @@
|
||||
|
||||
## SES
|
||||
|
||||
Aby uzyskać więcej informacji, sprawdź:
|
||||
Aby uzyskać więcej informacji, zobacz:
|
||||
|
||||
{{#ref}}
|
||||
../../aws-services/aws-ses-enum.md
|
||||
@@ -12,7 +12,7 @@ Aby uzyskać więcej informacji, sprawdź:
|
||||
|
||||
### `ses:SendEmail`
|
||||
|
||||
Wyślij wiadomość e-mail.
|
||||
Wyślij e-mail.
|
||||
```bash
|
||||
aws ses send-email --from sender@example.com --destination file://emails.json --message file://message.json
|
||||
aws sesv2 send-email --from sender@example.com --destination file://emails.json --message file://message.json
|
||||
@@ -21,7 +21,7 @@ Jeszcze do przetestowania.
|
||||
|
||||
### `ses:SendRawEmail`
|
||||
|
||||
Wyślij wiadomość e-mail.
|
||||
Wyślij e-mail.
|
||||
```bash
|
||||
aws ses send-raw-email --raw-message file://message.json
|
||||
```
|
||||
@@ -29,7 +29,7 @@ Jeszcze do przetestowania.
|
||||
|
||||
### `ses:SendTemplatedEmail`
|
||||
|
||||
Wyślij wiadomość e-mail opartą na szablonie.
|
||||
Wyślij e-mail na podstawie szablonu.
|
||||
```bash
|
||||
aws ses send-templated-email --source <value> --destination <value> --template <value>
|
||||
```
|
||||
@@ -37,7 +37,7 @@ Jeszcze do przetestowania.
|
||||
|
||||
### `ses:SendBulkTemplatedEmail`
|
||||
|
||||
Wyślij wiadomość e-mail do wielu odbiorców
|
||||
Wyślij e-mail do wielu odbiorców
|
||||
```bash
|
||||
aws ses send-bulk-templated-email --source <value> --template <value>
|
||||
```
|
||||
@@ -45,25 +45,37 @@ Jeszcze do przetestowania.
|
||||
|
||||
### `ses:SendBulkEmail`
|
||||
|
||||
Wyślij e-mail do wielu odbiorców.
|
||||
Wyślij email do wielu odbiorców.
|
||||
```
|
||||
aws sesv2 send-bulk-email --default-content <value> --bulk-email-entries <value>
|
||||
```
|
||||
### `ses:SendBounce`
|
||||
|
||||
Wyślij **bounce email** w odpowiedzi na otrzymaną wiadomość (wskazując, że wiadomość nie mogła zostać dostarczona). Można to zrobić tylko **do 24h od otrzymania** wiadomości.
|
||||
Wyślij **bounce email** w odpowiedzi na otrzymaną wiadomość (wskazując, że wiadomość nie mogła zostać dostarczona). Można to zrobić tylko **do 24h po otrzymaniu** wiadomości.
|
||||
```bash
|
||||
aws ses send-bounce --original-message-id <value> --bounce-sender <value> --bounced-recipient-info-list <value>
|
||||
```
|
||||
Jeszcze do przetestowania.
|
||||
Wciąż do przetestowania.
|
||||
|
||||
### `ses:SendCustomVerificationEmail`
|
||||
|
||||
To spowoduje wysłanie spersonalizowanego e-maila weryfikacyjnego. Może być również wymagane posiadanie uprawnień do utworzenia szablonu wiadomości e-mail.
|
||||
Spowoduje wysłanie spersonalizowanego e-maila weryfikacyjnego. Możesz również potrzebować uprawnień do utworzenia szablonu wiadomości.
|
||||
```bash
|
||||
aws ses send-custom-verification-email --email-address <value> --template-name <value>
|
||||
aws sesv2 send-custom-verification-email --email-address <value> --template-name <value>
|
||||
```
|
||||
Jeszcze do przetestowania.
|
||||
|
||||
## WorkMail pivot to bypass SES sandbox
|
||||
|
||||
Kiedy `ses:GetAccount` pokazuje, że konto nadal znajduje się w SES sandbox, a `ses:ListIdentities` nie zwraca żadnych zweryfikowanych nadawców, atakujący mogą **pivot to WorkMail** aby wysyłać natychmiast (bez sandboxu i z wyższymi domyślnymi limitami) poprzez tworzenie organizacji, weryfikowanie domen oraz rejestrowanie skrzynek pocztowych.
|
||||
|
||||
{{#ref}}
|
||||
../aws-workmail-post-exploitation/README.md
|
||||
{{#endref}}
|
||||
|
||||
## Referencje
|
||||
|
||||
- [Threat Actors Using AWS WorkMail in Phishing Campaigns](https://www.rapid7.com/blog/post/dr-threat-actors-aws-workmail-phishing-campaigns)
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
|
||||
+76
@@ -0,0 +1,76 @@
|
||||
# AWS - WorkMail Post Exploitation
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
|
||||
## Nadużywanie WorkMail do obejścia sandboxu SES
|
||||
|
||||
Nawet jeśli SES utknął w **sandboxie** (tylko zweryfikowani odbiorcy, ~200 msgs/24h, 1 msg/s), WorkMail nie ma odpowiedniego ograniczenia. Atakujący dysponujący long-term keys może uruchomić jednorazową infrastrukturę mailową i zacząć wysyłać natychmiast:
|
||||
|
||||
1. **Create a WorkMail org (region-scoped)**
|
||||
```bash
|
||||
aws workmail create-organization --region us-east-1 --alias temp-mail --directory-id <dir-id-if-reusing>
|
||||
```
|
||||
2. **Verify attacker-controlled domains** (WorkMail invokes SES APIs as `workmail.amazonaws.com`):
|
||||
```bash
|
||||
aws ses verify-domain-identity --domain attacker-domain.com
|
||||
aws ses verify-domain-dkim --domain attacker-domain.com
|
||||
```
|
||||
3. **Provision mailbox users** and register them:
|
||||
```bash
|
||||
aws workmail create-user --organization-id <org-id> --name marketing --display-name "Marketing"
|
||||
aws workmail register-to-work-mail --organization-id <org-id> --entity-id <user-id> --email marketing@attacker-domain.com
|
||||
```
|
||||
|
||||
Uwagi:
|
||||
- Domyślny **recipient cap** dokumentowany przez AWS: **100,000 external recipients/day per org** (sumarycznie dla użytkowników).
|
||||
- Aktywność weryfikacji domen będzie widoczna w CloudTrail pod SES, ale z **`invokedBy`: `workmail.<region>.amazonaws.com`**, więc zdarzenia weryfikacji SES mogą pochodzić z konfiguracji WorkMail, a nie z kampanii SES.
|
||||
- Użytkownicy skrzynek WorkMail stają się **application-layer persistence** niezależnie od IAM users.
|
||||
|
||||
## Ścieżki wysyłki i luki w telemetrii
|
||||
|
||||
### Web client (WorkMail UI)
|
||||
- Wysyłki pojawiają się jako zdarzenia **`ses:SendRawEmail`** w CloudTrail.
|
||||
- `userIdentity.type` = `AWSService`, `invokedBy/sourceIPAddress/userAgent` = `workmail.<region>.amazonaws.com`, więc **prawdziwy IP klienta jest ukryty**.
|
||||
- `requestParameters` nadal zawierają leak nadawcy (`source`, `fromArn`, `sourceArn`, configuration set) umożliwiający skorelowanie z nowo zweryfikowanymi domenami/skrzynkami.
|
||||
|
||||
### SMTP (najbardziej dyskretny)
|
||||
- Endpoint: `smtp.mail.<region>.awsapps.com:465` (SMTP over SSL) z hasłem skrzynki.
|
||||
- **No CloudTrail data events** są generowane dla dostarczania SMTP, nawet gdy SES data events są włączone.
|
||||
- Ideal detection points to **org/domain/user provisioning** oraz SES identity ARNs referenced in subsequent web-sent `SendRawEmail` events.
|
||||
|
||||
<details>
|
||||
<summary>Przykład wysyłki SMTP przez WorkMail</summary>
|
||||
```python
|
||||
import smtplib
|
||||
from email.message import EmailMessage
|
||||
|
||||
SMTP_SERVER = "smtp.mail.us-east-1.awsapps.com"
|
||||
SMTP_PORT = 465
|
||||
EMAIL_ADDRESS = "marketing@attacker-domain.com"
|
||||
EMAIL_PASSWORD = "SuperSecretPassword!"
|
||||
|
||||
target = "victim@example.com" # can be unverified/external
|
||||
msg = EmailMessage()
|
||||
msg["Subject"] = "WorkMail SMTP"
|
||||
msg["From"] = EMAIL_ADDRESS
|
||||
msg["To"] = target
|
||||
msg.set_content("Delivered via WorkMail SMTP")
|
||||
|
||||
with smtplib.SMTP_SSL(SMTP_SERVER, SMTP_PORT) as smtp:
|
||||
smtp.login(EMAIL_ADDRESS, EMAIL_PASSWORD)
|
||||
smtp.send_message(msg)
|
||||
```
|
||||
</details>
|
||||
|
||||
## Uwagi dotyczące wykrywania
|
||||
|
||||
- Jeśli WorkMail nie jest potrzebny, zablokuj go za pomocą **SCPs** (`workmail:*` deny) na poziomie organizacji.
|
||||
- Włącz alerty przy provisioningu: `workmail:CreateOrganization`, `workmail:CreateUser`, `workmail:RegisterToWorkMail`, oraz weryfikacjach SES z `invokedBy=workmail.amazonaws.com` (`ses:VerifyDomainIdentity`, `ses:VerifyDomainDkim`).
|
||||
- Monitoruj anomalne zdarzenia **`ses:SendRawEmail`**, w których identity ARNs odnoszą się do nowych domen, a source IP/UA odpowiada `workmail.<region>.amazonaws.com`.
|
||||
|
||||
## References
|
||||
|
||||
- [Threat Actors Using AWS WorkMail in Phishing Campaigns](https://www.rapid7.com/blog/post/dr-threat-actors-aws-workmail-phishing-campaigns)
|
||||
- [AWS WorkMail limits](https://docs.aws.amazon.com/workmail/latest/adminguide/limits.html)
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
@@ -1,4 +1,4 @@
|
||||
# AWS - IAM, Identity Center & SSO Enum
|
||||
# AWS - IAM, Identity Center & SSO Enumeracja
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -14,7 +14,7 @@ Możesz znaleźć **opis IAM** w:
|
||||
|
||||
Główne wymagane uprawnienia:
|
||||
|
||||
- `iam:ListPolicies`, `iam:GetPolicy` i `iam:GetPolicyVersion`
|
||||
- `iam:ListPolicies`, `iam:GetPolicy` and `iam:GetPolicyVersion`
|
||||
- `iam:ListRoles`
|
||||
- `iam:ListUsers`
|
||||
- `iam:ListGroups`
|
||||
@@ -22,9 +22,9 @@ Główne wymagane uprawnienia:
|
||||
- `iam:ListAttachedUserPolicies`
|
||||
- `iam:ListAttachedRolePolicies`
|
||||
- `iam:ListAttachedGroupPolicies`
|
||||
- `iam:ListUserPolicies` i `iam:GetUserPolicy`
|
||||
- `iam:ListGroupPolicies` i `iam:GetGroupPolicy`
|
||||
- `iam:ListRolePolicies` i `iam:GetRolePolicy`
|
||||
- `iam:ListUserPolicies` and `iam:GetUserPolicy`
|
||||
- `iam:ListGroupPolicies` and `iam:GetGroupPolicy`
|
||||
- `iam:ListRolePolicies` and `iam:GetRolePolicy`
|
||||
```bash
|
||||
# All IAMs
|
||||
## Retrieves information about all IAM users, groups, roles, and policies
|
||||
@@ -88,37 +88,49 @@ aws iam get-account-password-policy
|
||||
aws iam list-mfa-devices
|
||||
aws iam list-virtual-mfa-devices
|
||||
```
|
||||
### Bruteforce uprawnień
|
||||
### Potwierdzanie uprawnień w ukryciu przez celowe niepowodzenia
|
||||
|
||||
Jeśli jesteś zainteresowany swoimi uprawnieniami, ale nie masz dostępu do zapytań IAM, zawsze możesz je bruteforce'ować.
|
||||
Kiedy `List*` lub API symulatora są zablokowane, możesz **potwierdzić uprawnienia do modyfikacji bez tworzenia trwałych zasobów** przez wymuszenie przewidywalnych błędów walidacji. AWS nadal ocenia IAM przed zwróceniem tych błędów, więc pojawienie się takiego błędu dowodzi, że wywołujący posiada daną akcję:
|
||||
```bash
|
||||
# Confirm iam:CreateUser without creating a new principal (fails only after authz)
|
||||
aws iam create-user --user-name <existing_user> # -> EntityAlreadyExistsException
|
||||
|
||||
# Confirm iam:CreateLoginProfile while learning password policy requirements
|
||||
aws iam create-login-profile --user-name <target_user> --password lower --password-reset-required # -> PasswordPolicyViolationException
|
||||
```
|
||||
Te próby nadal generują zdarzenia CloudTrail (z ustawionym `errorCode`), ale unikają pozostawiania nowych artefaktów IAM, dzięki czemu są przydatne do **mało hałaśliwej weryfikacji uprawnień** podczas interaktywnego recon.
|
||||
|
||||
### Uprawnienia Brute Force
|
||||
|
||||
Jeśli chcesz sprawdzić swoje uprawnienia, ale nie masz dostępu do wykonywania zapytań do IAM, zawsze możesz spróbować brute-force.
|
||||
|
||||
#### bf-aws-permissions
|
||||
|
||||
Narzędzie [**bf-aws-permissions**](https://github.com/carlospolop/bf-aws-permissions) to po prostu skrypt bash, który uruchomi wszystkie **`list*`, `describe*`, `get*`** akcje, które może znaleźć, korzystając z komunikatów pomocy `aws` cli i **zwróci udane wykonania**.
|
||||
Narzędzie [**bf-aws-permissions**](https://github.com/carlospolop/bf-aws-permissions) to po prostu skrypt bash, który uruchomi, używając wskazanego profilu, wszystkie akcje **`list*`, `describe*`, `get*`** które znajdzie, analizując komunikaty pomocy `aws` cli, i **zwróci pomyślne wykonania**.
|
||||
```bash
|
||||
# Bruteforce permissions
|
||||
bash bf-aws-permissions.sh -p default > /tmp/bf-permissions-verbose.txt
|
||||
```
|
||||
#### bf-aws-perms-simulate
|
||||
|
||||
Narzędzie [**bf-aws-perms-simulate**](https://github.com/carlospolop/bf-aws-perms-simulate) może znaleźć twoje obecne uprawnienia (lub uprawnienia innych podmiotów), jeśli masz uprawnienie **`iam:SimulatePrincipalPolicy`**
|
||||
Narzędzie [**bf-aws-perms-simulate**](https://github.com/carlospolop/bf-aws-perms-simulate) może ustalić twoje bieżące uprawnienia (lub uprawnienia innych podmiotów), jeśli posiadasz uprawnienie **`iam:SimulatePrincipalPolicy`**.
|
||||
```bash
|
||||
# Ask for permissions
|
||||
python3 aws_permissions_checker.py --profile <AWS_PROFILE> [--arn <USER_ARN>]
|
||||
```
|
||||
#### Perms2ManagedPolicies
|
||||
|
||||
Jeśli znalazłeś **jakieś uprawnienia, które ma twój użytkownik**, i myślisz, że są one przyznawane przez **zarządzaną rolę AWS** (a nie przez niestandardową). Możesz użyć narzędzia [**aws-Perms2ManagedRoles**](https://github.com/carlospolop/aws-Perms2ManagedPolicies), aby sprawdzić wszystkie **zarządzane role AWS, które przyznają uprawnienia, które odkryłeś, że posiadasz**.
|
||||
Jeśli znalazłeś **jakieś uprawnienia, które posiada Twój użytkownik**, i uważasz, że są one nadawane przez **zarządzaną rolę AWS** (a nie przez rolę niestandardową). Możesz użyć narzędzia [**aws-Perms2ManagedRoles**](https://github.com/carlospolop/aws-Perms2ManagedPolicies) do sprawdzenia wszystkich **zarządzanych ról AWS, które przyznają uprawnienia, które odkryłeś, że posiadasz**.
|
||||
```bash
|
||||
# Run example with my profile
|
||||
python3 aws-Perms2ManagedPolicies.py --profile myadmin --permissions-file example-permissions.txt
|
||||
```
|
||||
> [!WARNING]
|
||||
> Możliwe jest "wiedzieć", czy uprawnienia, które posiadasz, są przyznawane przez zarządzaną rolę AWS, jeśli zobaczysz, że **masz uprawnienia do usług, które nie są używane**, na przykład.
|
||||
> Możliwe jest "stwierdzenie", czy uprawnienia, które posiadasz, zostały przyznane przez zarządzaną rolę AWS, jeśli zauważysz, że **masz uprawnienia do usług, które nie są używane**, na przykład.
|
||||
|
||||
#### Cloudtrail2IAM
|
||||
|
||||
[**CloudTrail2IAM**](https://github.com/carlospolop/Cloudtrail2IAM) to narzędzie w Pythonie, które analizuje **logi AWS CloudTrail, aby wydobyć i podsumować działania** wykonane przez wszystkich lub tylko konkretnego użytkownika lub rolę. Narzędzie **przeanalizuje każdy log cloudtrail z wskazanego bucketu**.
|
||||
[**CloudTrail2IAM**](https://github.com/carlospolop/Cloudtrail2IAM) to narzędzie w Pythonie, które analizuje **logi AWS CloudTrail, aby wyodrębnić i podsumować działania** wykonywane przez wszystkich lub tylko konkretnego użytkownika albo rolę. Narzędzie będzie **parsować każdy log CloudTrail z wskazanego bucketu**.
|
||||
```bash
|
||||
git clone https://github.com/carlospolop/Cloudtrail2IAM
|
||||
cd Cloudtrail2IAM
|
||||
@@ -126,16 +138,16 @@ pip install -r requirements.txt
|
||||
python3 cloudtrail2IAM.py --prefix PREFIX --bucket_name BUCKET_NAME --profile PROFILE [--filter-name FILTER_NAME] [--threads THREADS]
|
||||
```
|
||||
> [!WARNING]
|
||||
> Jeśli znajdziesz .tfstate (pliki stanu Terraform) lub pliki CloudFormation (zwykle są to pliki yaml znajdujące się w wiadrze z prefiksem cf-templates), możesz je również przeczytać, aby znaleźć konfigurację aws i sprawdzić, które uprawnienia zostały przypisane do kogo.
|
||||
> Jeśli znajdziesz .tfstate (Terraform state files) lub pliki CloudFormation (zwykle są to pliki yaml znajdujące się w bucketu z prefiksem cf-templates), możesz także je odczytać, aby znaleźć konfigurację aws i sprawdzić, komu przypisano które uprawnienia.
|
||||
|
||||
#### enumerate-iam
|
||||
|
||||
Aby użyć narzędzia [**https://github.com/andresriancho/enumerate-iam**](https://github.com/andresriancho/enumerate-iam), najpierw musisz pobrać wszystkie punkty końcowe API AWS, z których skrypt **`generate_bruteforce_tests.py`** pobierze wszystkie **"list\_", "describe\_", i "get\_" punkty końcowe.** A na koniec spróbuje **uzyskać do nich dostęp** za pomocą podanych poświadczeń i **wskaże, czy to zadziałało**.
|
||||
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**.
|
||||
|
||||
(W moim doświadczeniu **narzędzie zawiesza się w pewnym momencie**, [**sprawdź to rozwiązanie**](https://github.com/andresriancho/enumerate-iam/pull/15/commits/77ad5b41216e3b5f1511d0c385da8cd5984c2d3c), aby spróbować to naprawić).
|
||||
(W moim doświadczeniu **narzędzie zawiesza się w pewnym momencie**, [**checkout this fix**](https://github.com/andresriancho/enumerate-iam/pull/15/commits/77ad5b41216e3b5f1511d0c385da8cd5984c2d3c) aby spróbować to naprawić).
|
||||
|
||||
> [!WARNING]
|
||||
> Z mojego doświadczenia to narzędzie jest jak poprzednie, ale działa gorzej i sprawdza mniej uprawnień.
|
||||
> Z mojego doświadczenia to narzędzie jest podobne do poprzedniego, ale działa gorzej i sprawdza mniej uprawnień
|
||||
```bash
|
||||
# Install tool
|
||||
git clone git@github.com:andresriancho/enumerate-iam.git
|
||||
@@ -154,7 +166,7 @@ python3 enumerate-iam.py --access-key ACCESS_KEY --secret-key SECRET_KEY [--sess
|
||||
```
|
||||
#### weirdAAL
|
||||
|
||||
Możesz również użyć narzędzia [**weirdAAL**](https://github.com/carnal0wnage/weirdAAL/wiki). To narzędzie sprawdzi **kilka powszechnych operacji na kilku powszechnych usługach** (sprawdzi niektóre uprawnienia do enumeracji oraz niektóre uprawnienia privesc). Ale sprawdzi tylko zakodowane kontrole (jedynym sposobem na sprawdzenie większej liczby rzeczy jest napisanie większej liczby testów).
|
||||
Możesz też użyć narzędzia [**weirdAAL**](https://github.com/carnal0wnage/weirdAAL/wiki). To narzędzie sprawdzi **kilka powszechnych operacji w kilku powszechnych usługach** (sprawdzi niektóre enumeration permissions oraz niektóre privesc permissions). Jednak przeprowadza tylko zakodowane kontrole — jedyny sposób, żeby sprawdzić więcej rzeczy, to zakodować dodatkowe testy.
|
||||
```bash
|
||||
# Install
|
||||
git clone https://github.com/carnal0wnage/weirdAAL.git
|
||||
@@ -178,7 +190,7 @@ python3 weirdAAL.py -m recon_all -t MyTarget # Check all permissions
|
||||
# [+] elbv2 Actions allowed are [+]
|
||||
# ['DescribeLoadBalancers', 'DescribeAccountLimits', 'DescribeTargetGroups']
|
||||
```
|
||||
#### Narzędzia do wzmacniania uprawnień BF
|
||||
#### Narzędzia do hardeningu uprawnień BF
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="CloudSploit" }}
|
||||
@@ -208,43 +220,43 @@ steampipe dashboard
|
||||
|
||||
#### \<YourTool>
|
||||
|
||||
Żadne z poprzednich narzędzi nie jest w stanie sprawdzić prawie wszystkich uprawnień, więc jeśli znasz lepsze narzędzie, wyślij PR!
|
||||
Żadne z poprzednich narzędzi nie jest w stanie sprawdzić niemal wszystkich uprawnień, więc jeśli znasz lepsze narzędzie, wyślij PR!
|
||||
|
||||
### Nieautoryzowany dostęp
|
||||
### Dostęp bez uwierzytelnienia
|
||||
|
||||
{{#ref}}
|
||||
../aws-unauthenticated-enum-access/aws-iam-and-sts-unauthenticated-enum/README.md
|
||||
{{#endref}}
|
||||
|
||||
### Eskalacja uprawnień
|
||||
### Privilege Escalation
|
||||
|
||||
Na następnej stronie możesz sprawdzić, jak **nadużywać uprawnień IAM, aby eskalować uprawnienia**:
|
||||
Na następnej stronie możesz sprawdzić, jak **abuse IAM permissions to escalate privileges**:
|
||||
|
||||
{{#ref}}
|
||||
../aws-privilege-escalation/aws-iam-privesc/README.md
|
||||
{{#endref}}
|
||||
|
||||
### IAM Po Eksploatacji
|
||||
### IAM Post Exploitation
|
||||
|
||||
{{#ref}}
|
||||
../aws-post-exploitation/aws-iam-post-exploitation/README.md
|
||||
{{#endref}}
|
||||
|
||||
### Utrzymywanie IAM
|
||||
### IAM Persistence
|
||||
|
||||
{{#ref}}
|
||||
../aws-persistence/aws-iam-persistence/README.md
|
||||
{{#endref}}
|
||||
|
||||
## Centrum tożsamości IAM
|
||||
## IAM Identity Center
|
||||
|
||||
Możesz znaleźć **opis Centrum tożsamości IAM** w:
|
||||
Możesz znaleźć **opis IAM Identity Center** w:
|
||||
|
||||
{{#ref}}
|
||||
../aws-basic-information/
|
||||
{{#endref}}
|
||||
|
||||
### Połączenie przez SSO z CLI
|
||||
### Połącz się przez SSO za pomocą CLI
|
||||
```bash
|
||||
# Connect with sso via CLI aws configure sso
|
||||
aws configure sso
|
||||
@@ -260,13 +272,13 @@ sso_region = us-east-1
|
||||
Główne elementy Identity Center to:
|
||||
|
||||
- Użytkownicy i grupy
|
||||
- Zestawy uprawnień: Mają przypisane polityki
|
||||
- Konta AWS
|
||||
- Permission Sets: Mają przypisane polityki
|
||||
- AWS Accounts
|
||||
|
||||
Następnie tworzone są relacje, aby użytkownicy/grupy miały zestawy uprawnień nad kontem AWS.
|
||||
Następnie tworzone są relacje tak, aby użytkownicy/grupy posiadały Permission Sets dla AWS Accounts.
|
||||
|
||||
> [!NOTE]
|
||||
> Zauważ, że istnieją 3 sposoby przypisania polityk do zestawu uprawnień. Przypisanie polityk zarządzanych przez AWS, polityk zarządzanych przez klienta (te polityki muszą być tworzone we wszystkich kontach, na które wpływa zestaw uprawnień) oraz polityk inline (zdefiniowanych tam).
|
||||
> Zwróć uwagę, że istnieją 3 sposoby dołączania polityk do Permission Set. Dołączanie AWS managed policies, Customer managed policies (te polityki muszą być utworzone we wszystkich kontach, których dotyczy Permission Set), oraz inline policies (zdefiniowane w nim).
|
||||
```bash
|
||||
# Check if IAM Identity Center is used
|
||||
aws sso-admin list-instances
|
||||
@@ -300,9 +312,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>
|
||||
```
|
||||
### Lokalne enumeracje
|
||||
### Lokalna enumeracja
|
||||
|
||||
Możliwe jest utworzenie w folderze `$HOME/.aws` pliku config, aby skonfigurować profile, które są dostępne za pomocą SSO, na przykład:
|
||||
W folderze `$HOME/.aws` można utworzyć plik config, aby skonfigurować profile dostępne przez SSO, na przykład:
|
||||
```ini
|
||||
[default]
|
||||
region = us-west-2
|
||||
@@ -320,16 +332,16 @@ output = json
|
||||
role_arn = arn:aws:iam::<acc-id>:role/ReadOnlyRole
|
||||
source_profile = Hacktricks-Admin
|
||||
```
|
||||
Ta konfiguracja może być używana z poleceniami:
|
||||
Ta konfiguracja może być używana z następującymi poleceniami:
|
||||
```bash
|
||||
# Login in ms-sso-profile
|
||||
aws sso login --profile my-sso-profile
|
||||
# Use dependent-profile
|
||||
aws s3 ls --profile dependent-profile
|
||||
```
|
||||
Kiedy **profil z SSO jest używany** do uzyskania dostępu do informacji, dane uwierzytelniające są **buforowane** w pliku wewnątrz folderu **`$HOME/.aws/sso/cache`**. Dlatego mogą być **odczytywane i używane stamtąd**.
|
||||
Gdy **profil z SSO jest używany** do uzyskania dostępu do informacji, poświadczenia są **zapisane w pamięci podręcznej** w pliku wewnątrz folderu **`$HOME/.aws/sso/cache`**. W związku z tym mogą być **odczytane i użyte stamtąd**.
|
||||
|
||||
Ponadto, **więcej danych uwierzytelniających** może być przechowywanych w folderze **`$HOME/.aws/cli/cache`**. Ten katalog buforu jest głównie używany, gdy **pracujesz z profilami AWS CLI**, które używają danych uwierzytelniających użytkownika IAM lub **przyjmują** role przez IAM (bez SSO). Przykład konfiguracji:
|
||||
Ponadto **więcej poświadczeń** może być przechowywanych w folderze **`$HOME/.aws/cli/cache`**. Ten katalog pamięci podręcznej jest wykorzystywany głównie, gdy **pracujesz z profilami AWS CLI**, które używają poświadczeń użytkownika IAM lub **przyjmują** role za pośrednictwem IAM (bez SSO). Przykład konfiguracji:
|
||||
```ini
|
||||
[profile crossaccountrole]
|
||||
role_arn = arn:aws:iam::234567890123:role/SomeRole
|
||||
@@ -337,36 +349,36 @@ source_profile = default
|
||||
mfa_serial = arn:aws:iam::123456789012:mfa/saanvi
|
||||
external_id = 123456
|
||||
```
|
||||
### Nieautoryzowany dostęp
|
||||
### Unauthenticated Access
|
||||
|
||||
{{#ref}}
|
||||
../aws-unauthenticated-enum-access/aws-identity-center-and-sso-unauthenticated-enum/README.md
|
||||
{{#endref}}
|
||||
|
||||
### Eskalacja uprawnień
|
||||
### Privilege Escalation
|
||||
|
||||
{{#ref}}
|
||||
../aws-privilege-escalation/aws-sso-and-identitystore-privesc/README.md
|
||||
{{#endref}}
|
||||
|
||||
### Po eksploatacji
|
||||
### Post Exploitation
|
||||
|
||||
{{#ref}}
|
||||
../aws-post-exploitation/aws-sso-and-identitystore-post-exploitation/README.md
|
||||
{{#endref}}
|
||||
|
||||
### Utrzymywanie dostępu
|
||||
### Persistence
|
||||
|
||||
#### Utwórz użytkownika i przypisz mu uprawnienia
|
||||
#### Utwórz użytkownika i przydziel mu uprawnienia
|
||||
```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
|
||||
```
|
||||
- Utwórz grupę, przypisz jej uprawnienia i ustaw na niej kontrolowanego użytkownika
|
||||
- Przyznaj dodatkowe uprawnienia kontrolowanemu użytkownikowi lub grupie
|
||||
- Domyślnie tylko użytkownicy z uprawnieniami z Konta Zarządzającego będą mogli uzyskać dostęp i kontrolować IAM Identity Center.
|
||||
- Utwórz grupę, przypisz jej uprawnienia i dodaj do niej kontrolowanego użytkownika
|
||||
- Nadaj dodatkowe uprawnienia kontrolowanemu użytkownikowi lub grupie
|
||||
- Domyślnie tylko użytkownicy z uprawnieniami z Management Account będą mogli uzyskać dostęp do i kontrolować IAM Identity Center.
|
||||
|
||||
Jednak możliwe jest, aby za pomocą Delegowanego Administratora umożliwić użytkownikom z innego konta zarządzanie nim. Nie będą mieli dokładnie tych samych uprawnień, ale będą mogli wykonywać [**działania zarządzające**](https://docs.aws.amazon.com/singlesignon/latest/userguide/delegated-admin.html).
|
||||
Jednakże możliwe jest, przy użyciu Delegate Administrator, umożliwić użytkownikom z innego konta zarządzanie nim. Nie będą mieć dokładnie tych samych uprawnień, ale będą mogli wykonywać [**management activities**](https://docs.aws.amazon.com/singlesignon/latest/userguide/delegated-admin.html).
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
Reference in New Issue
Block a user