AWS - STS Privesc

Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras maneiras de apoiar o HackTricks:

STS

sts:AssumeRole

Cada função é criada com uma política de confiança de função, essa política indica quem pode assumir a função criada. Se uma função da mesma conta diz que uma conta pode assumi-la, significa que a conta poderá acessar a função (e potencialmente escalar privilégios).

Por exemplo, a seguinte política de confiança de função indica que qualquer pessoa pode assumi-la, portanto qualquer usuário poderá escalar privilégios para as permissões associadas a essa função.

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "sts:AssumeRole"
}
]
}

Você pode se passar por um papel em execução:

aws sts assume-role --role-arn $ROLE_ARN --role-session-name sessionname

Impacto Potencial: Escalação de privilégios para a função.

Note que, neste caso, a permissão sts:AssumeRole precisa ser indicada na função para ser abusada e não em uma política pertencente ao atacante. Com uma exceção, para assumir uma função de uma conta diferente a conta do atacante também precisa ter a permissão sts:AssumeRole sobre a função.

sts:AssumeRoleWithSAML

Uma política de confiança com essa função concede aos usuários autenticados via SAML acesso para se passar pela função.

Um exemplo de uma política de confiança com essa permissão é:

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "OneLogin",
"Effect": "Allow",
"Principal": {
"Federated": "arn:aws:iam::290594632123:saml-provider/OneLogin"
},
"Action": "sts:AssumeRoleWithSAML",
"Condition": {
"StringEquals": {
"SAML:aud": "https://signin.aws.amazon.com/saml"
}
}
}
]
}

Para gerar credenciais para se passar pelo papel em geral, você poderia usar algo como:

aws sts  assume-role-with-saml --role-arn <value> --principal-arn <value>

Mas os provedores podem ter suas próprias ferramentas para facilitar esse processo, como onelogin-aws-assume-role:

onelogin-aws-assume-role --onelogin-subdomain mettle --onelogin-app-id 283740 --aws-region eu-west-1 -z 3600

Impacto Potencial: Privesc para a função.

sts:AssumeRoleWithWebIdentity

Esta permissão concede permissão para obter um conjunto de credenciais de segurança temporárias para usuários que foram autenticados em um aplicativo móvel, web, EKS... com um provedor de identidade web. Saiba mais aqui.

Por exemplo, se uma conta de serviço EKS deve ser capaz de se passar por uma função IAM, ela terá um token em /var/run/secrets/eks.amazonaws.com/serviceaccount/token e pode assumir a função e obter credenciais fazendo algo como:

aws sts assume-role-with-web-identity --role-arn arn:aws:iam::123456789098:role/<role_name> --role-session-name something --web-identity-token file:///var/run/secrets/eks.amazonaws.com/serviceaccount/token
# The role name can be found in the metadata of the configuration of the pod

Abuso de Federação

pageAWS - Federation Abuse
Aprenda hacking na AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras maneiras de apoiar o HackTricks:

Última actualización