Cognito Identity Pools
Basic Information
Mikondo ya utambulisho inachukua jukumu muhimu kwa kuwezesha watumiaji wako kupata ithibati za muda mfupi. Ithibati hizi ni muhimu kwa kufikia huduma mbalimbali za AWS, ikiwa ni pamoja na lakini sio tu Amazon S3 na DynamoDB. Kipengele muhimu cha mikondo ya utambulisho ni msaada wao kwa watumiaji wa wageni wasiojulikana na anuwai ya watoa utambulisho kwa uthibitishaji wa mtumiaji. Watoa utambulisho wanaoungwa mkono ni pamoja na:
Amazon Cognito user pools
Chaguzi za kuingia za kijamii kama Facebook, Google, Login with Amazon, na Sign in with Apple
Watoa huduma wanaokubaliana na OpenID Connect (OIDC)
Watoa utambulisho wa SAML (Security Assertion Markup Language)
Utambulisho wa watengenezaji walioidhinishwa
Cognito Sync
Ili kuunda vikao vya Identity Pool, unahitaji kwanza kuunda na Identity ID. Hii Identity ID ni kitambulisho cha kikao cha mtumiaji huyo. Vitambulisho hivi vinaweza kuwa na hadi seti 20 za data ambazo zinaweza kuhifadhi hadi 1MB ya jozi za funguo-thamani.
Hii ni faida kwa kuhifadhi taarifa za mtumiaji (ambaye atakuwa akitumia kila wakati Identity ID ile ile).
Zaidi ya hayo, huduma cognito-sync ni huduma inayoruhusu kusimamia na kusawazisha taarifa hizi (katika seti za data, kutuma taarifa katika mstreams na ujumbe wa SNS...).
Tools for pentesting
Pacu, mfumo wa unyakuzi wa AWS, sasa unajumuisha moduli "cognito__enum" na "cognito__attack" ambazo zinafanya otomatiki ya kuhesabu mali zote za Cognito katika akaunti na kuashiria usanidi dhaifu, sifa za mtumiaji zinazotumika kwa udhibiti wa ufikiaji, nk, na pia zinafanya otomatiki ya uundaji wa mtumiaji (ikiwemo msaada wa MFA) na kupandisha hadhi kulingana na sifa za kawaida zinazoweza kubadilishwa, akidi za kuaminika za identity pool, majukumu yanayoweza kuchukuliwa katika vitambulisho vya id, nk.
Kwa maelezo ya kazi za moduli, angalia sehemu ya 2 ya blog post. Kwa maelekezo ya usakinishaji, angalia ukurasa mkuu wa Pacu.
Usage
Mfano wa matumizi ya cognito__attack kujaribu uundaji wa mtumiaji na njia zote za privesc dhidi ya identity pool na mteja wa user pool uliopewa:
Sample cognito__enum usage to gather all user pools, user pool clients, identity pools, users, etc. visible in the current AWS account:
Mfano wa matumizi ya cognito__enum kukusanya kila mzunguko wa mtumiaji, wateja wa mzunguko wa mtumiaji, mizunguko ya kitambulisho, 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 uundaji wa akaunti zisizohitajika na kupandisha hadhi ya mchanganyiko wa utambulisho.
Installation
Matumizi
Kwa maelezo zaidi angalia https://github.com/padok-team/cognito-scanner
Kufikia Majukumu ya IAM
Bila Uthibitisho
Jambo pekee ambalo mshambuliaji anahitaji kujua ili kupata AWS credentials katika programu ya Cognito kama mtumiaji asiye na uthibitisho ni Identity Pool ID, na ID hii inapaswa kuwa imeandikwa kwa nguvu katika programu ya wavuti/mobail ili kuitumie. ID inaonekana kama hii: eu-west-1:098e5341-8364-038d-16de-1865e435da3b
(haiwezi kufanywa kwa nguvu).
IAM Cognito unathenticated role iliyoundwa kupitia inaitwa kwa default Cognito_<Identity Pool name>Unauth_Role
Ikiwa unapata Identity Pools ID imeandikwa kwa nguvu na inaruhusu watumiaji wasiothibitishwa, unaweza kupata AWS credentials kwa:
Au unaweza kutumia amri zifuatazo za aws cli:
Kumbuka kwamba kwa kawaida mtumiaji asiyejulikana wa cognito HAWEZI kuwa na ruhusa yoyote, hata kama ilitolewa kupitia sera. Angalia sehemu ifuatayo.
Mchakato wa Uthibitishaji wa Juu vs Msingi
Sehemu ya awali ilifuata mchakato wa uthibitishaji wa juu wa kawaida. Mchakato huu unakagua sera ya kikao inayozuia kwa kikao cha jukumu la IAM kilichoundwa. Sera hii itaruhusu kikao kutumia huduma kutoka orodha hii (hata kama jukumu lilikuwa na ufikiaji wa huduma nyingine).
Hata hivyo, kuna njia ya kupita hii, ikiwa kikundi cha Utambulisho kina "Mchakato wa Msingi (Classic) ulioanzishwa", mtumiaji ataweza kupata kikao kwa kutumia mchakato huo ambao hautakuwa na sera hiyo ya kikao inayozuia.
Ikiwa unapata kosa hili, ni kwa sababu mchakato wa msingi haujawezeshwa (default)
An error occurred (InvalidParameterException) when calling the GetOpenIdToken operation: Basic (classic) flow is not enabled, please use enhanced flow.
Kuwa na seti ya akreditivu za IAM unapaswa kuangalia ni upatikanaji gani unao na kujaribu kuinua mamlaka.
Imeidhinishwa
Kumbuka kwamba watumiaji walioidhinishwa huenda wakapewa idhini tofauti, hivyo ikiwa unaweza kujiandikisha ndani ya programu, jaribu kufanya hivyo na kupata akreditivu mpya.
Pia kunaweza kuwa na majukumu yanayopatikana kwa watumiaji walioidhinishwa wanaofikia Hifadhi ya Utambulisho.
Kwa hili unaweza kuhitaji kuwa na upatikanaji wa mtoa utambulisho. Ikiwa hiyo ni Cognito User Pool, huenda unaweza kutumia tabia ya kawaida na kuunda mtumiaji mpya mwenyewe.
Jukumu la IAM Cognito lililoidhinishwa lililoundwa kupitia linaitwa kwa default Cognito_<Jina la Hifadhi ya Utambulisho>Auth_Role
Hata hivyo, mfano ufuatao unatarajia kwamba tayari umeingia ndani ya Cognito User Pool inayotumika kufikia Hifadhi ya Utambulisho (usisahau kwamba aina nyingine za watoa utambulisho zinaweza pia kuanzishwa).
Inawezekana kuunda majukumu tofauti ya IAM kulingana na mtoa utambulisho ambaye mtumiaji anaingia au hata kulingana na mtumiaji (kwa kutumia madai). Hivyo, ikiwa una upatikanaji wa watumiaji tofauti kupitia watoa sawa au tofauti, inaweza kuwa ya thamani kuingia na kufikia majukumu ya IAM ya wote.
Last updated