Laut ihrer Landing Page: Supabase ist eine Open-Source-Alternative zu Firebase. Starte dein Projekt mit einer Postgres-Datenbank, Authentifizierung, sofortigen APIs, Edge-Funktionen, Echtzeit-Abonnements, Speicher und Vektor-Einbettungen.
Subdomain
Im Grunde erhält der Benutzer, wenn ein Projekt erstellt wird, eine supabase.co-Subdomain wie: jnanozjdybtpqgcwhdiz.supabase.co
Datenbankkonfiguration
Diese Daten können über einen Link wie https://supabase.com/dashboard/project/<project-id>/settings/database abgerufen werden
Diese Datenbank wird in einer AWS-Region bereitgestellt, und um eine Verbindung herzustellen, wäre es möglich, sich zu verbinden: postgres://postgres.jnanozjdybtpqgcwhdiz:[YOUR-PASSWORD]@aws-0-us-west-1.pooler.supabase.com:5432/postgres (dies wurde in us-west-1 erstellt).
Das Passwort ist ein Passwort, das der Benutzer zuvor eingegeben hat.
Daher, da die Subdomain bekannt ist und als Benutzername verwendet wird und die AWS-Regionen begrenzt sind, könnte es möglich sein, zu versuchen, das Passwort zu brute-forcen.
Dieser Abschnitt enthält auch Optionen zum:
Zurücksetzen des Datenbankpassworts
Konfigurieren von Verbindungspooling
Konfigurieren von SSL: Ablehnen von Klartextverbindungen (standardmäßig sind sie aktiviert)
Konfigurieren der Festplattengröße
Anwenden von Netzwerkbeschränkungen und -sperren
API-Konfiguration
Diese Daten können über einen Link wie https://supabase.com/dashboard/project/<project-id>/settings/api abgerufen werden
Die URL zum Zugriff auf die Supabase-API in deinem Projekt wird wie folgt aussehen: https://jnanozjdybtpqgcwhdiz.supabase.co.
anon API-Schlüssel
Es wird auch einen anon API-Schlüssel (role: "anon") generieren, wie: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImpuYW5vemRyb2J0cHFnY3doZGl6Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3MTQ5OTI3MTksImV4cCI6MjAzMDU2ODcxOX0.sRN0iMGM5J741pXav7UxeChyqBE9_Z-T0tLA9Zehvqk den die Anwendung verwenden muss, um den in unserem Beispiel exponierten API-Schlüssel zu kontaktieren.
Es ist möglich, die API REST zu finden, um diese API in den Docs zu kontaktieren, aber die interessantesten Endpunkte wären:
</details>
Also, wann immer Sie einen Kunden entdecken, der Supabase mit der Subdomain verwendet, die ihm zugewiesen wurde (es ist möglich, dass eine Subdomain des Unternehmens ein CNAME über ihre Supabase-Subdomain hat), sollten Sie versuchen, **ein neues Konto auf der Plattform über die Supabase-API zu erstellen**.
### secret / service\_role API-Schlüssel
Ein geheimer API-Schlüssel wird ebenfalls mit **`role: "service_role"`** generiert. Dieser API-Schlüssel sollte geheim sein, da er in der Lage ist, **Row Level Security** zu umgehen.
Der API-Schlüssel sieht so aus: `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImpuYW5vemRyb2J0cHFnY3doZGl6Iiwicm9sZSI6InNlcnZpY2Vfcm9sZSIsImlhdCI6MTcxNDk5MjcxOSwiZXhwIjoyMDMwNTY4NzE5fQ.0a8fHGp3N_GiPq0y0dwfs06ywd-zhTwsm486Tha7354`
### JWT-Geheimnis
Ein **JWT-Geheimnis** wird ebenfalls generiert, damit die Anwendung **benutzerdefinierte JWT-Token erstellen und signieren** kann.
## Authentifizierung
### Anmeldungen
<div data-gb-custom-block data-tag="hint" data-style='success'>
Standardmäßig erlaubt Supabase **neuen Benutzern, Konten** in Ihrem Projekt über die zuvor genannten API-Endpunkte zu erstellen.
</div>
Diese neuen Konten müssen standardmäßig **ihre E-Mail-Adresse validieren**, um sich in das Konto einloggen zu können. Es ist möglich, **"Anonyme Anmeldungen erlauben"** zu aktivieren, um es Personen zu ermöglichen, sich ohne Verifizierung ihrer E-Mail-Adresse anzumelden. Dies könnte den Zugriff auf **unerwartete Daten** gewähren (sie erhalten die Rollen `public` und `authenticated`).\
Das ist eine sehr schlechte Idee, da Supabase pro aktivem Benutzer Gebühren erhebt, sodass Personen Benutzer erstellen und sich anmelden könnten, und Supabase wird dafür Gebühren erheben:
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
### Passwörter & Sitzungen
Es ist möglich, die minimale Passwortlänge (standardmäßig) anzugeben, Anforderungen (standardmäßig keine) und die Verwendung von geleakten Passwörtern zu untersagen.\
Es wird empfohlen, die Anforderungen zu **verbessern, da die Standardanforderungen schwach sind**.
* Benutzersitzungen: Es ist möglich zu konfigurieren, wie Benutzersitzungen funktionieren (Timeouts, 1 Sitzung pro Benutzer...)
* Bot- und Missbrauchsschutz: Es ist möglich, Captcha zu aktivieren.
### SMTP-Einstellungen
Es ist möglich, ein SMTP einzurichten, um E-Mails zu senden.
### Erweiterte Einstellungen
* Ablaufzeit für Zugriffstoken festlegen (3600 standardmäßig)
* Festlegen, um potenziell kompromittierte Aktualisierungstoken zu erkennen und zu widerrufen sowie Timeout
* MFA: Angeben, wie viele MFA-Faktoren gleichzeitig pro Benutzer registriert werden können (10 standardmäßig)
* Maximale direkte Datenbankverbindungen: Maximale Anzahl von Verbindungen, die zur Authentifizierung verwendet werden (10 standardmäßig)
* Maximale Anforderungsdauer: Maximale Zeit, die für eine Auth-Anforderung zulässig ist (10s standardmäßig)
## Speicherung
<div data-gb-custom-block data-tag="hint" data-style='success'>
Supabase ermöglicht **das Speichern von Dateien** und macht sie über eine URL zugänglich (es verwendet S3-Buckets).
</div>
* Legen Sie das Upload-Dateigrößenlimit fest (Standard ist 50 MB)
* Die S3-Verbindung wird mit einer URL wie folgt angegeben: `https://jnanozjdybtpqgcwhdiz.supabase.co/storage/v1/s3`
* Es ist möglich, **S3-Zugriffsschlüssel** anzufordern, die aus einer `access key ID` (z. B. `a37d96544d82ba90057e0e06131d0a7b`) und einem `secret access key` (z. B. `58420818223133077c2cec6712a4f909aec93b4daeedae205aa8e30d5a860628`) bestehen
## Edge-Funktionen
Es ist möglich, **Geheimnisse** in Supabase zu speichern, die auch **von Edge-Funktionen** zugänglich sind (sie können über das Web erstellt und gelöscht werden, aber es ist nicht möglich, ihren Wert direkt abzurufen).
<div data-gb-custom-block data-tag="hint" data-style='success'>
Lernen & Üben von 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">\
Lernen & Üben von 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>Unterstützen Sie HackTricks</summary>
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
* **Teilen Sie Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
</div>