AWS - STS Enum

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

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

STS

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

STSの目的が アイデンティティの偽装のための資格情報を発行する ことであることから、このサービスは 特権昇格や持続性の維持 に非常に価値がありますが、幅広いオプションを持っていないかもしれません。

ロールの偽装

AWS STS が提供する AssumeRole アクションは、主体が他の主体の資格情報を取得し、基本的にその主体を偽装することを許可するため、重要です。呼び出されると、指定されたARNに対応するアクセスキーID、シークレットキー、およびセッショントークンが返されます。

ペネトレーションテスターやレッドチームメンバーにとって、このテクニックは特権昇格にとって重要です(詳細はこちら)。ただし、このテクニックはかなり目立ち、攻撃者を油断させないかもしれません。

ロールの仮定ロジック

同じアカウント内でロールを仮定するためには、仮定するロールが特定のロール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を指定している場合でも、これは任意ではありません)。

列挙

# 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>

特権昇格

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

pageAWS - STS Privesc

攻撃後の処理

pageAWS - STS Post Exploitation

永続性

pageAWS - IAM Persistence

参考文献

htARTE(HackTricks AWS Red Team Expert)で**ゼロからヒーローまでのAWSハッキングを学びましょう**!

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

最終更新