Supabase Security

Leer AWS hak van nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

Basiese Inligting

Volgens hul landingsbladsy: Supabase is 'n oopbron Firebase-alternatief. Begin jou projek met 'n Postgres-databasis, Verifikasie, onmiddellike API's, Randfunksies, Werklike intekeninge, Berging, en Vektor inbeddings.

Subdomein

Basies wanneer 'n projek geskep word, sal die gebruiker 'n supabase.co subdomein ontvang soos: jnanozjdybtpqgcwhdiz.supabase.co

Databasiskonfigurasie

Hierdie data kan benader word vanaf 'n skakel soos https://supabase.com/dashboard/project/<project-id>/settings/database

Hierdie databasis sal ontplooi word in 'n sekere AWS-streek, en om daarmee te verbind, sou dit moontlik wees om dit te doen deur te verbind na: postgres://postgres.jnanozjdybtpqgcwhdiz:[YOUR-PASSWORD]@aws-0-us-west-1.pooler.supabase.com:5432/postgres (dit is geskep in us-west-1). Die wagwoord is 'n wagwoord wat die gebruiker voorheen ingesit het.

Daarom, aangesien die subdomein 'n bekende een is en dit as gebruikersnaam gebruik word en die AWS-streke beperk is, mag dit moontlik wees om te probeer om die wagwoord brute force.

Hierdie afdeling bevat ook opsies om:

  • Stel die databasiswagwoord terug

  • Konfigureer verbindingspoeling

  • Konfigureer SSL: Verwerp plan-tekstverbindings (standaard is hulle geaktiveer)

  • Konfigureer Skyfgrootte

  • Pas netwerkbeperkings en verbode toe

API-konfigurasie

Hierdie data kan benader word vanaf 'n skakel soos https://supabase.com/dashboard/project/<project-id>/settings/api

Die URL om toegang tot die supabase API in jou projek te kry, gaan wees soos: https://jnanozjdybtpqgcwhdiz.supabase.co.

anon api-sleutels

Dit sal ook 'n anon API-sleutel (rol: "anon"), genereer, soos: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImpuYW5vemRyb2J0cHFnY3doZGl6Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3MTQ5OTI3MTksImV4cCI6MjAzMDU2ODcxOX0.sRN0iMGM5J741pXav7UxeChyqBE9_Z-T0tLA9Zehvqk wat die aansoek nodig sal hê om te gebruik om die API-sleutel blootgestel in ons voorbeeld in kontak te tree met

Dit is moontlik om die API REST te vind om met hierdie API in kontak te tree in die dokumentasie, maar die mees interessante eindpunte sou wees:

Inschrywing (/auth/v1/inskrywing)

``` 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."}

</details>

<details>

<summary>Teken in (/auth/v1/token?grant_type=password)</summary>

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>

Dus, wanneer jy 'n klient ontdek wat supabase met die subdomein wat aan hulle toegeken is, gebruik (dit is moontlik dat 'n subdomein van die maatskappy 'n CNAME oor hul supabase subdomein het), kan jy probeer om **'n nuwe rekening in die platform te skep deur die supabase API te gebruik**.

### geheime / diens\_rol API-sleutels

'n Geheime API-sleutel sal ook gegenereer word met **`rol: "service_role"`**. Hierdie API-sleutel moet geheim wees omdat dit **Ryvlak-sekuriteit** kan omseil.

Die API-sleutel lyk soos dit: `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImpuYW5vemRyb2J0cHFnY3doZGl6Iiwicm9sZSI6InNlcnZpY2Vfcm9sZSIsImlhdCI6MTcxNDk5MjcxOSwiZXhwIjoyMDMwNTY4NzE5fQ.0a8fHGp3N_GiPq0y0dwfs06ywd-zhTwsm486Tha7354`

### JWT-geheim

'n **JWT-geheim** sal ook gegenereer word sodat die aansoek **aangepaste JWT-token kan skep en onderteken**.

## Verifikasie

### Aanmeldings

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

Standaard sal supabase **nuwe gebruikers toelaat om rekeninge te skep** op jou projek deur die voorheen genoemde API-eindpunte te gebruik.

</div>

Tog sal hierdie nuwe rekeninge, standaard, **hul e-posadres moet valideer** om in te kan teken op die rekening. Dit is moontlik om **"Anonieme aanmeldings toelaat"** te aktiveer om mense toe te laat om in te teken sonder om hul e-posadres te verifieer. Dit kan toegang tot **onverwagte data** verleen (hulle kry die rolle `public` en `authenticated`).\
Dit is 'n baie slegte idee omdat supabase per aktiewe gebruiker hef, so mense kan gebruikers skep en in teken en supabase sal hef vir daardie:

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

### Wagwoorde & sessies

Dit is moontlik om die minimum wagwoordlengte aan te dui (standaard), vereistes (nie standaard nie) en om gelekte wagwoorde te verbied.\
Dit word aanbeveel om die vereistes te **verbeter aangesien die standaardvereistes swak is**.

* Gebruikersessies: Dit is moontlik om te konfigureer hoe gebruikersessies werk (tydsbeperkings, 1 sessie per gebruiker...)
* Bot en Misbruikbeskerming: Dit is moontlik om Captcha te aktiveer.

### SMTP-instellings

Dit is moontlik om 'n SMTP in te stel om e-posse te stuur.

### Gevorderde instellings

* Stel vervaltyd vir toegangstokens in (3600 standaard)
* Stel in om potensieel gekompromitteerde verfrissingsleutels op te spoor en tydsbeperking te hê
* MFA: Dui aan hoeveel MFA-faktore gelyktydig per gebruiker ingeskryf kan word (10 standaard)
* Maksimum Direkte Databasisverbindings: Maksimum aantal verbindings wat vir outentifikasie gebruik word (10 standaard)
* Maksimum Aanvraagduur: Maksimum tyd wat vir 'n outentifikasieaanvraag toegelaat word om te duur (10s standaard)

## Berging

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

Supabase maak dit moontlik om **lêers te stoor** en dit toeganklik te maak oor 'n URL (dit gebruik S3-emmers).

</div>

* Stel die lêer-grootte-limiet vir oplaai in (standaard is 50MB)
* Die S3-verbindingsword gegee met 'n URL soos: `https://jnanozjdybtpqgcwhdiz.supabase.co/storage/v1/s3`
* Dit is moontlik om **S3-toegangssleutels** aan te vra wat saamgestel is uit 'n `toegangssleutel-ID` (bv. `a37d96544d82ba90057e0e06131d0a7b`) en 'n `geheime toegangssleutel` (bv. `58420818223133077c2cec6712a4f909aec93b4daeedae205aa8e30d5a860628`)

## Randfunksies

Dit is moontlik om **geheime** in supabase te **stoor** wat ook deur randfunksies **toeganklik sal wees** (hulle kan geskep en verwyder word van die web, maar dit is nie moontlik om hul waarde direk te benader nie).

<details>

<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>

Ander maniere om HackTricks te ondersteun:

* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.

</details>

Last updated