AWS - STS Privesc

Nauka hakowania AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

STS

sts:AssumeRole

Każda rola jest tworzona z polityką zaufania roli, która wskazuje kto może przyjąć utworzoną rolę. Jeśli rola z tego samego konta mówi, że inne konto może ją przyjąć, oznacza to, że konto to będzie miało dostęp do roli (i potencjalnie privesc).

Na przykład poniższa polityka zaufania roli wskazuje, że każdy może ją przyjąć, dlatego każdy użytkownik będzie mógł uzyskać privesc do uprawnień związanych z tą rolą.

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

Możesz podszyć się pod rolę, uruchamiając:

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

Potencjalne skutki: Eskalacja uprawnień do roli.

Należy zauważyć, że w tym przypadku uprawnienie sts:AssumeRole musi być wskazane w roli do nadużycia i nie w polityce należącej do atakującego. Z jednym wyjątkiem, aby przyjąć rolę z innego konta, konto atakującego również musi mieć uprawnienie sts:AssumeRole do roli.

sts:GetFederationToken

Dzięki temu uprawnieniu możliwe jest generowanie poświadczeń do podszywania się pod dowolnego użytkownika:

aws sts get-federation-token --name <username>

To można bezpiecznie nadać to uprawnienie bez udzielania dostępu do podszywania się pod innych użytkowników:

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "sts:GetFederationToken",
"Resource": "arn:aws:sts::947247140022:federated-user/${aws:username}"
}
]
}

sts:AssumeRoleWithSAML

Zasada zaufania dla tej roli umożliwia użytkownikom uwierzytelnionym za pomocą SAML dostęp do podszycia się pod rolę.

Przykład zasady zaufania z tym uprawnieniem to:

{
"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"
}
}
}
]
}

Aby wygenerować poświadczenia umożliwiające podszywanie się pod rolę ogólnie, można użyć na przykład:

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

Ale dostawcy mogą mieć swoje własne narzędzia, które ułatwiają to zadanie, takie jak onelogin-aws-assume-role:

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

Potencjalny wpływ: Eskalacja uprawnień do roli.

sts:AssumeRoleWithWebIdentity

To uprawnienie umożliwia uzyskanie zestawu tymczasowych poświadczeń bezpieczeństwa dla użytkowników, którzy zostali uwierzytelnieni w aplikacji mobilnej, sieci webowej, EKS... za pomocą dostawcy tożsamości internetowej. Dowiedz się więcej tutaj.

Na przykład, jeśli konto usługi EKS powinno móc podawać się za rolę IAM, będzie miało token w /var/run/secrets/eks.amazonaws.com/serviceaccount/token i będzie mogło przyjąć rolę i uzyskać poświadczenia wykonując coś w rodzaju:

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

Nadużycie federacji

AWS - Federation Abuse
Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Last updated