AWS - STS Privesc

htARTE(HackTricks AWS Red Team Expert) を通じてゼロからヒーローまでAWSハッキングを学ぶ

HackTricks をサポートする他の方法:

STS

sts:AssumeRole

すべてのロールは ロール信頼ポリシー とともに作成されます。このポリシーは 作成されたロールを誰が引き継ぐことができるか を示します。 同じアカウント からのロールが、アカウントがそれを引き継ぐことができると述べている場合、そのアカウントはそのロールにアクセスできるようになります(そして潜在的に 特権昇格 が可能です)。

たとえば、次のロール信頼ポリシーは、誰でもそれを引き継ぐことができることを示しており、したがって 任意のユーザーがそのロールに関連付けられた権限に特権昇格 できます。

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

あなたは次を実行して役割をなりすますことができます:

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

潜在的影響: ロールへの特権昇格。

この場合、権限sts:AssumeRole悪用するためにロールに指定されている必要があり、攻撃者に属するポリシーに含まれている必要はありません。 1つの例外を除いて、別のアカウントからロールを仮定するには、攻撃者アカウントもロールに対して**sts:AssumeRole**を持っている必要があります。

sts:GetFederationToken

この権限を持つと、任意のユーザーをなりすまして資格情報を生成することが可能です。

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

これは、他のユーザーに成りすます権限を与えることなく安全に権限を付与する方法です:

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

sts:AssumeRoleWithSAML

このロールを持つ信頼ポリシーは、SAML経由で認証されたユーザーに、そのロールを偽装する権限を付与します。

この権限を持つ信頼ポリシーの例は次のとおりです:

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

役割を偽装するための資格情報を生成するには、一般的に次のようなものを使用できます:

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

しかし、プロバイダーは、onelogin-aws-assume-roleのような独自のツールを使用して、これをより簡単にするかもしれません:

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

潜在的影響: ロールへの特権昇格。

sts:AssumeRoleWithWebIdentity

この権限は、モバイル、Webアプリケーション、EKS...で認証されたユーザーがウェブアイデンティティプロバイダーで一連の一時的なセキュリティ資格情報を取得する権限を付与します。詳細はこちら。

たとえば、EKSサービスアカウントIAMロールをなりすますできるようにする場合、/var/run/secrets/eks.amazonaws.com/serviceaccount/tokenにトークンがあり、次のような操作を行ってロールを仮定し資格情報を取得できます:

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

フェデレーションの悪用

AWS - Federation Abuse
htARTE(HackTricks AWS Red Team Expert) を通じて、ゼロからヒーローまでAWSハッキングを学ぶ

HackTricks をサポートする他の方法:

Last updated