Cognito Identity Pools
Grundlegende Informationen
Identitätspools spielen eine entscheidende Rolle, indem sie es Ihren Benutzern ermöglichen, temporäre Anmeldeinformationen zu erhalten. Diese Anmeldeinformationen sind unerlässlich für den Zugriff auf verschiedene AWS-Dienste, einschließlich, aber nicht beschränkt auf Amazon S3 und DynamoDB. Ein bemerkenswertes Merkmal von Identitätspools ist ihre Unterstützung sowohl für anonyme Gastbenutzer als auch für eine Reihe von Identitätsanbietern zur Benutzerauthentifizierung. Die unterstützten Identitätsanbieter umfassen:
Amazon Cognito-Benutzerpools
Soziale Anmeldeoptionen wie Facebook, Google, Anmeldung bei Amazon und Anmeldung bei Apple
Anbieter, die OpenID Connect (OIDC) entsprechen
SAML (Security Assertion Markup Language) Identitätsanbieter
Entwicklerauthentifizierte Identitäten
Cognito Sync
Um Identitäts-Pool-Sitzungen zu generieren, müssen Sie zuerst eine Identitäts-ID generieren. Diese Identitäts-ID ist die Identifizierung der Sitzung dieses Benutzers. Diese Identifizierungen können bis zu 20 Datensätze haben, die jeweils bis zu 1 MB Schlüssel-Wert-Paare speichern können.
Dies ist nützlich, um Informationen über einen Benutzer zu speichern (der immer dieselbe Identitäts-ID verwenden wird).
Darüber hinaus ist der Dienst cognito-sync der Dienst, der es ermöglicht, diese Informationen zu verwalten und zu synchronisieren (in den Datensätzen, indem Informationen in Streams und SNS-Nachrichten gesendet werden...).
Tools für Pentesting
Pacu, das AWS-Exploitation-Framework, enthält jetzt die Module "cognito__enum" und "cognito__attack", die die Enumeration aller Cognito-Ressourcen in einem Konto automatisieren und schwache Konfigurationen, für den Zugriffskontrolle verwendete Benutzerattribute usw. kennzeichnen, außerdem automatisieren sie die Benutzererstellung (einschließlich MFA-Unterstützung) und die Privilegieneskalation basierend auf änderbaren benutzerdefinierten Attributen, verwendbaren Identitäts-Pool-Anmeldeinformationen, übernehmbaren Rollen in ID-Token usw.
Für eine Beschreibung der Funktionen der Module siehe Teil 2 des Blog-Beitrags. Für Installationsanweisungen siehe die Hauptseite von Pacu.
Verwendung
Beispielhafte Verwendung von cognito__attack, um die Benutzererstellung zu versuchen und alle Privilegieneskalationsvektoren gegen einen bestimmten Identitäts-Pool und Benutzer-Pool-Client durchzuführen:
Beispiel für die Verwendung von cognito__enum, um alle Benutzerpools, Benutzerpool-Clients, Identitätspools, Benutzer usw. zu sammeln, die im aktuellen AWS-Konto sichtbar sind:
Cognito Scanner ist ein CLI-Tool in Python, das verschiedene Angriffe auf Cognito implementiert, einschließlich unerwünschter Kontenerstellung und Identitätspool-Eskalation.
Installation
Verwendung
Für weitere Informationen besuchen Sie https://github.com/padok-team/cognito-scanner
Zugriff auf IAM-Rollen
Nicht authentifiziert
Das Einzige, was ein Angreifer wissen muss, um in einer Cognito-App als nicht authentifizierter Benutzer AWS-Anmeldeinformationen zu erhalten, ist die Identitätspool-ID, und diese **ID muss im Web-/Mobile-**Anwendung fest codiert sein, damit sie verwendet wird. Eine ID sieht so aus: eu-west-1:098e5341-8364-038d-16de-1865e435da3b
(sie ist nicht durch Brute-Force zu erraten).
Die IAM Cognito nicht authentifizierte Rolle, die über erstellt wird, heißt standardmäßig Cognito_<Identity Pool-Name>Unauth_Role
Wenn Sie eine fest codierte Identitätspool-ID finden und es nicht authentifizierten Benutzern erlaubt, können Sie AWS-Anmeldeinformationen erhalten:
Oder Sie könnten die folgenden AWS CLI-Befehle verwenden:
Beachten Sie, dass ein nicht authentifizierter Cognito-Benutzer standardmäßig keine Berechtigung haben kann, auch wenn sie über eine Richtlinie zugewiesen wurde. Überprüfen Sie den folgenden Abschnitt.
Verbesserter vs. grundlegender Authentifizierungsablauf
Der vorherige Abschnitt folgte dem Standard-Authentifizierungsablauf. Dieser Ablauf legt eine restriktive Sitzungsrichtlinie für die generierte IAM-Rollensitzung fest. Diese Richtlinie erlaubt der Sitzung nur, die Dienste aus dieser Liste zu verwenden (auch wenn die Rolle Zugriff auf andere Dienste hatte).
Es gibt jedoch eine Möglichkeit, dies zu umgehen: Wenn der Identitätspool "Basic (Classic) Flow" aktiviert hat, kann der Benutzer eine Sitzung mit diesem Ablauf erhalten, der keine restriktive Sitzungsrichtlinie haben wird.
Wenn Sie diesen Fehler erhalten, liegt das daran, dass der Grundfluss nicht aktiviert ist (Standard)
Ein Fehler ist aufgetreten (InvalidParameterException) beim Aufruf der GetOpenIdToken-Operation: Der Grund (klassisch) ist nicht aktiviert, bitte verwenden Sie den erweiterten Fluss.
Wenn Sie über einen Satz IAM-Anmeldeinformationen verfügen, sollten Sie überprüfen, auf welche Zugriffsrechte Sie zugreifen können und versuchen, Berechtigungen zu eskalieren.
Authentifiziert
Denken Sie daran, dass authentifizierte Benutzer wahrscheinlich unterschiedliche Berechtigungen erhalten, daher sollten Sie, wenn Sie sich innerhalb der App registrieren können, dies versuchen und die neuen Anmeldeinformationen erhalten.
Es könnten auch Rollen für authentifizierte Benutzer, die auf den Identitätspool zugreifen, verfügbar sein.
Dafür benötigen Sie möglicherweise Zugriff auf den Identitätsanbieter. Wenn es sich um ein Cognito-Benutzerpool handelt, können Sie möglicherweise das Standardverhalten missbrauchen und einen neuen Benutzer erstellen.
Die IAM Cognito authentifizierte Rolle, die über erstellt wird, heißt standardmäßig Cognito_<Identity Pool name>Auth_Role
Wie auch immer, das folgende Beispiel setzt voraus, dass Sie sich bereits in einem Cognito-Benutzerpool angemeldet haben, der zum Zugriff auf den Identitätspool verwendet wird (vergessen Sie nicht, dass auch andere Arten von Identitätsanbietern konfiguriert sein könnten).
Es ist möglich, verschiedene IAM-Rollen zu konfigurieren, je nachdem, von welchem Identitätsanbieter der Benutzer angemeldet ist oder sogar nur vom Benutzer (unter Verwendung von Claims). Daher, wenn Sie Zugriff auf verschiedene Benutzer durch denselben oder verschiedene Anbieter haben, könnte es sich lohnen, sich anzumelden und auf die IAM-Rollen aller zuzugreifen.
Last updated