Ferramenta de auditoria de seguranca para projetos que utilizam Supabase. Detecta credenciais publicas (URL + Anon Key) expostas em sites e testa se as politicas de seguranca (RLS) estao configuradas corretamente.
- Python 3.8+
- Google Chrome (apenas para modo
--browser)
pip install requestsPara o modo browser (opcional):
pip install selenium webdriver-managerAnalisa o HTML e arquivos JS do site buscando credenciais com regex:
python explorador_supabase.py https://alvo.comAbre um Chrome real e monitora o trafego de rede para capturar credenciais em tempo real:
python explorador_supabase.py https://alvo.com --browserAo abrir o navegador, navegue pelo site (faca login, clique em paginas) para forcar requisicoes ao Supabase. O script monitora por 60 segundos.
Se voce ja sabe a URL do projeto Supabase, pode fornece-la diretamente:
python explorador_supabase.py https://alvo.com --url https://projetoxxx.supabase.coO script procura duas informacoes:
| Credencial | O que e | Exemplo |
|---|---|---|
| URL | Endpoint do projeto Supabase | https://abc123.supabase.co |
| Anon Key | Chave publica JWT (comeca com eyJ...) |
eyJhbGciOiJIUzI1NiIs... |
Modo estatico - Busca no HTML principal e em cada arquivo JS referenciado usando padroes como:
supabaseUrl: "..."/supabaseKey: "..."NEXT_PUBLIC_SUPABASE_URL/NEXT_PUBLIC_SUPABASE_ANON_KEYcreateClient("url", "key")- Qualquer string
https://*.supabase.coou JWTeyJ...
Modo browser - Intercepta requisicoes HTTP via Chrome DevTools Protocol (Performance Logs) e extrai:
- Key: do header
apikeyouAuthorization: Bearer ... - URL: dos paths
/rest/v1,/auth/v1,/storage/v1,/realtime/v1,/functions/v1, ou do host de qualquer requisicao que contenha headerapikey
Com o par URL + Key em maos, o script executa dois testes:
Teste 1 - Exposicao de estrutura (OpenAPI)
Acessa GET /rest/v1/ para verificar se o schema OpenAPI esta exposto. Se sim, lista todas as tabelas e views do banco.
Teste 2 - Leitura de dados (RLS)
Tenta ler registros de cada tabela com GET /rest/v1/{tabela}?select=*&limit=1. Se retornar dados, a tabela esta sem RLS (Row Level Security) ou com politicas permissivas.
| Resultado | Significado |
|---|---|
[CRITICO] |
Dados acessiveis publicamente - RLS ausente ou mal configurado |
[PERIGO] |
Estrutura do banco exposta (nomes de tabelas/colunas visiveis) |
[OK] |
Tabela protegida por RLS ou estrutura oculta |
[SEGURO] |
Nenhum dado ou estrutura acessivel publicamente |
Esta ferramenta destina-se exclusivamente a testes de seguranca autorizados. Use apenas em projetos dos quais voce é proprietario ou possui autorizacao explicita para testar. O uso indevido pode violar leis locais e os termos de servico do Supabase.