Cognito Identity Pools
Basiese Inligting
Identiteit damme speel 'n belangrike rol deur jou gebruikers in staat te stel om tydelike geloofsbriewe te verkry. Hierdie geloofsbriewe is noodsaaklik vir toegang tot verskeie AWS-diens, insluitend maar nie beperk tot Amazon S3 en DynamoDB. 'n Noemenswaardige kenmerk van identiteit damme is hul ondersteuning vir beide anonieme gasgebruikers en 'n verskeidenheid identiteitsverskaffers vir gebruikersverifikasie. Die ondersteunde identiteitsverskaffers sluit in:
Amazon Cognito-gebruikersdamme
Sosiale aanmeldingsopsies soos Facebook, Google, Aanmelding by Amazon en Aanmelding met Apple
Verskaffers wat voldoen aan OpenID Connect (OIDC)
SAML (Security Assertion Markup Language) identiteitsverskaffers
Ontwikkelaar-geverifieerde identiteite
Cognito Sync
Om Identiteit Pool-sessies te genereer, moet jy eers 'n Identiteit ID genereer. Hierdie Identiteit ID is die identifikasie van die sessie van daardie gebruiker. Hierdie identifikasies kan tot 20 datasets hê wat tot 1MB sleutel-waarde pare kan stoor.
Dit is nuttig om inligting van 'n gebruiker te behou (wat altyd dieselfde Identiteit ID sal gebruik).
Verder is die diens cognito-sync die diens wat dit moontlik maak om hierdie inligting te bestuur en te sinchroniseer (in die datasets, deur inligting in strome en SNS-boodskappe te stuur...).
Gereedskap vir pentesting
Pacu, die AWS-uitbuitingsraamwerk, sluit nou die "cognito__enum" en "cognito__attack" modules in wat outomatiese opsporing van alle Cognito-bates in 'n rekening en swak konfigurasies, gebruikerskenmerke wat vir toegangsbeheer gebruik word, ens., en ook outomatiese gebruikerskeuring (insluitend MFA-ondersteuning) en voorregverhoging gebaseer op veranderbare aangepaste kenmerke, bruikbare identiteit pool-legitimasie, aanneembare rolle in id tokens, ens.
Vir 'n beskrywing van die modules se funksies, sien deel 2 van die blogpos. Vir installasie-instruksies, sien die hoof Pacu bladsy.
Gebruik
Voorbeeld cognito__attack gebruik om gebruikerskeuring en alle voorregverhogingsvektore teen 'n gegewe identiteit pool en gebruikerspoolklient te probeer:
Voorbeeld cognito__enum gebruik om alle gebruikerspools, gebruikerspoolclients, identiteitspools, gebruikers, ens. te verzamelen wat sigbaar is in die huidige AWS-rekening:
Dit sal alle relevante inligting oor gebruikerspools, gebruikerspoolclients, identiteitspools en gebruikers in die huidige AWS-rekening versamel.
Cognito Scanner is 'n CLI-werktuig in Python wat verskillende aanvalle op Cognito implementeer, insluitend ongewenste rekening-skepping en identiteitspoel-escalasie.
Installasie
Gebruik
Vir meer inligting, besoek https://github.com/padok-team/cognito-scanner
Toegang tot IAM-rolle
Ongeverifieerd
Die enigste ding wat 'n aanvaller moet weet om AWS-legitimasie in 'n Cognito-toepassing as 'n ongeverifieerde gebruiker te kry, is die Identity Pool ID, en hierdie ID moet hardgekodder wees in die web-/mobiele toepassing sodat dit dit kan gebruik. 'n ID lyk soos hierdie: eu-west-1:098e5341-8364-038d-16de-1865e435da3b
(dit kan nie met bruteforce gekraak word nie).
Die IAM Cognito ongeverifieerde rol wat deur die is geskep, word standaard Cognito_<Identity Pool-naam>Unauth_Role
genoem
As jy 'n hardgekodde Identity Pool ID vind en dit ongeverifieerde gebruikers toelaat, kan jy AWS-legitimasie kry met:
Of jy kan die volgende aws cli-opdragte gebruik:
Let daarop dat 'n ongeverifieerde cognito-gebruiker standaard geen toestemming kan hê nie, selfs as dit toegewys is deur middel van 'n beleid. Kontroleer die volgende afdeling.
Enhanced vs Basic Authentication flow
Die vorige afdeling het die standaard verbeterde verifikasievloei gevolg. Hierdie vloei stel 'n beperkende sessiebeleid in vir die gegenereerde IAM-rolsessie. Hierdie beleid sal slegs die sessie toelaat om die dienste van hierdie lys te gebruik (selfs as die rol toegang tot ander dienste gehad het).
Daar is egter 'n manier om dit te omseil, as die Identity-pool "Basiese (Klassieke) Vloei" geaktiveer het, sal die gebruiker 'n sessie kan verkry deur daardie vloei te gebruik wat nie daardie beperkende sessiebeleid sal hê nie.
As jy hierdie fout ontvang, is dit omdat die basiese vloei nie geaktiveer is (verstek) nie
An error occurred (InvalidParameterException) when calling the GetOpenIdToken operation: Basic (classic) flow is not enabled, please use enhanced flow.
Met 'n stel IAM-legitimasie moet jy ondersoek instel watter toegang jy het en probeer voorregte verhoog.
Geauthentiseer
Onthou dat geauthentiseerde gebruikers waarskynlik verskillende toestemmings sal hê, so as jy binne die app kan registreer, probeer dit en kry die nuwe legitimasie.
Daar kan ook rolle beskikbaar wees vir geauthentiseerde gebruikers wat die Identiteitspoel benader.
Hiervoor mag jy toegang tot die identiteitsverskaffer nodig hê. As dit 'n Cognito-gebruikerspoel is, kan jy dalk die verstekgedrag misbruik en self 'n nuwe gebruiker skep.
Die IAM Cognito-geauthentiseerde rol wat deur die volgende voorbeeld geskep is, word standaard Cognito_<Identity Pool name>Auth_Role
genoem.
In elk geval verwag die volgende voorbeeld dat jy reeds ingeteken het in 'n Cognito-gebruikerspoel wat gebruik word om toegang tot die Identiteitspoel te verkry (moenie vergeet dat ander tipes identiteitsverskaffers ook gekonfigureer kan word nie).
Dit is moontlik om verskillende IAM-rolle te konfigureer, afhangende van die identiteitsverskaffer waardeur die gebruiker aangemeld word, of selfs net afhangende van die gebruiker (deur middel van bewerings). Daarom, as jy toegang het tot verskillende gebruikers deur dieselfde of verskillende verskaffers, mag dit die moeite werd wees om in te teken en die IAM-rolle van almal te ondersoek.
Last updated