AWS - IAM Privesc
IAM
IAMに関する詳細情報は以下を参照:
AWS - IAM, Identity Center & SSO Enumiam:CreatePolicyVersion
iam:CreatePolicyVersion
新しいIAMポリシーバージョンを作成する能力を付与し、--set-as-default
フラグを使用してiam:SetDefaultPolicyVersion
権限を回避します。これにより、カスタム権限を定義することができます。
エクスプロイトコマンド:
影響: 任意のリソースに対して任意のアクションを許可することで、直接的に権限を昇格させます。
iam:SetDefaultPolicyVersion
iam:SetDefaultPolicyVersion
IAMポリシーのデフォルトバージョンを他の既存バージョンに変更することを許可します。新しいバージョンにより多くの権限がある場合、権限が昇格する可能性があります。
Bashコマンド:
影響: より多くの権限を有効にすることによる間接的な権限昇格。
iam:CreateAccessKey
iam:CreateAccessKey
他のユーザーのためにアクセスキーIDとシークレットアクセスキーを作成することを可能にし、潜在的な権限昇格につながる。
エクスプロイト:
影響: 他のユーザーの拡張された権限を引き受けることによる直接的な権限昇格。
iam:CreateLoginProfile
| iam:UpdateLoginProfile
iam:CreateLoginProfile
| iam:UpdateLoginProfile
AWSコンソールログイン用のパスワード設定を含むログインプロファイルの作成または更新を許可し、直接的な権限昇格につながる。
作成のためのエクスプロイト:
Exploit for Update:
更新のためのエクスプロイト:
影響: "任意"のユーザーとしてログインすることによる直接的な権限昇格。
iam:UpdateAccessKey
iam:UpdateAccessKey
無効化されたアクセスキーを有効にすることを許可し、攻撃者が無効化されたキーを持っている場合、不正アクセスにつながる可能性があります。
エクスプロイト:
影響: アクセスキーを再有効化することによる直接的な権限昇格。
iam:CreateServiceSpecificCredential
| iam:ResetServiceSpecificCredential
iam:CreateServiceSpecificCredential
| iam:ResetServiceSpecificCredential
特定のAWSサービス(例:CodeCommit、Amazon Keyspaces)のための資格情報を生成またはリセットすることを可能にし、関連するユーザーの権限を継承します。
作成のためのエクスプロイト:
Resetのエクスプロイト:
影響: ユーザーのサービス権限内での直接的な権限昇格。
iam:AttachUserPolicy
|| iam:AttachGroupPolicy
iam:AttachUserPolicy
|| iam:AttachGroupPolicy
ユーザーまたはグループにポリシーをアタッチすることを許可し、アタッチされたポリシーの権限を継承することで直接的に権限を昇格させます。
ユーザーのためのエクスプロイト:
Groupのエクスプロイト:
影響: ポリシーが許可するすべての権限への直接的な権限昇格。
iam:AttachRolePolicy
, ( sts:AssumeRole
|iam:createrole
) | iam:PutUserPolicy
| iam:PutGroupPolicy
| iam:PutRolePolicy
iam:AttachRolePolicy
, ( sts:AssumeRole
|iam:createrole
) | iam:PutUserPolicy
| iam:PutGroupPolicy
| iam:PutRolePolicy
ロール、ユーザー、またはグループにポリシーをアタッチまたは設定することを許可し、追加の権限を付与することで直接的な権限昇格を可能にします。
ロールのエクスプロイト:
Inline Policiesのエクスプロイト:
ポリシーは次のように使用できます:
影響: ポリシーを通じて権限を追加することによる直接的な権限昇格。
iam:AddUserToGroup
iam:AddUserToGroup
IAMグループに自分自身を追加することを可能にし、グループの権限を継承することで権限を昇格させる。
エクスプロイト:
影響: グループの権限レベルへの直接的な権限昇格。
iam:UpdateAssumeRolePolicy
iam:UpdateAssumeRolePolicy
ロールのアサムロールポリシードキュメントを変更することを許可し、そのロールと関連する権限を引き受けることができるようにします。
エクスプロイト:
ポリシーは次のようになっており、ユーザーにロールを引き受ける権限を与えます:
影響: 任意のロールの権限を引き受けることによる直接的な権限昇格。
iam:UploadSSHPublicKey
|| iam:DeactivateMFADevice
iam:UploadSSHPublicKey
|| iam:DeactivateMFADevice
CodeCommitへの認証のためのSSH公開鍵のアップロードとMFAデバイスの無効化を許可し、間接的な権限昇格の可能性を引き起こします。
SSHキーアップロードのエクスプロイト:
MFA Deactivationのエクスプロイト:
影響: CodeCommitアクセスの有効化やMFA保護の無効化による間接的な権限昇格。
iam:ResyncMFADevice
iam:ResyncMFADevice
MFAデバイスの再同期を許可し、MFA保護を操作することで間接的な権限昇格につながる可能性があります。
Bash Command:
影響: MFAデバイスの追加または操作による間接的な権限昇格。
iam:UpdateSAMLProvider
, iam:ListSAMLProviders
, (iam:GetSAMLProvider
)
iam:UpdateSAMLProvider
, iam:ListSAMLProviders
, (iam:GetSAMLProvider
)これらの権限を持っていると、SAML接続のXMLメタデータを変更できます。その後、SAMLフェデレーションを悪用して、それを信頼している任意のロールでログインすることができます。
これを行うと、正当なユーザーはログインできなくなることに注意してください。しかし、XMLを取得して自分のものを設定し、ログインして以前の設定を戻すことができます。
TODO: 指定されたロールでSAMLメタデータを生成し、ログインできるツール
iam:UpdateOpenIDConnectProviderThumbprint
, iam:ListOpenIDConnectProviders
, (iam:
GetOpenIDConnectProvider
)
iam:UpdateOpenIDConnectProviderThumbprint
, iam:ListOpenIDConnectProviders
, (iam:
GetOpenIDConnectProvider
)(不確かですが)攻撃者がこれらの権限を持っている場合、新しいThumbprintを追加して、プロバイダーを信頼するすべてのロールにログインできるようにする可能性があります。
参考文献
Last updated