Cognito Identity Pools
Temel Bilgiler
Kimlik havuzları, kullanıcılarınızın geçici kimlik bilgileri edinmesini sağlayarak önemli bir rol oynar. Bu kimlik bilgileri, Amazon S3 ve DynamoDB gibi çeşitli AWS hizmetlerine erişmek için gereklidir. Kimlik havuzlarının dikkate değer bir özelliği, hem anonim misafir kullanıcıları hem de kullanıcı kimlik doğrulaması için çeşitli kimlik sağlayıcılarını desteklemesidir. Desteklenen kimlik sağlayıcıları şunları içerir:
Amazon Cognito kullanıcı havuzları
Facebook, Google, Amazon ile Giriş Yap ve Apple ile Oturum Aç gibi sosyal oturum açma seçenekleri
OpenID Connect (OIDC) uyumlu sağlayıcılar
SAML (Security Assertion Markup Language) kimlik sağlayıcıları
Geliştirici tarafından doğrulanmış kimlikler
Cognito Sync
Kimlik Havuzu oturumlarını oluşturmak için öncelikle bir Kimlik Kimliği oluşturmanız gerekmektedir. Bu Kimlik Kimliği, kullanıcının oturumunun kimliklendirilmesi için kullanılır. Bu kimliklendirmeler, 1MB'ye kadar anahtar-değer çiftlerini depolayabilen en fazla 20 veri kümesine sahip olabilir.
Bu, bir kullanıcının bilgilerini (her zaman aynı Kimlik Kimliğini kullanan kullanıcı) tutmak için faydalıdır.
Ayrıca, hizmet olan cognito-sync, bu bilgileri (veri kümelerinde, akışlarda bilgi gönderme ve SNS mesajlarında) yönetmeyi ve senkronize etmeyi sağlar.
Pentesting için Araçlar
Pacu, AWS saldırı çerçevesi, artık bir hesaptaki tüm Cognito varlıklarının numaralandırılmasını otomatikleştiren "cognito__enum" ve "cognito__attack" modüllerini içermektedir. Zayıf yapılandırmaları, erişim kontrolü için kullanılan kullanıcı özniteliklerini vb. belirler ve ayrıca değiştirilebilir özel özniteliklere dayalı kullanıcı oluşturmayı (MFA desteği de dahil) ve ayrıcalık yükseltmeyi, kullanılabilir kimlik havuzu kimlik bilgilerini, id belgelerindeki rol alınabilir rolleri otomatikleştirir.
Modüllerin işlevlerinin açıklaması için blog yazısının ikinci bölümüne bakın. Kurulum talimatları için ana Pacu sayfasına bakın.
Kullanım
Belirli bir kimlik havuzu ve kullanıcı havuzu istemcisi için kullanıcı oluşturma ve tüm ayrıcalık yükseltme vektörlerini denemek için örnek cognito__attack 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 örnek cognito__enum kullanımı:
Bu komut, AWS hesabında bulunan tüm kullanıcı havuzlarını, kullanıcı havuzu istemcilerini, kimlik havuzlarını ve kullanıcıları listeleyecektir.
Cognito Scanner, Cognito üzerinde istenmeyen hesap oluşturma ve kimlik havuzu yükseltme dahil olmak üzere farklı saldırıları uygulayan bir Python tabanlı bir CLI aracıdır.
Kurulum
Kullanım
Daha fazla bilgi için https://github.com/padok-team/cognito-scanner adresini kontrol edin.
IAM Rollerine Erişim
Kimlik Doğrulamasız
Bir saldırganın, kimlik doğrulamasız bir kullanıcı olarak bir Cognito uygulamasında AWS kimlik bilgilerini elde etmek için bilmesi gereken tek şey, Kimlik Havuzu Kimliği'dir ve bu Kimlik Havuzu Kimliği, web/mobil uygulamanın kullanması için kodlanmış olmalıdır. Bir Kimlik Havuzu Kimliği şuna benzer: eu-west-1:098e5341-8364-038d-16de-1865e435da3b
(kaba kuvvet saldırısı yapılamaz).
IAM Cognito kimlik doğrulamasız rolü varsayılan olarak Cognito_<Kimlik Havuzu adı>Unauth_Role
olarak adlandırılır.
Eğer bir Kimlik Havuzu Kimliği kodlanmış olarak bulursanız ve kimlik doğrulamasız kullanıcılara izin veriyorsa, AWS kimlik bilgilerini aşağıdaki komutla elde edebilirsiniz:
Ya da aşağıdaki aws cli komutlarını kullanabilirsiniz:
Unutmayın ki varsayılan olarak kimlik doğrulaması yapılmamış bir cognito kullanıcısı, bir politika aracılığıyla atansa bile herhangi bir izne sahip olamaz. Aşağıdaki bölümü kontrol edin.
Gelişmiş vs Temel Kimlik Doğrulama Akışı
Ö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ı bir oturum politikası ayarlar. Bu politika, oturuma bu listedeki hizmetleri kullanmasına izin verir (rolün diğer hizmetlere erişimi olsa bile).
Ancak, Kimlik havuzunda "Temel (Klasik) Akış" etkinleştirilmişse, kullanıcı bu akışı kullanarak kısıtlayıcı oturum politikasına sahip olmayan bir oturum elde edebilir.
Bu hatayı alıyorsanız, temel akış etkin değil (varsayılan) olduğu için.
An error occurred (InvalidParameterException) when calling the GetOpenIdToken operation: Basic (classic) flow is not enabled, please use enhanced flow.
IAM kimlik bilgileri kümesine sahip olduğunuzda hangi erişime sahip olduğunuzu kontrol etmeli ve ayrıcalıkları yükseltmeye çalışmalısınız.
Kimlik doğrulandı
Kimlik doğrulanan kullanıcılar muhtemelen farklı izinler verilecektir, bu yüzden uygulamaya kaydolabilirseniz, bunu deneyin ve yeni kimlik bilgilerini alın.
Ayrıca, Kimlik Havuzu'na erişen kimlik doğrulanan kullanıcılar için roller de mevcut olabilir.
Bunun için kimlik sağlayıcıya erişiminizin olması gerekebilir. Eğer bu bir Cognito Kullanıcı Havuzu ise, varsayılan davranışı istismar edebilir ve kendiniz yeni bir kullanıcı oluşturabilirsiniz.
IAM Cognito kimlik doğrulaması rolü varsayılan olarak Cognito_<Kimlik Havuzu adı>Auth_Role
olarak adlandırılır.
Neyse ki, aşağıdaki örnek, Kimlik Havuzuna erişmek için kullanılan bir Cognito Kullanıcı Havuzu içinde zaten oturum açtığınızı varsayar (unutmayın, diğer kimlik sağlayıcı türleri de yapılandırılmış olabilir).
Kullanıcının oturum açtığı kimlik sağlayıcıya bağlı olarak farklı IAM rolleri yapılandırılabilir veya sadece kullanıcıya bağlı olarak (talepleri kullanarak). Bu nedenle, aynı veya farklı sağlayıcılardan farklı kullanıcılara erişiminiz varsa, hepsinin IAM rollerine giriş yapmak ve erişmek için değer olabilir.
Last updated