Supabase Security

Sıfırdan kahraman olmak için AWS hackleme öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı)!

HackTricks'i desteklemenin diğer yolları:

Temel Bilgiler

Landing sayfalarına göre Supabase, açık kaynaklı bir Firebase alternatifidir. Projeye Postgres veritabanı, Kimlik Doğrulama, anlık API'lar, Kenar İşlevleri, Gerçek Zamanlı abonelikler, Depolama ve Vektör gömmeleri ile başlayın.

Alt Alan Adı

Temelde bir proje oluşturulduğunda, kullanıcı jnanozjdybtpqgcwhdiz.supabase.co gibi bir supabase.co alt alan adı alacaktır.

Veritabanı yapılandırması

Bu verilere https://supabase.com/dashboard/project/<project-id>/settings/database gibi bir bağlantıdan erişilebilir

Bu veritabanı bazı AWS bölgelerine dağıtılacak ve ona bağlanmak için şu şekilde bağlanmak mümkün olacaktır: postgres://postgres.jnanozjdybtpqgcwhdiz:[YOUR-PASSWORD]@aws-0-us-west-1.pooler.supabase.com:5432/postgres (bu us-west-1'de oluşturuldu). Şifre önceden kullanıcının belirlediği bir şifredir.

Bu nedenle, alt alan adı bilindiği ve kullanıcı adı olarak kullanıldığı için ve AWS bölgeleri sınırlı olduğundan, şifreyi denemek için kaba kuvvet uygulamak mümkün olabilir.

Bu bölüm ayrıca şunları içerir:

  • Veritabanı şifresini sıfırlama

  • Bağlantı havuzunu yapılandırma

  • SSL'yi yapılandırma: Düz metin bağlantılarını reddet (varsayılan olarak etkindir)

  • Disk boyutunu yapılandırma

  • Ağ kısıtlamaları ve yasakları uygulama

API Yapılandırması

Bu verilere https://supabase.com/dashboard/project/<project-id>/settings/api gibi bir bağlantıdan erişilebilir

Projedeki supabase API'ına erişmek için URL şu şekilde olacaktır: https://jnanozjdybtpqgcwhdiz.supabase.co.

anon api anahtarları

Ayrıca, role: "anon" olan bir anon API anahtarı oluşturacaktır, örneğin: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImpuYW5vemRyb2J0cHFnY3doZGl6Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3MTQ5OTI3MTksImV4cCI6MjAzMDU2ODcxOX0.sRN0iMGM5J741pXav7UxeChyqBE9_Z-T0tLA9Zehvqk uygulamanın API'ye erişmek için kullanması gerekecektir.

Bu API'ye erişmek için API REST'i belgelerde bulunabilir, ancak en ilginç uç noktalar şunlar olacaktır:

Kaydol (/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>Giriş (/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>

Bu yüzden, bir müşterinin supabase'i kullandığını ve kendilerine verilen alt alan adını keşfettiğinizde (şirketin bir alt alan adının supabase alt alan adının üstünde bir CNAME'e sahip olması mümkündür), **supabase API'sını kullanarak platformda yeni bir hesap oluşturmayı deneyebilirsiniz**.

### gizli / service\_role api anahtarları

Bir gizli API anahtarı da **`role: "service_role"`** ile oluşturulacaktır. Bu API anahtarı gizli olmalıdır çünkü **Satır Düzeyi Güvenliği** atlayabilecektir.

API anahtarı şu şekildedir: `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImpuYW5vemRyb2J0cHFnY3doZGl6Iiwicm9sZSI6InNlcnZpY2Vfcm9sZSIsImlhdCI6MTcxNDk5MjcxOSwiZXhwIjoyMDMwNTY4NzE5fQ.0a8fHGp3N_GiPq0y0dwfs06ywd-zhTwsm486Tha7354`

### JWT Secret

Uygulamanın **özel JWT belirteci** de oluşturulacak, böylece uygulama **özel JWT belirteçleri oluşturup imzalayabilir**.

## Kimlik Doğrulama

### Kayıtlar

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

**Varsayılan olarak**, supabase **yeni kullanıcıların** önceki bahsedilen API uç noktalarını kullanarak projenizde hesap oluşturmalarına izin verecektir.

</div>

Ancak, bu yeni hesapların, varsayılan olarak, **giriş yapabilmek için e-posta adreslerini doğrulamaları gerekecektir**. E-posta adreslerini doğrulamadan giriş yapmalarına izin vermek için **"Anonim girişlere izin ver"** özelliğini etkinleştirmek mümkündür. Bu, **beklenmeyen verilere erişim** sağlayabilir (rolleri `public` ve `authenticated` olur).\
Bu çok kötü bir fikirdir çünkü supabase aktif kullanıcı başına ücretlendirme yapar, bu yüzden insanlar kullanıcılar oluşturabilir ve giriş yapabilir ve supabase bu kullanıcılar için ücretlendirme yapacaktır:

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

### Şifreler & oturumlar

Minimum şifre uzunluğunu (varsayılan olarak), gereksinimleri (varsayılan olarak yok) belirtmek ve sızdırılmış şifreleri kullanmayı engellemek mümkündür.\
Varsayılan olanların zayıf olduğu için **gereksinimleri iyileştirmek önerilir**.

* Kullanıcı Oturumları: Kullanıcı oturumlarının nasıl çalışacağını yapılandırmak mümkündür (zaman aşımı, kullanıcı başına 1 oturum...)
* Bot ve Kötüye Kullanım Koruması: Captcha'yı etkinleştirmek mümkündür.

### SMTP Ayarları

E-posta göndermek için bir SMTP ayarlamak mümkündür.

### Gelişmiş Ayarlar

* Erişim belirteçlerinin süresini ayarlamak (varsayılan olarak 3600)
* Potansiyel olarak tehlikeye atılmış yenileme belirteçlerini tespit etmek ve iptal etmek için zaman aşımı ayarlamak
* MFA: Kullanıcı başına aynı anda kaç MFA faktörünün kaydedilebileceğini belirtmek (varsayılan olarak 10)
* Maksimum Doğrudan Veritabanı Bağlantıları: Kimlik doğrulamada kullanılan bağlantıların maksimum sayısı (varsayılan olarak 10)
* Maksimum İstek Süresi: Bir Kimlik doğrulama isteğinin sürebileceği maksimum süre (varsayılan olarak 10s)

## Depolama

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

Supabase, **dosyaları depolamaya** ve bunlara bir URL üzerinden erişilebilmesini sağlamaya izin verir (S3 kovaları kullanır).

</div>

* Yükleme dosya boyutu sınırını ayarlamak (varsayılan olarak 50MB)
* S3 bağlantısı, şu şekilde bir URL ile verilir: `https://jnanozjdybtpqgcwhdiz.supabase.co/storage/v1/s3`
* Bir `erişim anahtarı kimliği` (ör. `a37d96544d82ba90057e0e06131d0a7b`) ve bir `gizli erişim anahtarı` (ör. `58420818223133077c2cec6712a4f909aec93b4daeedae205aa8e30d5a860628`) tarafından oluşturulan S3 erişim anahtarlarını **isteme** mümkündür.

## Kenar İşlevleri

Supabase'e **saklanacak sırları** da mümkündür ve bunlar **kenar işlevleri tarafından erişilebilir** olacaktır (web üzerinden oluşturulabilir ve silinebilirler, ancak değerlerine doğrudan erişmek mümkün değildir).

<details>

<summary><strong>Sıfırdan kahraman olmak için AWS hacklemeyi öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>

HackTricks'i desteklemenin diğer yolları:

* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın(https://github.com/sponsors/carlospolop)!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu
* **💬 [Discord grubuna](https://discord.gg/hRep4RUj7f) veya [telegram grubuna](https://t.me/peass) katılın veya** bizi **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking hilelerinizi göndererek HackTricks** ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR'lar göndererek paylaşın.

</details>

Last updated