AWS - Cognito Privesc
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)
Za više informacija o Cognitu proverite:
Pošto Cognito može dodeliti IAM role credentials kako autentifikovanim tako i neautentifikovanim korisnicima, ako locirate Identity Pool ID aplikacije (trebalo bi da bude hardkodiran u njoj) možete dobiti nove kredencijale i tako privesc (unutar AWS naloga gde verovatno niste imali nikakve kredencijale prethodno).
Za više informacija proverite ovu stranicu.
Potencijalni uticaj: Direktan privesc na usluge ulogu vezanu za neautentifikovane korisnike (i verovatno na onu vezanu za autentifikovane korisnike).
cognito-identity:SetIdentityPoolRoles
, iam:PassRole
Sa ovom dozvolom možete dodeliti bilo koju cognito ulogu autentifikovanim/neautentifikovanim korisnicima cognito aplikacije.
Ako cognito aplikacija nema omogućene neautentifikovane korisnike, možda će vam biti potrebna i dozvola cognito-identity:UpdateIdentityPool
da je omogućite.
Potencijalni uticaj: Direktno privesc na bilo koju cognito ulogu.
cognito-identity:update-identity-pool
Napadač sa ovom dozvolom mogao bi da postavi, na primer, Cognito User Pool pod njegovom kontrolom ili bilo koji drugi provajder identiteta gde može da se prijavi kao način za pristup ovoj Cognito Identity Pool. Tada, samo prijavljivanje na tom provajderu korisnika će omogućiti mu pristup konfigurisanoj autentifikovanoj ulozi u Identity Pool.
Takođe je moguće zloupotrebiti ovu dozvolu da se omogući osnovna autentifikacija:
Potencijalni uticaj: Kompromitovanje konfigurisane autentifikovane IAM uloge unutar identitetskog bazena.
cognito-idp:AdminAddUserToGroup
Ova dozvola omogućava dodavanje Cognito korisnika u Cognito grupu, stoga bi napadač mogao zloupotrebiti ovu dozvolu da doda korisnika pod njegovom kontrolom u druge grupe sa boljim privilegijama ili različitim IAM ulogama:
Potencijalni Uticaj: Privesc na druge Cognito grupe i IAM uloge povezane sa User Pool Grupama.
cognito-idp:CreateGroup
| cognito-idp:UpdateGroup
), iam:PassRole
Napadač sa ovim dozvolama mogao bi da kreira/aktualizuje grupe sa svakom IAM ulogom koja može biti korišćena od strane kompromitovanog Cognito Identity Providera i da učini kompromitovanog korisnika delom grupe, pristupajući svim tim ulogama:
Potencijalni uticaj: Privesc na druge Cognito IAM uloge.
cognito-idp:AdminConfirmSignUp
Ova dozvola omogućava verifikaciju registracije. Po defaultu, svako može da se prijavi na Cognito aplikacije; ako to ostane, korisnik bi mogao da kreira nalog sa bilo kojim podacima i verifikuje ga ovom dozvolom.
Potencijalni uticaj: Indirektna privesc na IAM ulogu identiteta za autentifikovane korisnike ako možete registrovati novog korisnika. Indirektna privesc na druge funkcionalnosti aplikacije omogućavajući potvrdu bilo kog naloga.
cognito-idp:AdminCreateUser
Ova dozvola bi omogućila napadaču da kreira novog korisnika unutar korisničkog bazena. Novi korisnik se kreira kao omogućen, ali će morati da promeni svoju lozinku.
Potencijalni uticaj: Direktni privesc na IAM ulogu identiteta za autentifikovane korisnike. Indirektni privesc na druge funkcionalnosti aplikacije omogućavajući kreiranje bilo kog korisnika.
cognito-idp:AdminEnableUser
Ova dozvola može pomoći u veoma specifičnom scenariju gde je napadač pronašao akreditive onemogućenog korisnika i treba da ga ponovo omogući.
Potencijalni uticaj: Indirektno privesc na IAM ulogu identiteta za autentifikovane korisnike i dozvole korisnika ako je napadač imao akreditive za onemogućenog korisnika.
cognito-idp:AdminInitiateAuth
, cognito-idp:AdminRespondToAuthChallenge
Ova dozvola omogućava prijavu putem metode ADMIN_USER_PASSWORD_AUTH. Za više informacija pratite link.
cognito-idp:AdminSetUserPassword
Ova dozvola bi omogućila napadaču da promeni lozinku bilo kog korisnika, omogućavajući mu da se lažno predstavi kao bilo koji korisnik (koji nema omogućenu MFA).
Potencijalni uticaj: Direktno privesc za potencijalno bilo kog korisnika, tako da pristup svim grupama čiji je korisnik član i pristup IAM ulozi autentifikovanog Identity Pool-a.
cognito-idp:AdminSetUserSettings
| cognito-idp:SetUserMFAPreference
| cognito-idp:SetUserPoolMfaConfig
| cognito-idp:UpdateUserPool
AdminSetUserSettings: Napadač bi potencijalno mogao da zloupotrebi ovu dozvolu da postavi mobilni telefon pod njegovom kontrolom kao SMS MFA korisnika.
SetUserMFAPreference: Slično prethodnom, ova dozvola se može koristiti za postavljanje MFA preferencija korisnika kako bi se zaobišla MFA zaštita.
SetUserPoolMfaConfig: Slično prethodnom, ova dozvola se može koristiti za postavljanje MFA preferencija korisničkog bazena kako bi se zaobišla MFA zaštita.
UpdateUserPool: Takođe je moguće ažurirati korisnički bazen kako bi se promenila MFA politika. Proverite cli ovde.
Potential Impact: Indirektno privesc potencijalno bilo kojem korisniku čije napredne podatke napadač poznaje, ovo bi moglo omogućiti zaobilaženje MFA zaštite.
cognito-idp:AdminUpdateUserAttributes
Napadač sa ovom dozvolom mogao bi promeniti email ili broj telefona ili bilo koju drugu atribut korisnika pod njegovom kontrolom kako bi pokušao da dobije više privilegija u osnovnoj aplikaciji. Ovo omogućava promenu emaila ili broja telefona i postavljanje kao verifikovanog.
Potencijalni uticaj: Potencijalni indirektni privesc u osnovnoj aplikaciji koristeći Cognito User Pool koji daje privilegije na osnovu atributa korisnika.
cognito-idp:CreateUserPoolClient
| cognito-idp:UpdateUserPoolClient
Napadač sa ovom dozvolom mogao bi da kreira novog User Pool Client-a koji je manje restriktivan od već postojećih klijenata. Na primer, novi klijent bi mogao da dozvoli bilo koju vrstu metode za autentifikaciju, da nema nikakvu tajnu, da ima onemogućenu revokaciju tokena, da dozvoli tokenima da budu validni duži period...
Isto se može uraditi ako se umesto kreiranja novog klijenta, izmenjuje postojeći.
U komandnoj liniji (ili ažuriranoj) možete videti sve opcije, proverite to!
Potencijalni uticaj: Potencijalni indirektni privesc za autorizovanog korisnika Identity Pool-a koji koristi User Pool tako što će kreirati novog klijenta koji opušta bezbednosne mere i omogućava napadaču da se prijavi sa korisnikom kojeg je mogao da kreira.
cognito-idp:CreateUserImportJob
| cognito-idp:StartUserImportJob
Napadač bi mogao da zloupotrebi ovu dozvolu da kreira korisnike učitavanjem csv datoteke sa novim korisnicima.
(U slučaju kada kreirate novi posao za uvoz, možda će vam biti potrebna dozvola iam passrole, još nisam testirao).
Potencijalni uticaj: Direktan privesc na IAM ulogu identiteta za autentifikovane korisnike. Indirektan privesc na druge funkcionalnosti aplikacije omogućavajući kreiranje bilo kog korisnika.
cognito-idp:CreateIdentityProvider
| cognito-idp:UpdateIdentityProvider
Napadač bi mogao da kreira novog provajdera identiteta kako bi mogao da prijavi se preko ovog provajdera.
Potencijalni Uticaj: Direktno privesc na IAM ulogu identiteta za autentifikovane korisnike. Indirektno privesc na druge funkcionalnosti aplikacije omogućavajući kreiranje bilo kog korisnika.
Ovo je veoma uobičajena dozvola po defaultu u ulogama Cognito Identity Pools. Čak i ako wildcard u dozvolama uvek izgleda loše (posebno dolazeći iz AWS-a), date dozvole nisu super korisne iz perspektive napadača.
Ova dozvola omogućava čitanje informacija o korisnicima iz Identity Pools i Identity IDs unutar Identity Pools (što nije osetljiva informacija). Identity IDs mogu imati Datasets dodeljene njima, koje su informacije o sesijama (AWS to definiše kao sačuvanu igru). Moguće je da ovo sadrži neku vrstu osetljivih informacija (ali je verovatnoća prilično niska). Možete pronaći na stranici za enumeraciju kako da pristupite ovim informacijama.
Napadač bi takođe mogao koristiti ove dozvole da prijavi sebe na Cognito stream koji objavljuje promene na ovim datasetima ili lambda koja se aktivira na cognito događaje. Nisam video da se ovo koristi, i ne bih očekivao osetljive informacije ovde, ali nije nemoguće.
Pacu, AWS framework 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., i takođe automatizuju kreiranje korisnika (uključujući podršku za MFA) i eskalaciju privilegija na osnovu modifikovanih prilagođenih atributa, upotrebljivih kredencijala identiteta, preuzimljivih uloga u id tokenima, itd.
Za opis funkcija modula pogledajte deo 2 blog posta. Za uputstva za instalaciju pogledajte glavnu Pacu stranicu.
Primer korišćenja cognito__attack za pokušaj kreiranja korisnika i svih privesc vektora protiv datog identiteta i klijenta korisničkog bazena:
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 pythonu koji implementira različite napade na Cognito, uključujući eskalaciju privilegija.
Za više informacija proverite https://github.com/padok-team/cognito-scanner
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)