AWS - STS Enum

HackTricksをサポートする

STS

AWS Security Token Service (STS)は、主に一時的で制限された特権の資格情報を発行するために設計されています。これらの資格情報は、**AWS Identity and Access Management (IAM)**ユーザーまたは認証されたユーザー(フェデレーテッドユーザー)にリクエストできます。

STSの目的はアイデンティティのなりすましのための資格情報を発行することであるため、このサービスは特権の昇格と持続性の維持に非常に価値がありますが、選択肢は多くありません。

Assume Role Impersonation

AWS STSが提供するアクションAssumeRoleは重要で、これはあるプリンシパルが別のプリンシパルの資格情報を取得し、実質的にそのなりすましを行うことを許可します。呼び出されると、指定されたARNに対応するアクセスキーID、シークレットキー、およびセッショントークンで応答します。

ペネトレーションテスターやレッドチームのメンバーにとって、この技術は特権昇格において重要です(詳細はこちらを参照)。ただし、この技術は非常に目立つため、攻撃者を驚かせることはないかもしれません。

Assume Role Logic

同じアカウント内でロールを引き受けるためには、引き受けるロールが特定のロールARNを許可している場合のように:

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<acc_id>:role/priv-role"
},
"Action": "sts:AssumeRole",
"Condition": {}
}
]
}

この場合、役割 priv-role は、その役割を引き受けるために特に許可される必要はありません(その許可があれば十分です)。

ただし、役割がアカウントにそれを引き受けることを許可している場合、次のようになります:

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<acc_id>:root"
},
"Action": "sts:AssumeRole",
"Condition": {}
}
]
}

その役割を引き受けようとするには、その役割に対して特定の sts:AssumeRole 権限が必要です**。**

異なるアカウントから役割を引き受けようとすると、引き受けられる役割はそれを許可する必要があります(役割のARNまたは外部アカウントを示す)、そして他の役割を引き受けようとしている役割はそれを引き受けるための権限を持っている必要があります(この場合、引き受けられる役割がARNを指定していても、これはオプションではありません)。

Enumeration

# Get basic info of the creds
aws sts get-caller-identity
aws sts get-access-key-info --access-key-id <AccessKeyID>

# Get CLI a session token with current creds
## Using CLI creds
## You cannot get session creds using session creds
aws sts get-session-token
## MFA
aws sts get-session-token --serial-number <arn_device> --token-code <otp_code>

Privesc

次のページでは、STS権限を悪用して特権を昇格させる方法を確認できます:

Post Exploitation

Persistence

References

HackTricksをサポートする

Last updated