Όπως αναφέρεται στη σελίδα προορισμού τους: Το Supabase είναι μια ανοιχτού κώδικα εναλλακτική λύση του Firebase. Ξεκινήστε το έργο σας με μια βάση δεδομένων Postgres, Αυθεντικοποίηση, άμεσες APIs, Edge Functions, Συνδρομές σε πραγματικό χρόνο, Αποθήκευση και Ενσωματώσεις διανυσμάτων.
Subdomain
Βασικά, όταν δημιουργείται ένα έργο, ο χρήστης θα λάβει ένα υποτομέα supabase.co όπως: jnanozjdybtpqgcwhdiz.supabase.co
Database configuration
Αυτά τα δεδομένα μπορούν να προσπελαστούν από έναν σύνδεσμο όπως https://supabase.com/dashboard/project/<project-id>/settings/database
Αυτή η βάση δεδομένων θα αναπτυχθεί σε κάποια περιοχή AWS, και για να συνδεθείτε σε αυτήν, θα ήταν δυνατό να το κάνετε συνδεόμενοι σε: postgres://postgres.jnanozjdybtpqgcwhdiz:[YOUR-PASSWORD]@aws-0-us-west-1.pooler.supabase.com:5432/postgres (αυτό δημιουργήθηκε στην us-west-1).
Ο κωδικός πρόσβασης είναι ένας κωδικός πρόσβασης που έβαλε ο χρήστης προηγουμένως.
Επομένως, καθώς ο υποτομέας είναι γνωστός και χρησιμοποιείται ως όνομα χρήστη και οι περιοχές AWS είναι περιορισμένες, μπορεί να είναι δυνατό να προσπαθήσετε να σπάσετε τον κωδικό πρόσβασης.
Αυτή η ενότητα περιέχει επίσης επιλογές για:
Επαναφορά του κωδικού πρόσβασης της βάσης δεδομένων
Διαμόρφωση σύνδεσης pooling
Διαμόρφωση SSL: Απόρριψη συνδέσεων σε απλό κείμενο (κατά προεπιλογή είναι ενεργοποιημένες)
Διαμόρφωση μεγέθους δίσκου
Εφαρμογή περιορισμών και απαγορεύσεων δικτύου
API Configuration
Αυτά τα δεδομένα μπορούν να προσπελαστούν από έναν σύνδεσμο όπως https://supabase.com/dashboard/project/<project-id>/settings/api
Η διεύθυνση URL για την πρόσβαση στο API supabase στο έργο σας θα είναι όπως: https://jnanozjdybtpqgcwhdiz.supabase.co.
anon api keys
Θα δημιουργήσει επίσης ένα anon API key (role: "anon"), όπως: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImpuYW5vemRyb2J0cHFnY3doZGl6Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3MTQ5OTI3MTksImV4cCI6MjAzMDU2ODcxOX0.sRN0iMGM5J741pXav7UxeChyqBE9_Z-T0tLA9Zehvqk που η εφαρμογή θα χρειαστεί να χρησιμοποιήσει για να επικοινωνήσει με το API key που εκτίθεται στο παράδειγμά μας.
Είναι δυνατόν να βρείτε το API REST για να επικοινωνήσετε με αυτό το API στα docs, αλλά τα πιο ενδιαφέροντα endpoints θα είναι:
</details>
Έτσι, όποτε ανακαλύπτετε έναν πελάτη που χρησιμοποιεί supabase με το υποτομέα που του έχει παραχωρηθεί (είναι πιθανό ότι ένας υποτομέας της εταιρείας έχει CNAME πάνω από τον υποτομέα supabase), μπορείτε να προσπαθήσετε να **δημιουργήσετε έναν νέο λογαριασμό στην πλατφόρμα χρησιμοποιώντας το supabase API**.
### μυστικά / κλειδιά api ρόλου υπηρεσίας
Ένα μυστικό κλειδί API θα δημιουργηθεί επίσης με **`role: "service_role"`**. Αυτό το κλειδί API θα πρέπει να είναι μυστικό γιατί θα μπορεί να παρακάμψει **Row Level Security**.
Το κλειδί API μοιάζει με αυτό: `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImpuYW5vemRyb2J0cHFnY3doZGl6Iiwicm9sZSI6InNlcnZpY2Vfcm9sZSIsImlhdCI6MTcxNDk5MjcxOSwiZXhwIjoyMDMwNTY4NzE5fQ.0a8fHGp3N_GiPq0y0dwfs06ywd-zhTwsm486Tha7354`
### JWT Secret
Ένα **JWT Secret** θα δημιουργηθεί επίσης ώστε η εφαρμογή να μπορεί να **δημιουργεί και να υπογράφει προσαρμοσμένα JWT tokens**.
## Αυθεντικοποίηση
### Εγγραφές
<div data-gb-custom-block data-tag="hint" data-style='success'>
Από **προεπιλογή** το supabase θα επιτρέπει **σε νέους χρήστες να δημιουργούν λογαριασμούς** στο έργο σας χρησιμοποιώντας τα προαναφερθέντα API endpoints.
</div>
Ωστόσο, αυτοί οι νέοι λογαριασμοί, από προεπιλογή, **θα χρειαστεί να επιβεβαιώσουν τη διεύθυνση email τους** για να μπορέσουν να συνδεθούν στον λογαριασμό. Είναι δυνατόν να ενεργοποιήσετε το **"Allow anonymous sign-ins"** για να επιτρέψετε στους ανθρώπους να συνδέονται χωρίς να επιβεβαιώνουν τη διεύθυνση email τους. Αυτό θα μπορούσε να δώσει πρόσβαση σε **αναμενόμενα δεδομένα** (λαμβάνουν τους ρόλους `public` και `authenticated`).\
Αυτή είναι μια πολύ κακή ιδέα γιατί το supabase χρεώνει ανά ενεργό χρήστη, οπότε οι άνθρωποι θα μπορούσαν να δημιουργήσουν χρήστες και να συνδεθούν και το supabase θα χρεώσει γι' αυτούς:
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
### Κωδικοί πρόσβασης & συνεδρίες
Είναι δυνατόν να υποδείξετε το ελάχιστο μήκος κωδικού πρόσβασης (κατά προεπιλογή), απαιτήσεις (όχι κατά προεπιλογή) και να απαγορεύσετε τη χρήση κωδικών πρόσβασης που έχουν διαρρεύσει.\
Συνιστάται να **βελτιώσετε τις απαιτήσεις καθώς οι προεπιλεγμένες είναι αδύναμες**.
* Συνεδρίες Χρηστών: Είναι δυνατόν να ρυθμίσετε πώς λειτουργούν οι συνεδρίες χρηστών (χρονικά όρια, 1 συνεδρία ανά χρήστη...)
* Προστασία από Bots και Κατάχρηση: Είναι δυνατόν να ενεργοποιήσετε το Captcha.
### Ρυθμίσεις SMTP
Είναι δυνατόν να ρυθμίσετε ένα SMTP για να στέλνετε emails.
### Προηγμένες Ρυθμίσεις
* Ορίστε χρόνο λήξης για τα access tokens (3600 κατά προεπιλογή)
* Ορίστε να ανιχνεύει και να ανακαλεί ενδεχομένως παραβιασμένα refresh tokens και χρονικά όρια
* 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 access key** που αποτελούνται από ένα `access key ID` (π.χ. `a37d96544d82ba90057e0e06131d0a7b`) και ένα `secret access key` (π.χ. `58420818223133077c2cec6712a4f909aec93b4daeedae205aa8e30d5a860628`)
## Edge Functions
Είναι δυνατόν να **αποθηκεύσετε μυστικά** στο supabase επίσης, τα οποία θα είναι **προσβάσιμα από edge functions** (μπορούν να δημιουργηθούν και να διαγραφούν από το web, αλλά δεν είναι δυνατόν να αποκτήσετε άμεση πρόσβαση στην τιμή τους).
<div data-gb-custom-block data-tag="hint" data-style='success'>
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Υποστήριξη HackTricks</summary>
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
</div>