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)
Kwa maelezo zaidi kuhusu Cognito angalia:
Kama Cognito inaweza kutoa IAM role credentials kwa watumiaji walioidhinishwa na wasioidhinishwa, ikiwa utapata Identity Pool ID ya programu (inapaswa kuwa imeandikwa ndani yake) unaweza kupata akreditif mpya na hivyo privesc (ndani ya akaunti ya AWS ambapo huenda hukuwahi kuwa na akreditif yoyote hapo awali).
Kwa maelezo zaidi angalia ukurasa huu.
Athari Zinazoweza Kutokea: Privesc moja kwa moja kwa huduma ya jukumu iliyoambatanishwa na watumiaji wasioidhinishwa (na huenda kwa ile iliyoambatanishwa na watumiaji walioidhinishwa).
cognito-identity:SetIdentityPoolRoles
, iam:PassRole
Kwa ruhusa hii unaweza kutoa jukumu lolote la cognito kwa watumiaji walioidhinishwa/wasioidhinishwa wa programu ya cognito.
Ikiwa programu ya cognito haijawa na watumiaji wasio na uthibitisho huenda ukahitaji pia ruhusa cognito-identity:UpdateIdentityPool
ili kuweza kuifanya.
Athari Zinazoweza Kutokea: Privesc ya moja kwa moja kwa jukumu lolote la cognito.
cognito-identity:update-identity-pool
Mshambuliaji mwenye ruhusa hii anaweza kuweka kwa mfano Maktaba ya Watumiaji ya Cognito chini ya udhibiti wake au mtoa huduma mwingine wa utambulisho ambapo anaweza kuingia kama njia ya kufikia Maktaba hii ya Utambulisho wa Cognito. Kisha, tu ingia kwenye mtoa huduma huyo wa mtumiaji itamruhusu kuweza kufikia jukumu lililoidhinishwa lililowekwa katika Maktaba ya Utambulisho.
Ni pia inawezekana kudhulumu ruhusa hii kuruhusu uthibitishaji wa msingi:
Madhara Yanayoweza Kutokea: Kuathiri jukumu la IAM lililothibitishwa lililowekwa ndani ya mchanganyiko wa utambulisho.
cognito-idp:AdminAddUserToGroup
Ruhusa hii inaruhusu kuongeza mtumiaji wa Cognito kwenye kundi la Cognito, hivyo mshambuliaji anaweza kutumia ruhusa hii kuongeza mtumiaji chini ya udhibiti wake kwenye makundi mengine yenye haki bora au majukumu tofauti ya IAM:
Madhara Yanayoweza Kutokea: Privesc kwa vikundi vingine vya Cognito na majukumu ya IAM yaliyounganishwa na Vikundi vya User Pool.
cognito-idp:CreateGroup
| cognito-idp:UpdateGroup
), iam:PassRole
Mshambuliaji mwenye ruhusa hizi anaweza kuunda/kusasisha vikundi na kila jukumu la IAM ambalo linaweza kutumika na Mtoa Kitambulisho wa Cognito aliyeathirika na kumfanya mtumiaji aliyeathirika kuwa sehemu ya kikundi, akipata ufikiaji wa majukumu yote hayo:
Madhara Yanayoweza Kutokea: Privesc kwa majukumu mengine ya Cognito IAM.
cognito-idp:AdminConfirmSignUp
Ruhusa hii inaruhusu kuhakiki usajili. Kwa kawaida, mtu yeyote anaweza kuingia kwenye programu za Cognito, ikiwa hiyo itaachwa, mtumiaji anaweza kuunda akaunti kwa data yoyote na kuithibitisha kwa ruhusa hii.
Madhara Yanayoweza Kutokea: Privesc isiyo ya moja kwa moja kwa jukumu la IAM la mchanganyiko wa utambulisho kwa watumiaji walioidhinishwa ikiwa unaweza kujiandikisha mtumiaji mpya. Privesc isiyo ya moja kwa moja kwa kazi nyingine za programu kwa kuwa na uwezo wa kuthibitisha akaunti yoyote.
cognito-idp:AdminCreateUser
Ruhusa hii itamruhusu mshambuliaji kuunda mtumiaji mpya ndani ya mchanganyiko wa watumiaji. Mtumiaji mpya anaundwa kama aliyewezeshwa, lakini atahitaji kubadilisha nenosiri lake.
Madhara Yanayoweza Kutokea: Privesc ya moja kwa moja kwa jukumu la IAM la mchanganyiko wa utambulisho kwa watumiaji walioidhinishwa. Privesc ya moja kwa moja kwa kazi nyingine za programu kwa uwezo wa kuunda mtumiaji yeyote.
cognito-idp:AdminEnableUser
Ruhusa hii inaweza kusaidia katika hali ya kipekee ambapo mshambuliaji alipata akidi za mtumiaji aliyezuiliwa na anahitaji kuwezesha tena.
Madhara Yanayoweza Kutokea: Privesc isiyo ya moja kwa moja kwa jukumu la IAM la mchanganyiko wa utambulisho kwa watumiaji walioidhinishwa na ruhusa za mtumiaji ikiwa mshambuliaji alikuwa na akidi za mtumiaji aliyezuiliwa.
cognito-idp:AdminInitiateAuth
, cognito-idp:AdminRespondToAuthChallenge
Ruhusa hii inaruhusu kuingia kwa kutumia mbinu ADMIN_USER_PASSWORD_AUTH. Kwa maelezo zaidi fuata kiungo.
cognito-idp:AdminSetUserPassword
Ruhusa hii ingemruhusu mshambuliaji kubadilisha nenosiri la mtumiaji yeyote, na kumfanya aweze kujifanya kama mtumiaji yeyote (ambaye hana MFA iliyoanzishwa).
Madhara Yanayoweza Kutokea: Privesc ya moja kwa moja kwa mtumiaji yeyote, hivyo kupata ufikiaji wa vikundi vyote ambavyo kila mtumiaji ni mwanachama na ufikiaji wa jukumu la IAM lililothibitishwa la Identity Pool.
cognito-idp:AdminSetUserSettings
| cognito-idp:SetUserMFAPreference
| cognito-idp:SetUserPoolMfaConfig
| cognito-idp:UpdateUserPool
AdminSetUserSettings: Mshambuliaji anaweza kutumia ruhusa hii vibaya kuweka simu ya mkononi chini ya udhibiti wake kama SMS MFA ya mtumiaji.
SetUserMFAPreference: Kufanana na ile ya awali, ruhusa hii inaweza kutumika kuweka upendeleo wa MFA wa mtumiaji ili kupita ulinzi wa MFA.
SetUserPoolMfaConfig: Kufanana na ile ya awali, ruhusa hii inaweza kutumika kuweka mapendeleo ya MFA ya mzunguko wa mtumiaji ili kupita ulinzi wa MFA.
UpdateUserPool: Pia inawezekana kuboresha mfuatano wa watumiaji kubadilisha sera ya MFA. Angalia cli hapa.
Potential Impact: Privesc isiyo ya moja kwa moja kwa mtumiaji yeyote ambaye mshambuliaji anajua akidi zake, hii inaweza kuruhusu kupita ulinzi wa MFA.
cognito-idp:AdminUpdateUserAttributes
Mshambuliaji mwenye ruhusa hii anaweza kubadilisha barua pepe au nambari ya simu au sifa nyingine yoyote ya mtumiaji chini ya udhibiti wake ili kujaribu kupata mamlaka zaidi katika programu ya chini. Hii inaruhusu kubadilisha barua pepe au nambari ya simu na kuipatia kama iliyothibitishwa.
Madhara Yanayoweza Kutokea: Madhara ya moja kwa moja ya privesc katika programu ya msingi inayotumia Cognito User Pool ambayo inatoa mamlaka kulingana na sifa za mtumiaji.
cognito-idp:CreateUserPoolClient
| cognito-idp:UpdateUserPoolClient
Mshambuliaji mwenye ruhusa hii anaweza kuunda Mteja Mpya wa User Pool ambao haujawekewa vizuizi kuliko wateja wa pool waliopo tayari. Kwa mfano, mteja mpya anaweza kuruhusu aina yoyote ya mbinu ya kuthibitisha, asiwe na siri yoyote, kuwa na kufutwa kwa token kuliwekwa kuzuiwa, kuruhusu token kuwa halali kwa muda mrefu zaidi...
Ile ile inaweza kufanywa ikiwa badala ya kuunda mteja mpya, mteja aliyopo anarekebishwa.
Katika mistari ya amri (au kuupdate moja) unaweza kuona chaguzi zote, angalia!
Madhara Yanayoweza Kutokea: Madhara ya moja kwa moja ya privesc kwa mtumiaji aliyeidhinishwa wa Identity Pool anayetumiwa na User Pool kwa kuunda mteja mpya ambao unarefusha hatua za usalama na kufanya iwezekane kwa mshambuliaji kuingia na mtumiaji aliyeweza kuunda.
cognito-idp:CreateUserImportJob
| cognito-idp:StartUserImportJob
Mshambuliaji anaweza kutumia ruhusa hii kuunda watumiaji kwa kupakia csv yenye watumiaji wapya.
(Katika kesi ambapo unaunda kazi mpya ya kuagiza unaweza pia kuhitaji ruhusa ya iam passrole, sijajaribu bado).
Madhara Yanayoweza Kutokea: Privesc moja kwa moja kwa jukumu la IAM la mchanganyiko wa utambulisho kwa watumiaji walioidhinishwa. Privesc isiyo ya moja kwa moja kwa kazi nyingine za programu kwa uwezo wa kuunda mtumiaji yeyote.
cognito-idp:CreateIdentityProvider
| cognito-idp:UpdateIdentityProvider
Mshambuliaji anaweza kuunda mtoa huduma mpya wa utambulisho ili kisha aweze kuingia kupitia mtoa huduma huyu.
Madhara Yanayoweza Kutokea: Privesc moja kwa moja kwa jukumu la IAM la mchanganyiko wa utambulisho kwa watumiaji walioidhinishwa. Privesc isiyo ya moja kwa moja kwa kazi nyingine za programu kwa uwezo wa kuunda mtumiaji yeyote.
Hii ni ruhusa ya kawaida sana kwa default katika majukumu ya Mchanganyiko wa Utambulisho wa Cognito. Hata kama wildcard katika ruhusa daima inaonekana mbaya (hasa ikitoka kwa AWS), ruhusa zilizotolewa si za manufaa sana kutoka kwa mtazamo wa washambuliaji.
Ruhusa hii inaruhusu kusoma taarifa za matumizi ya Mchanganyiko wa Utambulisho na Vitambulisho vya Utambulisho ndani ya Mchanganyiko wa Utambulisho (ambayo si taarifa nyeti). Vitambulisho vya Utambulisho vinaweza kuwa na Datasets vilivyotolewa kwao, ambavyo ni taarifa za vikao (AWS inaviita kama mchezo uliohifadhiwa). Inaweza kuwa na uwezekano kwamba hii ina aina fulani ya taarifa nyeti (lakini uwezekano ni mdogo sana). Unaweza kupata katika ukurasa wa orodha jinsi ya kufikia taarifa hii.
Mshambuliaji pia anaweza kutumia ruhusa hizi kujiandikisha kwenye mchango wa Cognito unaochapisha mabadiliko kwenye datasets hizi au lambda inayosababisha kwenye matukio ya cognito. Sijawahi kuona hii ikitumika, na sitarajii taarifa nyeti hapa, lakini si haiwezekani.
Pacu, mfumo wa unyakuzi wa AWS, sasa unajumuisha moduli za "cognito__enum" na "cognito__attack" ambazo zinafanya otomatiki orodha ya mali zote za Cognito katika akaunti na kuashiria usanidi dhaifu, sifa za mtumiaji zinazotumika kwa udhibiti wa ufikiaji, nk., na pia zinafanya otomatiki uundaji wa mtumiaji (ikiwemo msaada wa MFA) na privesc kulingana na sifa za kawaida zinazoweza kubadilishwa, akidi za mchanganyiko wa utambulisho zinazoweza kutumika, majukumu yanayoweza kuchukuliwa katika vitambulisho vya id, nk.
Kwa maelezo ya kazi za moduli angalia sehemu ya 2 ya blogu. Kwa maelekezo ya usakinishaji angalia ukurasa mkuu wa Pacu.
Mfano wa matumizi ya cognito__attack kujaribu uundaji wa mtumiaji na njia zote za privesc dhidi ya mchanganyiko wa utambulisho na mteja wa mchanganyiko wa mtumiaji:
Sample cognito__enum matumizi ya kukusanya kila mzunguko wa mtumiaji, wateja wa mzunguko wa mtumiaji, mizunguko ya utambulisho, watumiaji, nk. wanaoonekana katika akaunti ya sasa ya AWS:
Cognito Scanner ni chombo cha CLI katika python ambacho kinatekeleza mashambulizi tofauti kwenye Cognito ikiwa ni pamoja na kupanda hadhi.
Kwa maelezo zaidi angalia https://github.com/padok-team/cognito-scanner
Jifunze & fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Jifunze & fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)