Supabase Security

Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το htARTE (Ειδικός Ερυθρού Συνεργείου HackTricks AWS)!

Άλλοι τρόποι υποστήριξης του HackTricks:

Βασικές Πληροφορίες

Σύμφωνα με την σελίδα εκκίνησης: Το Supabase είναι μια ανοικτού κώδικα εναλλακτική λύση του Firebase. Ξεκινήστε το έργο σας με μια βάση δεδομένων Postgres, Ταυτοποίηση, άμεσες διεπαφές API, Edge Functions, Συνδρομές σε πραγματικό χρόνο, Αποθήκευση και Διανύσματα ενσωματώσεων.

Υποτομέας

Βασικά, όταν δημιουργείται ένα έργο, ο χρήστης θα λάβει έναν υποτομέα supabase.co όπως: jnanozjdybtpqgcwhdiz.supabase.co

Διαμόρφωση Βάσης Δεδομένων

Αυτά τα δεδομένα μπορούν να αποκτηθούν από ένα σύνδεσμο όπως https://supabase.com/dashboard/project/<project-id>/settings/database

Αυτή η βάση δεδομένων θα εγκατασταθεί σε κάποια περιοχή του AWS, και για να συνδεθείτε σε αυτήν θα ήταν δυνατό να γίνει μέσω της σύνδεσης: postgres://postgres.jnanozjdybtpqgcwhdiz:[ΤΟ-ΚΩΔΙΚΟ-ΣΑΣ]@aws-0-us-west-1.pooler.supabase.com:5432/postgres (αυτό δημιουργήθηκε στο us-west-1). Ο κωδικός πρόσβασης είναι ένας κωδικός που ο χρήστης έχει ορίσει προηγουμένως.

Επομένως, καθώς ο υποτομέας είναι ένας γνωστός και χρησιμοποιείται ως όνομα χρήστη και οι περιοχές του AWS είναι περιορισμένες, είναι δυνατόν να προσπαθήσετε να δοκιμάσετε βίαια τον κωδικό πρόσβασης.

Αυτή η ενότητα περιλαμβάνει επίσης επιλογές για:

  • Επαναφορά του κωδικού πρόσβασης της βάσης δεδομένων

  • Διαμόρφωση της συσσώρευσης σύνδεσης

  • Διαμόρφωση SSL: Απόρριψη συνδέσεων κειμένου πλάνου (από προεπιλογή είναι ενεργοποιημένες)

  • Διαμόρφωση μεγέθους δίσκου

  • Εφαρμογή περιορισμών δικτύου και απαγορεύσεων

Διαμόρφωση API

Αυτά τα δεδομένα μπορούν να αποκτηθούν από ένα σύνδεσμο όπως https://supabase.com/dashboard/project/<project-id>/settings/api

Η διεύθυνση URL για πρόσβαση στο API του Supabase στο έργο σας θα είναι κάτι σαν: https://jnanozjdybtpqgcwhdiz.supabase.co.

Κλειδιά API ανώνυμων

Θα δημιουργήσει επίσης ένα κλειδί API ανώνυμου (ρόλος: "ανώνυμος"), όπως: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImpuYW5vemRyb2J0cHFnY3doZGl6Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3MTQ5OTI3MTksImV4cCI6MjAzMDU2ODcxOX0.sRN0iMGM5J741pXav7UxeChyqBE9_Z-T0tLA9Zehvqk που η εφαρμογή θα χρειαστεί να χρησιμοποιήσει για να επικοινωνήσει με το κλειδί API που εκτίθεται στο παράδειγμά μας στο

Είναι δυνατόν να βρείτε το API REST για να επικοινωνήσετε με αυτό το API στα έγγραφα, αλλά τα πιο ενδιαφέροντα σημεία θα είναι:

Εγγραφή (/auth/v1/signup)

``` 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>Σύνδεση (/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>

Έτσι, όποτε ανακαλύπτετε έναν πελάτη που χρησιμοποιεί το supabase με το subdomain που του δόθηκε (είναι δυνατόν ένα subdomain της εταιρείας να έχει ένα CNAME πάνω από το supabase subdomain τους), μπορείτε να **δοκιμάσετε να δημιουργήσετε ένα νέο λογαριασμό στην πλατφόρμα χρησιμοποιώντας το supabase API**.

### μυστικά / κλειδιά api ρόλου υπηρεσίας

Ένα μυστικό κλειδί API θα δημιουργηθεί επίσης με **`role: "service_role"`**. Αυτό το κλειδί API πρέπει να είναι μυστικό επειδή θα μπορεί να παρακάμψει τη **Ασφάλεια Επιπέδου Γραμμής**.

Το κλειδί API φαίνεται έτσι: `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImpuYW5vemRyb2J0cHFnY3doZGl6Iiwicm9sZSI6InNlcnZpY2Vfcm9sZSIsImlhdCI6MTcxNDk5MjcxOSwiZXhwIjoyMDMwNTY4NzE5fQ.0a8fHGp3N_GiPq0y0dwfs06ywd-zhTwsm486Tha7354`

### Μυστικό JWT

Ένα **Μυστικό JWT** θα δημιουργηθεί επίσης ώστε η εφαρμογή να μπορεί **να δημιουργεί και να υπογράφει προσαρμοσμένα JWT τοκεν**.

## Ταυτοποίηση

### Εγγραφές

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

Από **προεπιλογή** το supabase θα επιτρέπει σε **νέους χρήστες να δημιουργούν λογαριασμούς** στο έργο σας χρησιμοποιώντας τα προαναφερθέντα σημεία πρόσβασης του API.

</div>

Ωστόσο, αυτοί οι νέοι λογαριασμοί, από προεπιλογή, **θα πρέπει να επικυρώσουν τη διεύθυνση email τους** για να μπορούν να συνδεθούν στον λογαριασμό τους. Είναι δυνατόν να ενεργοποιηθεί το **"Να επιτρέπονται ανώνυμες συνδέσεις"** για να επιτραπεί σε άτομα να συνδεθούν χωρίς να επαληθεύσουν τη διεύθυνση email τους. Αυτό θα μπορούσε να παρέχει πρόσβαση σε **απροσδόκητα δεδομένα** (λαμβάνουν τους ρόλους `public` και `authenticated`).\
Αυτή είναι μια πολύ κακή ιδέα επειδή το supabase χρεώνει ανά ενεργό χρήστη, οπότε οι άνθρωποι θα μπορούσαν να δημιουργούν χρήστες και να συνδέονται και το supabase θα χρεώνει γι' αυτούς:

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

### Κωδικοί & συνεδρίες

Είναι δυνατόν να υποδείξετε το ελάχιστο μήκος κωδικού πρόσβασης (από προεπιλογή), τις απαιτήσεις (όχι από προεπιλογή) και να απαγορεύσετε τη χρήση διαρροές κωδικών.\
Συνιστάται να **βελτιώσετε τις απαιτήσεις καθώς οι προεπιλεγμένες είναι αδύναμες**.

* Συνεδρίες Χρήστη: Είναι δυνατόν να διαμορφώσετε πώς λειτουργούν οι συνεδρίες χρήστη (χρονικά όρια, 1 συνεδρία ανά χρήστη...)
* Προστασία από Ρομπότ και Κατάχρηση: Είναι δυνατόν να ενεργοποιήσετε το Captcha.

### Ρυθμίσεις SMTP

Είναι δυνατόν να ορίσετε ένα SMTP για να στέλνετε emails.

### Προηγμένες Ρυθμίσεις

* Ορίστε τον χρόνο λήξης των τοκεν πρόσβασης (3600 από προεπιλογή)
* Ορίστε να ανιχνεύει και να ανακαλεί πιθανώς χειραγωγημένα τοκεν ανανέωσης και χρονικό όριο
* MFA: Υποδείξτε πόσοι παράγοντες MFA μπορούν να εγγραφούν ταυτόχρονα ανά χρήστη (10 από προεπιλογή)
* Μέγιστες Απευθείας Συνδέσεις Βάσης Δεδομένων: Μέγιστος αριθμός συνδέσεων που χρησιμοποιούνται για την πιστοποίηση (10 από προεπιλογή)
* Μέγιστη Διάρκεια Αιτήσεων: Μέγιστος χρόνος που επιτρέπεται σε μια αίτηση Πιστοποίησης να διαρκέσει (10s από προεπιλογή)

## Αποθήκευση

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

Το Supabase επιτρέπει **την αποθήκευση αρχείων** και την πρόσβασή τους μέσω ενός URL (χρησιμοποιεί S3 buckets).

</div>

* Ορίστε το όριο μεγέθους αρχείου μεταφόρτωσης (η προεπιλογή είναι 50MB)
* Η σύνδεση S3 δίνεται με ένα URL όπως: `https://jnanozjdybtpqgcwhdiz.supabase.co/storage/v1/s3`
* Είναι δυνατόν να **ζητήσετε πρόσβαση S3** που αποτελούνται από ένα `ID πρόσβασης` (π.χ. `a37d96544d82ba90057e0e06131d0a7b`) και ένα `μυστικό κλειδί πρόσβασης` (π.χ. `58420818223133077c2cec6712a4f909aec93b4daeedae205aa8e30d5a860628`)

## Λειτουργίες Edge

Είναι δυνατόν να **αποθηκεύσετε μυστικά** στο supabase τα οποία θα είναι **προσβάσιμα από λειτουργίες Edge** (μπορούν να δημιουργηθούν και να διαγραφούν από τον ιστό, αλλά δεν είναι δυνατόν να αποκτήσετε πρόσβαση στην τιμή τους).

Last updated