AWS - Cognito Privesc
Cognito
Za više informacija o Cognito-u proverite:
AWS - Cognito EnumPrikupljanje akreditacija iz Identity Pool-a
Pošto Cognito može dodeliti IAM role akreditacije kako autentifikovanim tako i neautentifikovanim korisnicima, ako pronađete Identity Pool ID aplikacije (trebalo bi da je hardkodiran u njoj) možete dobiti nove akreditacije i time privesc (unutar AWS naloga gde verovatno prethodno niste imali nikakve akreditacije).
Za više informacija proverite ovu stranicu.
Potencijalni uticaj: Direktan privesc na ulogu usluga koja je pridružena neautentifikovanim korisnicima (i verovatno onoj koja je pridružena autentifikovanim korisnicima).
cognito-identity:SetIdentityPoolRoles
, iam:PassRole
cognito-identity:SetIdentityPoolRoles
, iam:PassRole
Sa ovlašćenjem možete dodeliti bilo koju cognito ulogu autentifikovanim/neautentifikovanim korisnicima cognito aplikacije.
Ako aplikacija Cognito nema omogućene neautentifikovane korisnike, možda će vam biti potrebna i dozvola cognito-identity:UpdateIdentityPool
da je omogućite.
Potencijalni uticaj: Direktno povećanje privilegija za bilo koju Cognito ulogu.
cognito-identity:update-identity-pool
cognito-identity:update-identity-pool
Napadač sa ovom dozvolom može, na primer, postaviti Cognito korisnički bazen pod svojom kontrolom ili bilo koji drugi pružalac identiteta gde se može prijaviti kao način pristupa ovom Cognito bazenu identiteta. Zatim, samo prijavljivanje na taj pružalac korisnika će mu omogućiti pristup konfigurisanoj autentifikovanoj ulozi u bazenu identiteta.
Takođe je moguće zloupotrebiti ovu dozvolu da bi se omogućila osnovna autentifikacija:
Potencijalni uticaj: Kompromitacija konfigurisane autentifikovane IAM uloge unutar bazena identiteta.
cognito-idp:AdminAddUserToGroup
cognito-idp:AdminAddUserToGroup
Ova dozvola omogućava dodavanje Cognito korisnika u Cognito grupu, stoga napadač može zloupotrebiti ovu dozvolu da doda korisnika pod svojom kontrolom u druge grupe sa boljim privilegijama ili različitim IAM ulogama:
Potencijalni uticaj: Povećanje privilegija na druge Cognito grupe i IAM uloge koje su povezane sa grupama baziranim na korisničkom bazenu.
(cognito-idp:CreateGroup
| cognito-idp:UpdateGroup
), iam:PassRole
cognito-idp:CreateGroup
| cognito-idp:UpdateGroup
), iam:PassRole
Napadač sa ovim dozvolama bi mogao kreirati/ažurirati grupe sa svakom IAM ulogom koja može biti korišćena od strane kompromitovanog Cognito Identity Provider-a i učiniti kompromitovanog korisnika delom grupe, pristupajući svim tim ulogama:
Potencijalni uticaj: Povećanje privilegija na druge Cognito IAM uloge.
cognito-idp:AdminConfirmSignUp
cognito-idp:AdminConfirmSignUp
Ova dozvola omogućava potvrdu registracije. Prema podrazumevanim podešavanjima, svako može se prijaviti na Cognito aplikacije, ako se to ostavi, korisnik može kreirati nalog sa bilo kojim podacima i potvrditi ga pomoću ove dozvole.
Potencijalni uticaj: Indirektno povećanje privilegija za IAM ulogu baziranu na identitetu za autentifikovane korisnike ukoliko možete registrovati novog korisnika. Indirektno povećanje privilegija za druge funkcionalnosti aplikacije omogućavajući potvrdu bilo kog naloga.
cognito-idp:AdminCreateUser
cognito-idp:AdminCreateUser
Ova dozvola bi omogućila napadaču da kreira novog korisnika unutar bazena korisnika. Novi korisnik je kreiran kao omogućen, ali će morati da promeni svoju lozinku.
Potencijalni uticaj: Direktno povećanje privilegija za IAM ulogu baziranu na bazenu identiteta za autentifikovane korisnike. Indirektno povećanje privilegija za druge funkcionalnosti aplikacije omogućavajući kreiranje bilo kog korisnika.
cognito-idp:AdminEnableUser
cognito-idp:AdminEnableUser
Ova dozvola može pomoći u vrlo specifičnom scenariju gde napadač pronađe akreditive onemogućenog korisnika i treba da ga ponovo omogući.
Potencijalni uticaj: Indirektno povećanje privilegija na IAM ulogu baziranu na identitetnom bazenu za autentifikovane korisnike i dozvole korisnika ako napadač ima pristupnim podacima za onemogućenog korisnika.
cognito-idp:AdminInitiateAuth
, cognito-idp:AdminRespondToAuthChallenge
cognito-idp:AdminInitiateAuth
, cognito-idp:AdminRespondToAuthChallenge
Ova dozvola omogućava prijavljivanje putem metode ADMIN_USER_PASSWORD_AUTH. Za više informacija pratite link.
cognito-idp:AdminSetUserPassword
cognito-idp:AdminSetUserPassword
Ova dozvola bi omogućila napadaču da promeni lozinku bilo kog korisnika, čime bi mu omogućio da se predstavlja kao taj korisnik (ako korisnik nema omogućenu MFA).
Potencijalni uticaj: Direktno povećanje privilegija ka potencijalno bilo kom korisniku, što omogućava pristup svim grupama kojima korisnik pripada i pristup IAM ulozi autentifikovane uloge Identity Pool-a.
cognito-idp:AdminSetUserSettings
| cognito-idp:SetUserMFAPreference
| cognito-idp:SetUserPoolMfaConfig
| cognito-idp:UpdateUserPool
cognito-idp:AdminSetUserSettings
| cognito-idp:SetUserMFAPreference
| cognito-idp:SetUserPoolMfaConfig
| cognito-idp:UpdateUserPool
AdminSetUserSettings: Napadač bi potencijalno mogao iskoristiti ovu dozvolu da postavi mobilni telefon pod svojom kontrolom kao SMS MFA za korisnika.
SetUserMFAPreference: Slično kao i prethodna dozvola, ova dozvola se može koristiti za postavljanje MFA postavki korisnika kako bi se zaobišla MFA zaštita.
SetUserPoolMfaConfig: Slično kao i prethodna dozvola, ova dozvola se može koristiti za postavljanje MFA postavki korisničkog bazena kako bi se zaobišla MFA zaštita.
UpdateUserPool: Takođe je moguće ažurirati korisnički bazen da bi se promenila MFA politika. Proverite cli ovde.
Potencijalni uticaj: Indirektno povećanje privilegija koje može uticati na bilo kog korisnika čije su kredencijale napadač poznavao, što omogućava zaobilaženje MFA zaštite.
cognito-idp:AdminUpdateUserAttributes
cognito-idp:AdminUpdateUserAttributes
Napadač sa ovlašćenjem može promeniti e-mail ili broj telefona ili bilo koji drugi atribut korisnika pod svojom kontrolom kako bi pokušao da dobije više privilegija u podložnoj aplikaciji. Ovo omogućava promenu e-maila ili broja telefona i postavljanje kao verifikovanih.
Potencijalni uticaj: Potencijalno indirektno povećanje privilegija u podložnoj aplikaciji korišćenjem Cognito User Pool-a koji dodeljuje privilegije na osnovu atributa korisnika.
cognito-idp:CreateUserPoolClient
| cognito-idp:UpdateUserPoolClient
cognito-idp:CreateUserPoolClient
| cognito-idp:UpdateUserPoolClient
Napadač sa ovlašćenjem može kreirati novog User Pool Client-a sa manje restrikcija u odnosu na već postojeće klijente bazena. Na primer, novi klijent može dozvoljavati bilo koju vrstu metode za autentifikaciju, ne mora imati tajni ključ, može imati onemogućeno opozivanje tokena, dozvoljavati da tokeni budu važeći duže vreme...
Isto se može uraditi i ako se izmeni postojeći klijent.
U komandnoj liniji (ili update) možete videti sve opcije, proverite!
Potencijalni uticaj: Potencijalno indirektno povećanje privilegija na korisnika autorizovanog od strane bazena identiteta koji koristi bazen korisnika, stvaranjem novog klijenta koji opušta sigurnosne mere i omogućava napadaču da se prijavi sa korisnikom kojeg je uspeo da kreira.
cognito-idp:CreateUserImportJob
| cognito-idp:StartUserImportJob
cognito-idp:CreateUserImportJob
| cognito-idp:StartUserImportJob
Napadač bi mogao iskoristiti ovu dozvolu da kreira korisnike tako što će otpremiti CSV sa novim korisnicima.
(U slučaju kada kreirate novi uvoz posla, možda će vam biti potrebna dozvola iam passrole, nisam još testirao).
Potencijalni uticaj: Direktno povećanje privilegija na IAM ulogu bazena identiteta za autentifikovane korisnike. Indirektno povećanje privilegija na druge funkcionalnosti aplikacije, omogućavajući kreiranje bilo kog korisnika.
cognito-idp:CreateIdentityProvider
| cognito-idp:UpdateIdentityProvider
cognito-idp:CreateIdentityProvider
| cognito-idp:UpdateIdentityProvider
Napadač bi mogao da kreira novog pružaoca identiteta kako bi se zatim mogao prijaviti putem tog pružaoca.
Potencijalni uticaj: Direktno povećanje privilegija za IAM ulogu baziranu na bazenu identiteta za autentifikovane korisnike. Indirektno povećanje privilegija za druge funkcionalnosti aplikacije, omogućavajući kreiranje bilo kog korisnika.
Analiza cognito-sync:*
Ovo je veoma česta dozvola koja je podrazumevana u ulogama Cognito bazena identiteta. Iako korišćenje zvezdice u dozvolama uvek izgleda loše (posebno kada dolazi od AWS-a), date dozvole nisu preterano korisne sa perspektive napadača.
Ova dozvola omogućava čitanje informacija o korisnicima iz bazena identiteta i identifikacionim ID-jevima unutar bazena identiteta (što nije osetljiva informacija). Identifikacioni ID-jevi mogu imati Datasets dodeljene njima, što su informacije o sesijama (AWS ih definiše kao sačuvanu igru). Moguće je da ove informacije sadrže neku vrstu osetljivih informacija (ali verovatnoća je prilično niska). Na stranici za enumeraciju možete pronaći kako pristupiti ovim informacijama.
Napadač takođe može koristiti ove dozvole da se upiše u Cognito strim koji objavljuje promene na ovim datasetima ili lambda funkciju koja se pokreće na Cognito događajima. Nisam video da se ovo koristi, i ne bih očekivao osetljive informacije ovde, ali nije nemoguće.
Automatski alati
Pacu, AWS okvir za eksploataciju, sada uključuje module "cognito__enum" i "cognito__attack" koji automatizuju enumeraciju svih Cognito resursa u nalogu, označavaju slabu konfiguraciju, korisničke atribute koji se koriste za kontrolu pristupa, itd., i takođe automatizuju kreiranje korisnika (uključujući podršku za MFA) i povećanje privilegija na osnovu izmenjivih prilagođenih atributa, upotrebljivih identifikacionih podataka bazena identiteta, uloga koje se mogu pretpostaviti u ID tokenima, itd.
Za opis funkcija modula pogledajte deo 2 blog posta. Za uputstva za instalaciju pogledajte glavnu Pacu stranicu.
Upotreba
Primer upotrebe cognito__attack za pokušaj kreiranja korisnika i svih vektora povećanja privilegija za određeni bazen identiteta i klijenta bazena korisnika:
Primer upotrebe cognito__enum za prikupljanje svih bazena korisnika, klijenata bazena korisnika, bazena identiteta, korisnika, itd. vidljivih u trenutnom AWS nalogu:
Ovom komandom možete prikupiti sve informacije o bazenima korisnika, klijentima bazena korisnika, bazenima identiteta, korisnicima, itd. koji su vidljivi u trenutnom AWS nalogu.
Cognito Scanner je CLI alatka napisana u Pythonu koja implementira različite napade na Cognito, uključujući i eskalaciju privilegija.
Instalacija
Upotreba
Za više informacija posetite https://github.com/padok-team/cognito-scanner
Last updated