Cognito Identity Pools
Dowiedz się i ćwicz Hacking AWS: HackTricks Training AWS Red Team Expert (ARTE)
Dowiedz się i ćwicz Hacking GCP:
HackTricks Training GCP Red Team Expert (GRTE)
Podstawowe informacje
Pule tożsamości odgrywają kluczową rolę, umożliwiając Twoim użytkownikom uzyskanie tymczasowych poświadczeń. Te poświadczenia są niezbędne do uzyskania dostępu do różnych usług AWS, w tym między innymi Amazon S3 i DynamoDB. Istotną cechą pul tożsamości jest wsparcie zarówno dla anonimowych gości, jak i różnych dostawców tożsamości do uwierzytelniania użytkowników. Obsługiwani dostawcy tożsamości obejmują:
Pule użytkowników Amazon Cognito
Opcje logowania społecznościowego, takie jak Facebook, Google, Logowanie za pomocą Amazona i Logowanie za pomocą Apple
Dostawcy zgodni z OpenID Connect (OIDC)
Dostawcy tożsamości zgodni z protokołem SAML (Security Assertion Markup Language)
Tożsamości uwierzytelnione przez dewelopera
Cognito Sync
Aby wygenerować sesje puli tożsamości, najpierw musisz wygenerować identyfikator tożsamości. Ten identyfikator tożsamości jest identyfikacją sesji tego użytkownika. Te identyfikatory mogą zawierać do 20 zestawów danych, które mogą przechowywać do 1 MB par klucz-wartość.
Jest to przydatne do przechowywania informacji o użytkowniku (który zawsze będzie korzystał z tego samego identyfikatora tożsamości).
Co więcej, usługa cognito-sync to usługa, która pozwala zarządzać i synchronizować te informacje (w zestawach danych, wysyłając informacje w strumieniach i wiadomościach SNS...).
Narzędzia do testów penetracyjnych
Pacu, framework eksploatacji AWS, teraz zawiera moduły "cognito__enum" i "cognito__attack", które automatyzują wyliczanie wszystkich zasobów Cognito w koncie i oznaczają słabe konfiguracje, atrybuty użytkownika używane do kontroli dostępu, itp., a także automatyzują tworzenie użytkownika (w tym obsługę MFA) i eskalację uprawnień na podstawie modyfikowalnych niestandardowych atrybutów, użytecznych poświadczeń puli tożsamości, ról do przyjęcia w tokenach id, itp.
Aby zapoznać się z opisem funkcji modułów, zobacz część 2 postu na blogu. Instrukcje instalacji znajdziesz na stronie głównej Pacu.
Użycie
Przykładowe użycie ataku cognito__attack w celu próby utworzenia użytkownika i wszystkich wektorów eskalacji uprawnień przeciwko określonej puli tożsamości i klientowi puli użytkowników:
Przykładowe użycie cognito__enum do zebrania wszystkich pul użytkowników, klientów pul użytkowników, pul tożsamości, użytkowników itp. widocznych w bieżącym koncie AWS:
Cognito Scanner to narzędzie CLI napisane w języku Python, które implementuje różne ataki na Cognito, w tym niechciane tworzenie kont i eskalację puli tożsamości.
Instalacja
Użycie
Dla dalszych informacji sprawdź https://github.com/padok-team/cognito-scanner
Dostęp do ról IAM
Nieuwierzytelniony
Jedyną rzeczą, jakiej potrzebuje atakujący, aby uzyskać poświadczenia AWS w aplikacji Cognito jako użytkownik nieuwierzytelniony, jest ID puli tożsamości, a to ID musi być zakodowane na stałe w aplikacji webowej/mobilnej, aby ją używać. ID wygląda tak: eu-west-1:098e5341-8364-038d-16de-1865e435da3b
(nie można go zgadywać metodą brute force).
Rola nieuwierzytelniona IAM Cognito utworzona za pomocą jest domyślnie nazywana Cognito_<Nazwa puli tożsamości>Unauth_Role
Jeśli znajdziesz zakodowane na stałe ID puli tożsamości i pozwala ono na użytkowników nieuwierzytelnionych, możesz uzyskać poświadczenia AWS za pomocą:
Możesz również użyć następujących poleceń aws cli:
Zauważ, że domyślnie nieuwierzytelniony użytkownik Cognito NIE MOŻE mieć żadnych uprawnień, nawet jeśli zostały mu przypisane za pomocą polityki. Sprawdź następującą sekcję.
Udoskonalony przepływ uwierzytelniania vs podstawowy przepływ uwierzytelniania
Poprzednia sekcja opisywała domyślny udoskonalony przepływ uwierzytelniania. Ten przepływ ustawia restrykcyjną politykę sesji dla wygenerowanej sesji roli IAM. Ta polityka pozwoli tylko na korzystanie z usług z tej listy (nawet jeśli rola miała dostęp do innych usług).
Jednak istnieje sposób na obejście tego ograniczenia, jeśli Pula tożsamości ma włączony "Podstawowy (Klasyczny) Przepływ", użytkownik będzie mógł uzyskać sesję korzystając z tego przepływu, który nie będzie miała tej restrykcyjnej polityki sesji.
Jeśli otrzymujesz ten błąd, oznacza to, że podstawowy przepływ nie jest włączony (domyślnie)
An error occurred (InvalidParameterException) when calling the GetOpenIdToken operation: Basic (classic) flow is not enabled, please use enhanced flow.
Mając zestaw poświadczeń IAM, powinieneś sprawdzić jakie masz uprawnienia i spróbować eskalować uprawnienia.
Zautoryzowany
Pamiętaj, że zautoryzowanym użytkownikom prawdopodobnie zostaną przyznane różne uprawnienia, więc jeśli możesz zarejestrować się w aplikacji, spróbuj to zrobić i uzyskaj nowe poświadczenia.
Dla zautoryzowanych użytkowników uzyskujących dostęp do puli tożsamości mogą być dostępne role.
W tym przypadku możesz potrzebować dostępu do dostawcy tożsamości. Jeśli jest to Pula użytkowników Cognito, być może możesz nadużyć domyślnego zachowania i utworzyć nowego użytkownika samodzielnie.
Rola IAM Cognito zautoryzowana utworzona za pomocą jest domyślnie nazywana Cognito_<Nazwa puli tożsamości>Auth_Role
W każdym razie poniższy przykład zakłada, że jesteś już zalogowany w Puli użytkowników Cognito używanej do uzyskania dostępu do Puli tożsamości (nie zapomnij, że inne rodzaje dostawców tożsamości mogą również być skonfigurowane).
Możliwe jest skonfigurowanie różnych ról IAM w zależności od dostawcy tożsamości, z którego użytkownik jest logowany lub nawet tylko od użytkownika (korzystając z claimów). Dlatego, jeśli masz dostęp do różnych użytkowników poprzez ten sam lub różne dostawcy, może być warto zalogować się i uzyskać dostęp do ról IAM wszystkich z nich.
Dowiedz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Dowiedz się i ćwicz Hacking GCP:
HackTricks Training GCP Red Team Expert (GRTE)
Last updated