AWS - IAM Privesc
IAM
Aby uzyskać więcej informacji na temat IAM, sprawdź:
pageAWS - IAM, Identity Center & SSO Enumiam:CreatePolicyVersion
iam:CreatePolicyVersion
Nadaje możliwość tworzenia nowej wersji polityki IAM, omijając potrzebę posiadania uprawnienia iam:SetDefaultPolicyVersion
za pomocą flagi --set-as-default
. Pozwala to na definiowanie niestandardowych uprawnień.
Polecenie wykorzystujące podatność:
Wpływ: Bezpośrednio zwiększa uprawnienia, umożliwiając wykonanie dowolnej akcji na dowolnym zasobie.
iam:SetDefaultPolicyVersion
iam:SetDefaultPolicyVersion
Pozwala zmienić domyślną wersję polityki IAM na inną istniejącą wersję, potencjalnie zwiększając uprawnienia, jeśli nowa wersja ma więcej uprawnień.
Polecenie Bash:
Wpływ: Pośrednie eskalowanie uprawnień poprzez włączenie większej liczby uprawnień.
iam:CreateAccessKey
iam:CreateAccessKey
Umożliwia tworzenie identyfikatora klucza dostępu (access key ID) oraz tajnego klucza dostępu (secret access key) dla innego użytkownika, co prowadzi do potencjalnego eskalowania uprawnień.
Wykorzystanie:
Wpływ: Bezpośrednie eskalowanie uprawnień poprzez przejęcie rozszerzonych uprawnień innego użytkownika.
iam:CreateLoginProfile
| iam:UpdateLoginProfile
iam:CreateLoginProfile
| iam:UpdateLoginProfile
Umożliwia tworzenie lub aktualizowanie profilu logowania, w tym ustawianie haseł do logowania do konsoli AWS, co prowadzi do bezpośredniego eskalowania uprawnień.
Wykorzystanie dla tworzenia:
Wykorzystanie podatności Update:
Uwaga: Wykorzystywanie podatności bez zgody właściciela systemu jest nielegalne. Upewnij się, że masz odpowiednie uprawnienia i zezwolenia przed przeprowadzeniem jakiejkolwiek aktywności związanej z penetracją testową.
Wpływ: Bezpośrednie eskalowanie uprawnień poprzez zalogowanie się jako "dowolny" użytkownik.
iam:UpdateAccessKey
iam:UpdateAccessKey
Pozwala na włączenie wyłączonego klucza dostępu, co potencjalnie prowadzi do nieautoryzowanego dostępu, jeśli atakujący posiada wyłączony klucz.
Wykorzystanie:
Wpływ: Bezpośrednie eskalowanie uprawnień poprzez ponowne aktywowanie kluczy dostępu.
iam:CreateServiceSpecificCredential
| iam:ResetServiceSpecificCredential
iam:CreateServiceSpecificCredential
| iam:ResetServiceSpecificCredential
Umożliwia generowanie lub resetowanie poświadczeń dla konkretnych usług AWS (np. CodeCommit, Amazon Keyspaces), dziedzicząc uprawnienia powiązanego użytkownika.
Wykorzystanie dla tworzenia:
Wykorzystanie dla Reset:
Wpływ: Bezpośrednie eskalowanie uprawnień w ramach uprawnień usługi użytkownika.
iam:AttachUserPolicy
|| iam:AttachGroupPolicy
iam:AttachUserPolicy
|| iam:AttachGroupPolicy
Pozwala na dołączanie polis do użytkowników lub grup, co bezpośrednio eskaluje uprawnienia poprzez dziedziczenie uprawnień dołączonej polisy.
Wykorzystanie dla użytkownika:
Wykorzystanie dla grupy:
Wpływ: Bezpośrednie eskalowanie uprawnień do wszystkiego, co polityka przyznaje.
iam:AttachRolePolicy
, ( sts:AssumeRole
|iam:createrole
) | iam:PutUserPolicy
| iam:PutGroupPolicy
| iam:PutRolePolicy
iam:AttachRolePolicy
, ( sts:AssumeRole
|iam:createrole
) | iam:PutUserPolicy
| iam:PutGroupPolicy
| iam:PutRolePolicy
Umożliwia dołączanie lub dodawanie polityk do ról, użytkowników lub grup, umożliwiając bezpośrednie eskalowanie uprawnień poprzez przyznanie dodatkowych uprawnień.
Wykorzystanie dla roli:
Wykorzystanie dla polityk Inline:
Inline policies are policies that are directly attached to an IAM user, group, or role. These policies are defined within the same JSON document as the user, group, or role, rather than being managed separately. This makes them a potential target for privilege escalation.
Polityki Inline to polityki, które są bezpośrednio dołączone do użytkownika IAM, grupy lub roli. Polityki te są definiowane w tym samym dokumencie JSON co użytkownik, grupa lub rola, zamiast być zarządzane oddzielnie. Sprawia to, że są potencjalnym celem eskalacji uprawnień.
To exploit an inline policy, you need to have the necessary permissions to modify the policy document. Once you have access to modify the policy, you can add additional permissions to the policy that grant you higher privileges.
Aby wykorzystać politykę Inline, musisz mieć odpowiednie uprawnienia do modyfikacji dokumentu polityki. Po uzyskaniu dostępu do modyfikacji polityki, możesz dodać dodatkowe uprawnienia do polityki, które przyznają Ci wyższe uprawnienia.
Here are the steps to exploit an inline policy:
Oto kroki do wykorzystania polityki Inline:
Identify the IAM user, group, or role that has an inline policy attached.
Determine the permissions granted by the existing inline policy.
Gain access to modify the policy document.
Add additional permissions to the policy document that grant you higher privileges.
Save the modified policy document.
Test the modified policy to ensure it grants you the desired privileges.
Exploit the higher privileges granted by the modified policy.
Zidentyfikuj użytkownika IAM, grupę lub rolę, która ma dołączoną politykę Inline.
Określ uprawnienia przyznane przez istniejącą politykę Inline.
Uzyskaj dostęp do modyfikacji dokumentu polityki.
Dodaj dodatkowe uprawnienia do dokumentu polityki, które przyznają Ci wyższe uprawnienia.
Zapisz zmodyfikowany dokument polityki.
Przetestuj zmodyfikowaną politykę, aby upewnić się, że przyznaje Ci pożądane uprawnienia.
Wykorzystaj wyższe uprawnienia przyznane przez zmodyfikowaną politykę.
Możesz użyć polityki takiej jak:
Wpływ: Bezpośrednie eskalowanie uprawnień poprzez dodawanie uprawnień za pomocą polityk.
iam:AddUserToGroup
iam:AddUserToGroup
Umożliwia dodanie siebie do grupy IAM, eskalując uprawnienia poprzez dziedziczenie uprawnień grupy.
Wykorzystanie:
Wpływ: Bezpośrednie eskalowanie uprawnień do poziomu uprawnień grupy.
iam:UpdateAssumeRolePolicy
iam:UpdateAssumeRolePolicy
Pozwala na zmianę dokumentu polityki przyjmowania roli roli, umożliwiając przyjęcie roli i jej powiązanych uprawnień.
Wykorzystanie:
Gdzie polityka wygląda następująco, co daje użytkownikowi uprawnienie do przejęcia roli:
Wpływ: Bezpośrednie eskalowanie uprawnień poprzez przejęcie uprawnień dowolnej roli.
iam:UploadSSHPublicKey
|| iam:DeactivateMFADevice
iam:UploadSSHPublicKey
|| iam:DeactivateMFADevice
Umożliwia przesyłanie klucza publicznego SSH w celu uwierzytelnienia w CodeCommit oraz dezaktywację urządzeń MFA, co prowadzi do potencjalnego pośredniego eskalowania uprawnień.
Wykorzystanie dla przesyłania klucza SSH:
Wykorzystanie do dezaktywacji MFA:
To exploit the MFA deactivation vulnerability, follow these steps:
Identify a user with the necessary IAM permissions to modify MFA settings. This user should have the
iam:UpdateLoginProfile
permission.Use the
update-login-profile
command to disable MFA for the targeted user. This command can be executed using the AWS CLI or SDKs.Verify that MFA has been successfully disabled by attempting to log in as the targeted user without providing the MFA code.
By exploiting this vulnerability, an attacker can bypass the MFA protection and gain unauthorized access to the targeted user's account. It is crucial to regularly review and restrict IAM permissions to prevent such privilege escalation attacks.
Wpływ: Pośrednie eskalowanie uprawnień poprzez umożliwienie dostępu do CodeCommit lub wyłączenie ochrony MFA.
iam:ResyncMFADevice
iam:ResyncMFADevice
Pozwala na resynchronizację urządzenia MFA, co potencjalnie prowadzi do pośredniego eskalowania uprawnień poprzez manipulację ochroną MFA.
Polecenie Bash:
Wpływ: Pośrednie eskalowanie uprawnień poprzez dodawanie lub manipulowanie urządzeniami MFA.
iam:UpdateSAMLProvider
, iam:ListSAMLProviders
, (iam:GetSAMLProvider
)
iam:UpdateSAMLProvider
, iam:ListSAMLProviders
, (iam:GetSAMLProvider
)Z tymi uprawnieniami możesz zmieniać metadane XML połączenia SAML. Następnie, możesz wykorzystać federację SAML do logowania się z dowolną rolą, która mu ufa.
Należy zauważyć, że legitymowi użytkownicy nie będą w stanie się zalogować. Jednakże, możesz uzyskać XML, aby móc wstawić swoje dane, zalogować się i przywrócić poprzednie ustawienia.
TODO: Narzędzie zdolne do generowania metadanych SAML i logowania się z określoną rolą
iam:UpdateOpenIDConnectProviderThumbprint
, iam:ListOpenIDConnectProviders
, (iam:
GetOpenIDConnectProvider
)
iam:UpdateOpenIDConnectProviderThumbprint
, iam:ListOpenIDConnectProviders
, (iam:
GetOpenIDConnectProvider
)(Niepewny co do tego) Jeśli atakujący ma te uprawnienia, może dodać nowy Thumbprint, aby móc zalogować się do wszystkich ról ufających dostawcy.
Odwołania
Last updated