AWS - Cognito Privesc
Cognito
Vir meer inligting oor Cognito, kyk:
AWS - Cognito EnumVersameling van geloofsbriewe van Identity Pool
Aangesien Cognito IAM-rol-geloofsbriewe kan toeken aan beide geverifieerde en ongeverifieerde gebruikers, as jy die Identity Pool ID van 'n toepassing vind (dit moet hardgekodderd wees), kan jy nuwe geloofsbriewe verkry en dus privesc (binne 'n AWS-rekening waar jy waarskynlik nie voorheen enige geloofsbriewe gehad het nie).
Vir meer inligting, kyk na hierdie bladsy.
Potensiële Impak: Direkte privesc na die dienste-rol wat aan ongeverifieerde gebruikers gekoppel is (en waarskynlik ook aan die een wat aan geverifieerde gebruikers gekoppel is).
cognito-identity:SetIdentityPoolRoles
, iam:PassRole
cognito-identity:SetIdentityPoolRoles
, iam:PassRole
Met hierdie toestemming kan jy enige cognito-rol toeken aan die geverifieerde/ongeverifieerde gebruikers van die cognito-toepassing.
As die cognito-app nie geaktiveerde ongeverifieerde gebruikers het nie, mag jy ook die toestemming cognito-identity:UpdateIdentityPool
benodig om dit te aktiveer.
Potensiële Impak: Direkte voorregverhoging na enige cognito-rol.
cognito-identity:update-identity-pool
cognito-identity:update-identity-pool
'n Aanvaller met hierdie toestemming kan byvoorbeeld 'n Cognito-gebruikerspoel onder sy beheer instel of enige ander identiteitsverskaffer waar hy as 'n manier om toegang tot hierdie Cognito-identiteitspoel te verkry kan aanmeld. Dan sal net aanmelding by daardie gebruikersverskaffer hom in staat stel om toegang te verkry tot die gekonfigureerde geauthentiseerde rol in die Identiteitspoel.
Dit is ook moontlik om hierdie toestemming te misbruik om basiese outentifikasie toe te laat:
Potensiële Impak: Kompromitteer die geconfigureerde geauthentiseerde IAM-rol binne die identiteitspoel.
cognito-idp:AdminAddUserToGroup
cognito-idp:AdminAddUserToGroup
Hierdie toestemming maak dit moontlik om 'n Cognito-gebruiker by 'n Cognito-groep te voeg. 'n Aanvaller kan hierdie toestemming misbruik om 'n gebruiker onder sy beheer by ander groepe met beter voorregte of verskillende IAM-rolle te voeg:
Potensiële Impak: Privesc na ander Cognito-groepe en IAM-rolle wat aan Gebruikerspoelgroepe gekoppel is.
(cognito-idp:CreateGroup
| cognito-idp:UpdateGroup
), iam:PassRole
cognito-idp:CreateGroup
| cognito-idp:UpdateGroup
), iam:PassRole
'n Aanvaller met hierdie toestemmings kan groepe skep/opdateer met elke IAM-rol wat deur 'n gekompromitteerde Cognito-identiteitsverskaffer gebruik kan word en 'n gekompromitteerde gebruiker deel van die groep maak, wat toegang gee tot al daardie rolle:
Potensiële Impak: Privesc na ander Cognito IAM-rolle.
cognito-idp:AdminConfirmSignUp
cognito-idp:AdminConfirmSignUp
Hierdie toestemming maak dit moontlik om 'n aanmelding te verifieer. Standaard kan enige persoon aanmeld by Cognito-toepassings, as dit so gelaat word, kan 'n gebruiker 'n rekening skep met enige data en dit verifieer met hierdie toestemming.
Potensiële Impak: Indirekte bevoorregte toegang tot die IAM-rol vir geïdentifiseerde gebruikers in die identiteitspoel as jy 'n nuwe gebruiker kan registreer. Indirekte bevoorregte toegang tot ander app-funksies deur enige rekening te bevestig.
cognito-idp:AdminCreateUser
cognito-idp:AdminCreateUser
Hierdie toestemming sal 'n aanvaller in staat stel om 'n nuwe gebruiker binne die gebruikerspoel te skep. Die nuwe gebruiker word as geaktiveer geskep, maar sal sy wagwoord moet verander.
Potensiële Impak: Direkte bevoorregte eskalasie na die identiteitspoel IAM rol vir geauthentiseerde gebruikers. Indirekte bevoorregte eskalasie na ander app-funksies deur die vermoë om enige gebruiker te skep.
cognito-idp:AdminEnableUser
cognito-idp:AdminEnableUser
Hierdie toestemmings kan help in 'n baie seldsame geval waar 'n aanvaller die geloofsbriewe van 'n uitgeskakelde gebruiker gevind het en dit weer moet aktiveer.
Potensiële Impak: Indirekte bevoorregte toegang tot die identiteitspoel IAM-rol vir geauthentiseerde gebruikers en toestemmings van die gebruiker as die aanvaller legitimasie vir 'n gedeaktiveerde gebruiker gehad het.
cognito-idp:AdminInitiateAuth
, cognito-idp:AdminRespondToAuthChallenge
cognito-idp:AdminInitiateAuth
, cognito-idp:AdminRespondToAuthChallenge
Hierdie toestemming maak dit moontlik om in te teken met die metode ADMIN_USER_PASSWORD_AUTH. Vir meer inligting volg die skakel.
cognito-idp:AdminSetUserPassword
cognito-idp:AdminSetUserPassword
Hierdie toestemming sal 'n aanvaller in staat stel om die wagwoord van enige gebruiker te verander, sodat hy enige gebruiker kan voorstel (wat nie MFA geaktiveer het nie).
Potensiële Impak: Direkte voorregteverhoging na moontlik enige gebruiker, dus toegang tot al die groepe waarvan elke gebruiker lid is en toegang tot die geïdentifiseerde poel geoutentifiseerde IAM-rol.
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: 'n Aanvaller kan hierdie toestemming moontlik misbruik om 'n selfoon onder sy beheer as SMS MFA van 'n gebruiker in te stel.
SetUserMFAPreference: Soortgelyk aan die vorige een kan hierdie toestemming gebruik word om die MFA-voorkeure van 'n gebruiker in te stel om die MFA-beskerming te omseil.
SetUserPoolMfaConfig: Soortgelyk aan die vorige een kan hierdie toestemming gebruik word om die MFA-voorkeure van 'n gebruikerspoel in te stel om die MFA-beskerming te omseil.
UpdateUserPool: Dit is ook moontlik om die gebruikerspoel op te dateer om die MFA-beleid te verander. Kyk hier vir die CLI.
Potensiële Impak: Indirekte bevoorregte toegang tot moontlik enige gebruiker waarvan die aanvaller die geloofsbriewe ken, dit kan die omweg van die MFA-beskerming moontlik maak.
cognito-idp:AdminUpdateUserAttributes
cognito-idp:AdminUpdateUserAttributes
'n Aanvaller met hierdie toestemming kan die e-pos of telefoonnommer of enige ander atribuut van 'n gebruiker onder sy beheer verander om te probeer om meer voorregte in 'n onderliggende toepassing te verkry. Dit maak dit moontlik om 'n e-pos of telefoonnommer te verander en dit as geverifieer te stel.
Potensiële Impak: Potensiële indirekte voorregverhoging in die onderliggende toepassing deur gebruik te maak van Cognito User Pool wat voorregte gee gebaseer op gebruikersatribute.
cognito-idp:CreateUserPoolClient
| cognito-idp:UpdateUserPoolClient
cognito-idp:CreateUserPoolClient
| cognito-idp:UpdateUserPoolClient
'n Aanvaller met hierdie toestemming kan 'n nuwe User Pool Client skep wat minder beperk is as reeds bestaande pool-kliënte. Byvoorbeeld, die nuwe kliënt kan enige soort metode toelaat om te verifieer, geen geheim hê, token-herroeping gedeaktiveer hê, toelaat dat tokens vir 'n langer tydperk geldig is...
Dieselfde kan gedoen word as 'n bestaande kliënt gewysig word.
In die opdraglyn (of die opdateer een) kan jy al die opsies sien, kyk daarna!.
Potensiële Impak: Potensiële indirekte bevoorregte eskalasie na die Identiteit Pool gevolmagtigde gebruiker wat deur die Gebruikerspool gebruik word deur 'n nuwe kliënt te skep wat die sekuriteitsmaatreëls verslap en dit moontlik maak vir 'n aanvaller om in te teken met 'n gebruiker wat hy kon skep.
cognito-idp:CreateUserImportJob
| cognito-idp:StartUserImportJob
cognito-idp:CreateUserImportJob
| cognito-idp:StartUserImportJob
'n Aanvaller kan hierdie toestemming misbruik om gebruikers te skep deur 'n CSV met nuwe gebruikers te oplaai.
(In die geval waar jy 'n nuwe invoerwerk skep, mag jy ook die iam passrole-toestemming nodig hê, ek het dit nog nie getoets nie).
Potensiële Impak: Direkte voorregverhoging na die identiteitspoel IAM-rol vir geïdentifiseerde gebruikers. Indirekte voorregverhoging na ander app-funksies deur enige gebruiker te skep.
cognito-idp:CreateIdentityProvider
| cognito-idp:UpdateIdentityProvider
cognito-idp:CreateIdentityProvider
| cognito-idp:UpdateIdentityProvider
'n Aanvaller kan 'n nuwe identiteitsverskaffer skep om dan deur middel van hierdie verskaffer in te teken.
Potensiële Impak: Direkte bevoorregte toegang tot die IAM-rol vir geïdentifiseerde gebruikers in die identiteitspoel. Indirekte bevoorregte toegang tot ander app-funksies deur die skep van enige gebruiker.
cognito-sync:* Analise
Dit is 'n baie algemene toestemming wat standaard in rolle van Cognito Identiteitspoele voorkom. Selfs al lyk 'n wildkaart in toestemmings altyd sleg (veral as dit van AWS afkomstig is), is die gegee toestemmings nie baie nuttig vanuit 'n aanvaller se perspektief nie.
Hierdie toestemming maak dit moontlik om gebruikersinligting van Identiteitspoele en Identiteits-ID's binne Identiteitspoele te lees (wat nie sensitiewe inligting is nie). Identiteits-ID's kan Datasets toegewys kry, wat inligting oor die sessies is (AWS definieer dit as 'n bewaarde spel). Dit is moontlik dat dit enige vorm van sensitiewe inligting kan bevat (maar die waarskynlikheid is baie laag). Jy kan op die opsomming bladsy vind hoe om toegang tot hierdie inligting te verkry.
'n Aanvaller kan ook hierdie toestemmings gebruik om homself in te skryf vir 'n Cognito-stroom wat veranderinge publiseer op hierdie datasets of 'n lambda wat geaktiveer word deur cognito-gebeure. Ek het nog nie gesien dat dit gebruik word nie, en ek sou nie verwag dat sensitiewe inligting hier sou wees nie, maar dit is nie onmoontlik nie.
Outomatiese Gereedskap
Pacu, die AWS-uitbuitingsraamwerk, sluit nou die "cognito__enum" en "cognito__attack" modules in wat outomatiese opsomming van alle Cognito-bates in 'n rekening en swak konfigurasies, gebruikerskenmerke wat vir toegangsbeheer gebruik word, ens., identifiseer, en ook outomatiese gebruikerskeuring (insluitend MFA-ondersteuning) en bevoorregte toegang gebaseer op wysigbare aanpassingskenmerke, bruikbare identiteitspoel-legitimasie, aanneembare rolle in id-tekens, ens., outomatiseer.
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 te probeer en alle bevoorregte toegang vektore teen 'n gegewe identiteitspoel en gebruikerspoelklient uit te voer:
Voorbeeld cognito__enum gebruik om alle gebruikerspools, gebruikerspoolclients, identiteitspools, gebruikers, ens. te verzamelen die zichtbaar zijn in die huidige AWS-rekening:
Hierdie opdrag 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, insluitende 'n privesc-escalasie.
Installasie
Gebruik
Vir meer inligting, besoek https://github.com/padok-team/cognito-scanner
Last updated