Cognito Identity Pools
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Kimlik havuzları, kullanıcılarınızın geçici kimlik bilgileri edinmesini sağlayarak kritik bir rol oynar. Bu kimlik bilgileri, Amazon S3 ve DynamoDB dahil olmak üzere çeşitli AWS hizmetlerine erişim için gereklidir. Kimlik havuzlarının dikkat çekici bir özelliği, hem anonim misafir kullanıcıları hem de kullanıcı kimlik doğrulaması için bir dizi kimlik sağlayıcısını desteklemeleridir. Desteklenen kimlik sağlayıcıları şunlardır:
Amazon Cognito kullanıcı havuzları
Facebook, Google, Amazon ile Giriş ve Apple ile Giriş gibi sosyal oturum açma seçenekleri
OpenID Connect (OIDC) ile uyumlu sağlayıcılar
SAML (Güvenlik İddiası İşaretleme Dili) kimlik sağlayıcıları
Geliştirici kimlik doğrulamalı kimlikler
Kimlik Havuzu oturumları oluşturmak için önce bir Kimlik ID'si oluşturmanız gerekir. Bu Kimlik ID'si, o kullanıcının oturumunun tanımlayıcısıdır. Bu tanımlayıcılar, 1MB'a kadar anahtar-değer çiftleri depolayabilen 20'ye kadar veri kümesine sahip olabilir.
Bu, bir kullanıcının bilgilerini saklamak için faydalıdır (her zaman aynı Kimlik ID'sini kullanacak olan).
Ayrıca, cognito-sync hizmeti, bu bilgileri yönetmek ve senkronize etmek için hizmettir (veri kümelerinde, akışlarda ve SNS mesajlarında bilgi gönderme...).
Pacu, AWS istismar çerçevesi, artık bir hesapta tüm Cognito varlıklarının sayımını otomatikleştiren ve zayıf yapılandırmaları, erişim kontrolü için kullanılan kullanıcı niteliklerini vb. işaret eden "cognito__enum" ve "cognito__attack" modüllerini içermektedir. Ayrıca, kullanıcı oluşturmayı (MFA desteği dahil) ve değiştirilebilir özel niteliklere, kullanılabilir kimlik havuzu kimlik bilgilerine, id token'larındaki üstlenilebilir rollere dayalı ayrıcalık yükseltmeyi otomatikleştirir.
Modüllerin işlevlerinin açıklaması için blog yazısının 2. kısmına bakın. Kurulum talimatları için ana Pacu sayfasına bakın.
Belirli bir kimlik havuzu ve kullanıcı havuzu istemcisi karşısında kullanıcı oluşturma ve tüm ayrıcalık yükseltme vektörlerini denemek için örnek cognito__attack kullanımı:
Örnek cognito__enum kullanımı, mevcut AWS hesabında görünen tüm kullanıcı havuzlarını, kullanıcı havuzu istemcilerini, kimlik havuzlarını, kullanıcıları vb. toplamak için:
Cognito Scanner is a CLI aracı python'da, istenmeyen hesap oluşturma ve kimlik havuzu yükseltmesi dahil olmak üzere Cognito üzerinde farklı saldırıları uygular.
Daha fazla bilgi için https://github.com/padok-team/cognito-scanner adresini kontrol edin
Bir saldırganın, kimlik doğrulaması yapılmamış bir kullanıcı olarak bir Cognito uygulamasında AWS kimlik bilgilerini almak için bilmesi gereken tek şey Identity Pool ID'dir ve bu ID, web/mobil uygulamada sabit kodlanmış olmalıdır. Bir ID şu şekilde görünür: eu-west-1:098e5341-8364-038d-16de-1865e435da3b
(bruteforce edilemez).
Oluşturulan IAM Cognito kimlik doğrulaması yapılmamış rolü varsayılan olarak Cognito_<Identity Pool name>Unauth_Role
olarak adlandırılır.
Eğer sabit kodlanmış bir Identity Pools ID bulursanız ve bu kimlik doğrulaması yapılmamış kullanıcılara izin veriyorsa, AWS kimlik bilgilerini şu şekilde alabilirsiniz:
Ya da aşağıdaki aws cli komutlarını kullanabilirsiniz:
Not edin ki, varsayılan olarak kimlik doğrulaması yapılmamış bir cognito kullanıcısının hiçbir izni OLAMAZ, hatta bir politika aracılığıyla atanmış olsa bile. Aşağıdaki bölümü kontrol edin.
Önceki bölüm varsayılan gelişmiş kimlik doğrulama akışını takip etti. Bu akış, oluşturulan IAM rol oturumu için kısıtlayıcı oturum politikası belirler. Bu politika, oturumun yalnızca bu listedeki hizmetleri kullanmasına izin verecektir (rolün diğer hizmetlere erişimi olsa bile).
Ancak, bunu aşmanın bir yolu vardır; eğer Kimlik havuzu "Temel (Klasik) Akış" etkinse, kullanıcı o akışı kullanarak bir oturum alabilecektir ve bu kısıtlayıcı oturum politikası olmayacaktır.
Eğer bu hata ile karşılaşırsanız, bunun nedeni temel akışın etkin olmamasıdır (varsayılan)
GetOpenIdToken işlemi çağrılırken bir hata oluştu (InvalidParameterException): Temel (klasik) akış etkin değil, lütfen geliştirilmiş akışı kullanın.
Bir dizi IAM kimlik bilgisine sahip olduğunuzda, hangi erişime sahip olduğunuzu kontrol edin ve yetkileri yükseltmeye çalışın.
Kimlik doğrulanmış kullanıcıların muhtemelen farklı izinler alacağını unutmayın, bu nedenle eğer uygulama içinde kaydolabiliyorsanız, bunu yapmayı deneyin ve yeni kimlik bilgilerini alın.
Kimlik Havuzuna erişen kimlik doğrulanmış kullanıcılar için de roller mevcut olabilir.
Bunun için kimlik sağlayıcısına erişiminiz olması gerekebilir. Eğer bu bir Cognito Kullanıcı Havuzu ise, belki varsayılan davranışı kötüye kullanarak kendiniz yeni bir kullanıcı oluşturabilirsiniz.
IAM Cognito kimlik doğrulama rolü varsayılan olarak Cognito_<Kimlik Havuzu adı>Auth_Role
olarak adlandırılır.
Her neyse, aşağıdaki örnek, bir Cognito Kullanıcı Havuzu içinde kimlik doğrulaması yapmış olduğunuzu varsayıyor (başka türde kimlik sağlayıcılarının da yapılandırılabileceğini unutmayın).
Kullanıcının giriş yaptığı kimlik sağlayıcısına veya sadece kullanıcıya (iddialar kullanarak) bağlı olarak farklı IAM rollerini yapılandırmak mümkündür. Bu nedenle, aynı veya farklı sağlayıcılar aracılığıyla farklı kullanıcılara erişiminiz varsa, giriş yapmanın ve hepsinin IAM rollerine erişmenin faydalı olabileceğini unutmayın.
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE) GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)