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)
Identitetski bazeni igraju ključnu ulogu omogućavajući vašim korisnicima da dobiju privremene akreditive. Ovi akreditivi su neophodni za pristup raznim AWS uslugama, uključujući, ali ne ograničavajući se na Amazon S3 i DynamoDB. Značajna karakteristika identitetskih bazena je njihova podrška za anonimne gostujuće korisnike i niz provajdera identiteta za autentifikaciju korisnika. Podržani provajderi identiteta uključuju:
Amazon Cognito korisnički bazeni
Opcije prijave putem društvenih mreža kao što su Facebook, Google, Prijava putem Amazona i Prijava putem Apple-a
Provajderi usklađeni sa OpenID Connect (OIDC)
SAML (Security Assertion Markup Language) provajderi identiteta
Identiteti koje autentifikuju programeri
Da biste generisali sesije Identity Pool-a, prvo morate generisati Identity ID. Ovaj Identity ID je identifikacija sesije tog korisnika. Ove identifikacije mogu imati do 20 skupova podataka koji mogu čuvati do 1MB parova ključ-vrednost.
Ovo je korisno za čuvanje informacija o korisniku (koji će uvek koristiti isti Identity ID).
Pored toga, usluga cognito-sync je usluga koja omogućava upravljanje i sinhronizaciju ovih informacija (u skupovima podataka, slanje informacija u tokovima i SNS porukama...).
Pacu, AWS okvir za eksploataciju, sada uključuje module "cognito__enum" i "cognito__attack" koji automatizuju enumeraciju svih Cognito resursa u nalogu i označavaju slabe konfiguracije, atribute korisnika korišćene za kontrolu pristupa itd., kao i automatizuju kreiranje korisnika (uključujući podršku za MFA) i eskalaciju privilegija na osnovu modifikabilnih prilagođenih atributa, upotrebljivih kredencijala identity pool-a, preuzimljivih uloga u id tokenima itd.
Za opis funkcija modula pogledajte deo 2 blog posta. Za uputstva za instalaciju pogledajte glavnu stranicu Pacu.
Primer korišćenja cognito__attack za pokušaj kreiranja korisnika i svih privesc vektora protiv datog identity pool-a i korisničkog pool klijenta:
Primer korišćenja cognito__enum za prikupljanje svih korisničkih bazena, klijenata korisničkih bazena, identitetskih bazena, korisnika itd. vidljivih u trenutnom AWS nalogu:
Cognito Scanner je CLI alat u python-u koji implementira različite napade na Cognito, uključujući neželjeno kreiranje naloga i eskalaciju identitetskog bazena.
Za više informacija proverite https://github.com/padok-team/cognito-scanner
Jedina stvar koju napadač treba da zna da bi dobio AWS kredencijale u Cognito aplikaciji kao neautentifikovani korisnik je ID identitetskog bazena, i ovaj ID mora biti hardkodiran u web/mobilnoj aplikaciji da bi se koristio. ID izgleda ovako: eu-west-1:098e5341-8364-038d-16de-1865e435da3b
(nije moguće probiti ga brute force-om).
IAM Cognito neautentifikovana uloga kreirana putem se zove po defaultu Cognito_<Ime identitetskog bazena>Unauth_Role
Ako pronađete ID identitetskog bazena hardkodiran i omogućava neautentifikovanim korisnicima, možete dobiti AWS kredencijale sa:
Ili možete koristiti sledeće aws cli komande:
Napomena da po defaultu neautentifikovani cognito korisnik NE MOŽE imati nikakva prava, čak i ako su dodeljena putem politike. Proverite sledeću sekciju.
Prethodna sekcija je pratila podrazumevani poboljšani tok autentifikacije. Ovaj tok postavlja restriktivnu politiku sesije za IAM ulogu koja je generisana. Ova politika će omogućiti sesiji da koristi usluge sa ove liste (čak i ako je uloga imala pristup drugim uslugama).
Međutim, postoji način da se to zaobiđe, ako je Identitetski bazen omogućio "Osnovni (Klasični) Tok", korisnik će moći da dobije sesiju koristeći taj tok koji neće imati tu restriktivnu politiku sesije.
Ako dobijete ovu grešku, to je zato što osnovni tok nije omogućen (podrazumevano)
Došlo je do greške (InvalidParameterException) prilikom pozivanja operacije GetOpenIdToken: Osnovni (klasični) tok nije omogućen, molimo koristite unapređeni tok.
Imajući set IAM kredencijala, trebali biste proveriti koje pristupe imate i pokušati da povećate privilegije.
Zapamtite da će autentifikovani korisnici verovatno imati različite dozvole, pa ako možete da se prijavite unutar aplikacije, pokušajte to i dobijte nove kredencijale.
Takođe mogu postojati uloge dostupne za autentifikovane korisnike koji pristupaju Identity Pool.
Za ovo možda ćete morati da imate pristup provajderu identiteta. Ako je to Cognito User Pool, možda možete da iskoristite podrazumevano ponašanje i napravite novog korisnika sami.
IAM Cognito autentifikovana uloga kreirana putem se podrazumevano naziva Cognito_<Ime Identity Pool>Auth_Role
U svakom slučaju, sledeći primer očekuje da ste se već prijavili unutar Cognito User Pool koji se koristi za pristup Identity Pool-u (ne zaboravite da se drugi tipovi provajdera identiteta takođe mogu konfigurisati).
Moguće je konfigurisati različite IAM uloge u zavisnosti od provajdera identiteta preko kojeg se korisnik prijavljuje ili čak samo u zavisnosti od korisnika (koristeći tvrdnje). Stoga, ako imate pristup različitim korisnicima putem istog ili različitih provajdera, možda bi bilo vredno prijaviti se i pristupiti IAM ulogama svih njih.
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)