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、シークレットキー、およびセッショントークンを返します。

ペネトレーションテスターやRed Teamメンバーにとって、この技術は特権の昇格に役立ちます(詳細はこちら)。ただし、この技術は非常に目立ちやすく、攻撃者を驚かせることはないかもしれません。

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権限を悪用して権限を昇格させる方法を確認できます:

AWS - STS Privesc

Post Exploitation

AWS - STS Post Exploitation

Persistence

AWS - STS Persistence

References

HackTricksをサポートする

Last updated