Cognito Identity Pools
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)
Mifuko 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 mifuko 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
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...).
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.
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:
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.
Kwa maelezo zaidi angalia https://github.com/padok-team/cognito-scanner
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/mobaili ili kuitumia. 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 wasiokuwa na uthibitisho, unaweza kupata AWS credentials kwa:
Au unaweza kutumia amri zifuatazo za aws cli:
Kumbuka kwamba kwa kawaida mtumiaji wa cognito asiye na uthibitisho HAWEZI kuwa na ruhusa yoyote, hata kama ilitolewa kupitia sera. Angalia sehemu ifuatayo.
Sehemu ya awali ilifuata mchakato wa uthibitishaji wa juu wa kawaida. Mchakato huu unakagua sera ya kikao iliyopangwa 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 ya kikomo.
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.
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 default 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.
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)