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)
Identiteitspoele speel 'n belangrike rol deur jou gebruikers in staat te stel om tydelike geloofsbriewe te verkry. Hierdie geloofsbriewe is noodsaaklik om toegang te verkry tot verskeie AWS-dienste, insluitend maar nie beperk tot Amazon S3 en DynamoDB nie. 'n Opmerkelijke kenmerk van identiteitspoele is hul ondersteuning vir beide anonieme gasgebruikers en 'n verskeidenheid identiteitsverskaffers vir gebruikersverifikasie. Die ondersteunde identiteitsverskaffers sluit in:
Amazon Cognito gebruikerspoele
Sosiale aanmeldopsies soos Facebook, Google, Login with Amazon, en Sign in with Apple
Verskaffers wat voldoen aan OpenID Connect (OIDC)
SAML (Security Assertion Markup Language) identiteitsverskaffers
Ontwikkelaar geverifieerde identiteite
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 van sleutel-waarde pare kan stoor.
Dit is nuttig om inligting van 'n gebruiker te hou (wat altyd dieselfde Identiteit ID sal gebruik).
Boonop is die diens cognito-sync die diens wat toelaat om hierdie inligting te bestuur en te sinkroniseer (in die datasets, inligting in strome en SNS boodskappe te stuur...).
Pacu, die AWS eksploitering raamwerk, sluit nou die "cognito__enum" en "cognito__attack" modules in wat die enumerasie van alle Cognito bates in 'n rekening outomatiseer en swak konfigurasies, gebruikersattributen wat vir toegangbeheer gebruik word, ens., merk, en outomatiseer ook gebruikersskepping (insluitend MFA-ondersteuning) en privilige-eskalasie gebaseer op veranderbare pasgemaakte attributen, bruikbare identiteits pool akkrediteer, aanneembare rolle in id tokens, ens.
Vir 'n beskrywing van die modules se funksies, sien deel 2 van die blog pos. Vir installasie instruksies, sien die hoof Pacu bladsy.
Voorbeeld van cognito__attack gebruik om te probeer om 'n gebruiker te skep en alle privesc vektore teen 'n gegewe identiteits pool en gebruikerspool kliënt:
Voorbeeld cognito__enum gebruik om al die gebruikerspoele, gebruikerspoel kliënte, identiteitspoele, gebruikers, ens. wat sigbaar is in die huidige AWS-rekening, te versamel:
Cognito Scanner is 'n CLI-gereedskap in python wat verskillende aanvalle op Cognito implementeer, insluitend ongewenste rekening skep en identiteitspoel eskalasie.
For more information check https://github.com/padok-team/cognito-scanner
Die enigste ding wat 'n aanvaller moet weet om AWS kredensiale in 'n Cognito-app as 'n ongeoutentiseerde gebruiker te verkry, is die Identiteitspoel-ID, en hierdie ID moet hardgecodeer wees in die web/mobiele toepassing sodat dit dit kan gebruik. 'n ID lyk soos volg: eu-west-1:098e5341-8364-038d-16de-1865e435da3b
(dit is nie bruteforceerbaar nie).
Die IAM Cognito ongeoutentiseerde rol wat via geskep is, word standaard genoem Cognito_<Identiteitspoel naam>Unauth_Role
As jy 'n Identiteitspoel-ID hardgecodeer vind en dit ongeoutentiseerde gebruikers toelaat, kan jy AWS kredensiale verkry met:
Of jy kan die volgende aws cli commands gebruik:
Let daarop dat 'n nie-geverifieerde cognito gebruiker NIE enige toestemming kan hê nie, selfs al is dit via 'n beleid toegeken. Kyk na die volgende afdeling.
Die vorige afdeling het die standaard verbeterde verifikasievloei gevolg. Hierdie vloei stel 'n beperkende sessiebeleid in op die IAM rol sessie wat gegenereer is. Hierdie beleid sal slegs toelaat dat die sessie die dienste van hierdie lys gebruik (selfs al het die rol toegang tot ander dienste).
Daar is egter 'n manier om dit te omseil, as die Identiteitspoel "Basiese (Klassieke) Vloei" geaktiveer het, sal die gebruiker in staat wees om 'n sessie te verkry met behulp van daardie vloei wat nie daardie beperkende sessiebeleid sal hê nie.
As jy hierdie fout ontvang, is dit omdat die basiese vloei nie geaktiveer is (standaard)
An error occurred (InvalidParameterException) when calling the GetOpenIdToken operation: Basic (classic) flow is not enabled, please use enhanced flow.
As jy 'n stel IAM-akkrediteerings het, moet jy watter toegang jy het nagaan en probeer om privileges te verhoog.
Onthou dat geverifieerde gebruikers waarskynlik verskillende toestemmings toegeken sal word, so as jy kan aanmeld binne die app, probeer dit en kry die nuwe akkrediteerings.
Daar kan ook rolle beskikbaar wees vir geverifieerde gebruikers wat toegang tot die Identiteitspoel het.
Hiervoor mag jy toegang tot die identiteitsverskaffer nodig hê. As dit 'n Cognito-gebruikerspoel is, kan jy dalk die standaardgedrag misbruik en self 'n nuwe gebruiker skep.
Die IAM Cognito geverifieerde rol wat geskep is, word standaard Cognito_<Identiteitspoel naam>Auth_Role
genoem
In elk geval, die volgende voorbeeld verwag dat jy reeds binne 'n Cognito-gebruikerspoel aangemeld het wat gebruik word om toegang tot die Identiteitspoel te verkry (moet nie vergeet dat ander tipes identiteitsverskaffers ook gekonfigureer kan word nie).
Dit is moontlik om verskillende IAM rolle te konfigureer afhangende van die identiteitsverskaffer waarteen die gebruiker aangemeld is of selfs net afhangende van die gebruiker (met behulp van aansprake). Daarom, as jy toegang het tot verskillende gebruikers deur dieselfde of verskillende verskaffers, kan dit die moeite werd wees om aan te meld en toegang te verkry tot die IAM rolle van al hulle.
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)