Supabase Security

Jifunze AWS hacking kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks:

Taarifa Msingi

Kulingana na ukurasa wao wa kutua: Supabase ni mbadala wa Firebase wa chanzo wazi. Anza mradi wako na database ya Postgres, Uthibitishaji, APIs za papo hapo, Kazi za Edge, Vichwa vya muda halisi, Uhifadhi, na Uingizaji wa Vector.

Subdomain

Kimsingi wakati mradi unapotengenezwa, mtumiaji atapokea subdomain ya supabase.co kama: jnanozjdybtpqgcwhdiz.supabase.co

Usanidi wa Database

Data hii inaweza kupatikana kupitia kiungo kama https://supabase.com/dashboard/project/<project-id>/settings/database

Hii database itadaiwa katika eneo fulani la AWS, na ili kuunganisha nayo itakuwa inawezekana kufanya hivyo kwa kuunganisha: postgres://postgres.jnanozjdybtpqgcwhdiz:[YOUR-PASSWORD]@aws-0-us-west-1.pooler.supabase.com:5432/postgres (hii ilianzishwa katika us-west-1). Nenosiri ni nenosiri ambalo mtumiaji aliliweka hapo awali.

Kwa hivyo, kwa kuwa subdomain ni moja inayojulikana na inatumika kama jina la mtumiaji na mikoa ya AWS ni michache, inaweza kuwa inawezekana kujaribu kuvunja nguvu nenosiri.

Sehemu hii pia ina chaguo za:

  • Rudisha nenosiri la database

  • Sanidi upangaji wa uunganisho

  • Sanidi SSL: Kataa uunganisho wa maandishi wazi (kwa chaguo msingi wamezimwa)

  • Sanidi Ukubwa wa Diski

  • Tumia vizuizi vya mtandao na marufuku

Usanidi wa API

Data hii inaweza kupatikana kupitia kiungo kama https://supabase.com/dashboard/project/<project-id>/settings/api

URL ya kupata API ya supabase katika mradi wako itakuwa kama: https://jnanozjdybtpqgcwhdiz.supabase.co.

funguo za API za anon

Pia itazalisha funguo za API za anon (jukumu: "anon"), kama: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImpuYW5vemRyb2J0cHFnY3doZGl6Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3MTQ5OTI3MTksImV4cCI6MjAzMDU2ODcxOX0.sRN0iMGM5J741pXav7UxeChyqBE9_Z-T0tLA9Zehvqk ambayo programu itahitaji kutumia ili kuwasiliana na funguo za API zilizofichuliwa katika mfano wetu katika

Inawezekana kupata API REST ya kuwasiliana na API hii katika nyaraka, lakini vituo muhimu zaidi vingekuwa:

POST /auth/v1/signup HTTP/2
Host: id.io.net
Content-Length: 90
X-Client-Info: supabase-js-web/2.39.2
Sec-Ch-Ua: "Not-A.Brand";v="99", "Chromium";v="124"
Sec-Ch-Ua-Mobile: ?0
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImpuYW5vemRyb2J0cHFnY3doZGl6Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3MTQ5OTI3MTksImV4cCI6MjAzMDU2ODcxOX0.sRN0iMGM5J741pXav7UxeChyqBE9_Z-T0tLA9Zehvqk
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.6367.60 Safari/537.36
Content-Type: application/json;charset=UTF-8
Apikey: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImpuYW5vemRyb2J0cHFnY3doZGl6Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3MTQ5OTI3MTksImV4cCI6MjAzMDU2ODcxOX0.sRN0iMGM5J741pXav7UxeChyqBE9_Z-T0tLA9Zehvqk
Sec-Ch-Ua-Platform: "macOS"
Accept: */*
Origin: https://cloud.io.net
Sec-Fetch-Site: same-site
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: https://cloud.io.net/
Accept-Encoding: gzip, deflate, br
Accept-Language: en-GB,en-US;q=0.9,en;q=0.8
Priority: u=1, i

{"email":"test@exmaple.com","password":"SomeCOmplexPwd239."}
Kuingia (/auth/v1/token?grant_type=password)

``` POST /auth/v1/token?grant_type=password HTTP/2 Host: hypzbtgspjkludjcnjxl.supabase.co Content-Length: 80 X-Client-Info: supabase-js-web/2.39.2 Sec-Ch-Ua: "Not-A.Brand";v="99", "Chromium";v="124" Sec-Ch-Ua-Mobile: ?0 Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImpuYW5vemRyb2J0cHFnY3doZGl6Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3MTQ5OTI3MTksImV4cCI6MjAzMDU2ODcxOX0.sRN0iMGM5J741pXav7UxeChyqBE9_Z-T0tLA9Zehvqk User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.6367.60 Safari/537.36 Content-Type: application/json;charset=UTF-8 Apikey: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImpuYW5vemRyb2J0cHFnY3doZGl6Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3MTQ5OTI3MTksImV4cCI6MjAzMDU2ODcxOX0.sRN0iMGM5J741pXav7UxeChyqBE9_Z-T0tLA9Zehvqk Sec-Ch-Ua-Platform: "macOS" Accept: */* Origin: https://cloud.io.net Sec-Fetch-Site: same-site Sec-Fetch-Mode: cors Sec-Fetch-Dest: empty Referer: https://cloud.io.net/ Accept-Encoding: gzip, deflate, br Accept-Language: en-GB,en-US;q=0.9,en;q=0.8 Priority: u=1, i

{"email":"test@exmaple.com","password":"SomeCOmplexPwd239."}

</details>

Kwa hivyo, unapogundua mteja anayetumia supabase na subdomain waliyopewa (inawezekana kwamba subdomain ya kampuni ina CNAME juu ya subdomain yao wa supabase), unaweza kujaribu **kuunda akaunti mpya kwenye jukwaa kwa kutumia API ya supabase**.

### funguo za API za siri / jukumu la huduma

Funguo ya API ya siri pia itaundwa na **`jukumu: "jukumu_la_huduma"`**. Funguo hii ya API inapaswa kuwa siri kwa sababu itaweza kukiuka **Usalama wa Ngazi ya Safu ya Safu**.

Funguo ya API inaonekana kama hii: `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImpuYW5vemRyb2J0cHFnY3doZGl6Iiwicm9sZSI6InNlcnZpY2Vfcm9sZSIsImlhdCI6MTcxNDk5MjcxOSwiZXhwIjoyMDMwNTY4NzE5fQ.0a8fHGp3N_GiPq0y0dwfs06ywd-zhTwsm486Tha7354`

### Siri ya JWT

**Siri ya JWT** pia itaundwa ili programu iweze **kuunda na kusaini vivuli vya JWT vya desturi**.

## Uthibitishaji

### Usajili

<div data-gb-custom-block data-tag="hint" data-style='success'>

Kwa **chaguo-msingi** supabase itaruhusu **watumiaji wapya kuunda akaunti** kwenye mradi wako kwa kutumia vituo vya API vilivyotajwa hapo awali.

</div>

Hata hivyo, akaunti hizi mpya, kwa chaguo-msingi, **zitahitaji kuthibitisha anwani zao za barua pepe** ili waweze kuingia kwenye akaunti. Inawezekana kuwezesha **"Ruhusu kuingia kwa siri"** kuruhusu watu kuingia bila kuthibitisha anwani zao za barua pepe. Hii inaweza kutoa ufikiaji wa **data isiyotarajiwa** (wanapata majukumu ya `umma` na `kuthibitishwa`).\
Hii ni wazo mbaya sana kwa sababu supabase inatoza kwa mtumiaji aliye hai hivyo watu wanaweza kuunda watumiaji na kuingia na supabase itatoza kwa hao:

<figure><img src="../.gitbook/assets/image (1).png" alt=""><figcaption></figcaption></figure>

### Nywila & vikao

Inawezekana kuonyesha urefu wa chini wa nywila (kwa chaguo-msingi), mahitaji (hakuna kwa chaguo-msingi) na kuzuia matumizi ya nywila zilizovuja.\
Inapendekezwa **kuboresha mahitaji kwani yale ya chaguo-msingi ni dhaifu**.

* Vikao vya Mtumiaji: Inawezekana kusanidi jinsi vikao vya mtumiaji vinavyofanya kazi (muda wa kumalizika, kikao 1 kwa mtumiaji...)
* Bot na Ulinzi dhidi ya Matumizi Mabaya: Inawezekana kuwezesha Captcha.

### Mipangilio ya SMTP

Inawezekana kuweka SMTP kutuma barua pepe.

### Mipangilio ya Juu

* Weka muda wa kumalizika wa vivuli vya ufikiaji (3600 kwa chaguo-msingi)
* Weka kugundua na kufuta vivuli vya kufufua vilivyohatarishwa na muda wa kumalizika
* MFA: Onyesha ni vipengele vya MFA ngapi vinaweza kujiandikisha kwa wakati mmoja kwa mtumiaji (10 kwa chaguo-msingi)
* Mipangilio ya Mwisho wa Moja kwa Moja ya Hifadhidata: Idadi kubwa ya uhusiano hutumiwa kwa uthibitishaji (10 kwa chaguo-msingi)
* Muda wa Ombi la Mwisho: Muda wa juu kuruhusiwa kwa ombi la Uthibitishaji kudumu (10s kwa chaguo-msingi)

## Uhifadhi

<div data-gb-custom-block data-tag="hint" data-style='success'>

Supabase inaruhusu **kuhifadhi faili** na kuzifanya zipatikane kupitia URL (inatumia vikapu vya S3).

</div>

* Weka kikomo cha ukubwa wa faili ya kupakia (chaguo-msingi ni 50MB)
* Uunganisho wa S3 unatolewa na URL kama: `https://jnanozjdybtpqgcwhdiz.supabase.co/storage/v1/s3`
* Inawezekana **kuomba ufikiaji wa S3** ambao hufanywa na `kitambulisho cha ufikiaji wa ufikiaji` (k.m. `a37d96544d82ba90057e0e06131d0a7b`) na `kitambulisho cha ufikiaji wa siri` (k.m. `58420818223133077c2cec6712a4f909aec93b4daeedae205aa8e30d5a860628`)

## Kazi za Edge

Inawezekana **kuhifadhi siri** katika supabase ambayo itakuwa **inapatikana na kazi za edge** (zinaweza kuundwa na kufutwa kutoka kwenye wavuti, lakini haiwezekani kupata thamani yao moja kwa moja).

Last updated