- Added @convex-dev/rate-limiter dependency to manage request limits effectively. - Implemented rate limiting configurations for IPs, users, and endpoints to prevent abuse and enhance security. - Introduced new security analysis endpoint to detect potential attacks based on incoming requests. - Updated backend schema to include rate limit configurations and various cyber attack types for improved incident tracking. - Enhanced existing security functions to incorporate rate limiting checks, ensuring robust protection against brute force and other attacks.
8.2 KiB
🛡️ Script de Teste de Segurança - SGSE
Script Python para testar e validar o sistema de segurança do SGSE através de simulações de ataques cibernéticos.
📋 Descrição
Este script simula diferentes tipos de ataques cibernéticos para validar se o sistema SGSE está detectando e bloqueando adequadamente tentativas de intrusão. Os testes incluem:
- ✅ Brute Force - Tentativas repetidas de login com diferentes senhas
- ✅ SQL Injection - Tentativas de injeção de código SQL
- ✅ XSS (Cross-Site Scripting) - Tentativas de injeção de scripts maliciosos
- ✅ DDoS - Múltiplas requisições simultâneas
- ✅ Path Traversal - Tentativas de acesso a arquivos do sistema
- ✅ Command Injection - Tentativas de execução de comandos do sistema
- ✅ NoSQL Injection - Tentativas de injeção NoSQL
- ✅ XXE (XML External Entity) - Tentativas de ataque via XML
🚀 Pré-requisitos
# Instalar Python 3.8+ (se ainda não tiver)
python3 --version
# Criar ambiente virtual (recomendado)
cd scripts
python3 -m venv venv_seguranca
# Ativar ambiente virtual
source venv_seguranca/bin/activate # Linux/Mac
# ou
venv_seguranca\Scripts\activate # Windows
# Instalar dependências
pip install requests
Nota: Em sistemas Arch Linux/CachyOS, o Python usa ambientes gerenciados (PEP 668).
Por isso, é necessário usar um ambiente virtual. O ambiente já foi criado automaticamente em scripts/venv_seguranca.
📖 Uso
Teste Completo (Todos os Ataques)
# Ativar ambiente virtual (se ainda não estiver ativo)
cd scripts
source venv_seguranca/bin/activate
# Executar todos os testes
python3 teste_seguranca.py
# Ou tornando o script executável
chmod +x teste_seguranca.py
./teste_seguranca.py
Teste Específico
# Testar apenas Brute Force
python3 scripts/teste_seguranca.py --teste brute_force
# Testar apenas SQL Injection
python3 scripts/teste_seguranca.py --teste sql_injection
# Testar apenas XSS
python3 scripts/teste_seguranca.py --teste xss
# Testar apenas DDoS
python3 scripts/teste_seguranca.py --teste ddos
# Testar apenas Path Traversal
python3 scripts/teste_seguranca.py --teste path_traversal
# Testar apenas Command Injection
python3 scripts/teste_seguranca.py --teste command_injection
# Testar apenas NoSQL Injection
python3 scripts/teste_seguranca.py --teste nosql
# Testar apenas XXE
python3 scripts/teste_seguranca.py --teste xxe
Opções Avançadas
# Testar em servidor específico
python3 scripts/teste_seguranca.py --url http://192.168.1.100:5173
# Testar Brute Force com mais tentativas
python3 scripts/teste_seguranca.py --teste brute_force --brute-force-tentativas 20
# Testar DDoS com mais threads e duração maior
python3 scripts/teste_seguranca.py --teste ddos --ddos-threads 100 --ddos-duracao 30
# Ver todas as opções
python3 scripts/teste_seguranca.py --help
📊 Interpretação dos Resultados
✅ DETECTADO
O sistema bloqueou ou detectou o ataque com sucesso. Isso é esperado e desejado.
❌ NÃO DETECTADO
O sistema não bloqueou ou não detectou o ataque. Pode indicar uma vulnerabilidade que precisa ser corrigida.
⚠️ AVISO
O sistema pode estar parcialmente protegido, mas recomenda-se revisar a implementação.
🔍 O Que o Script Verifica
1. Brute Force
- ✅ Bloqueio após 5 tentativas falhas
- ✅ Retorno de status 429 (Too Many Requests)
- ✅ Retorno de status 403 (Forbidden)
- ✅ Headers de rate limiting (X-RateLimit-Remaining)
2. SQL Injection
- ✅ Bloqueio de payloads SQL maliciosos
- ✅ Retorno de status 400/403/422
- ✅ Mensagens de erro específicas sobre SQL
3. XSS
- ✅ Sanitização de tags HTML/JavaScript
- ✅ Bloqueio de scripts maliciosos
- ✅ Retorno de status 400/403/422
4. DDoS
- ✅ Rate limiting de requisições simultâneas
- ✅ Bloqueio de tráfego excessivo
- ✅ Taxa de bloqueio > 50%
5. Path Traversal
- ✅ Bloqueio de caminhos relativos (../)
- ✅ Prevenção de acesso a arquivos do sistema
6. Command Injection
- ✅ Bloqueio de caracteres especiais de shell
- ✅ Prevenção de execução de comandos
7. NoSQL Injection
- ✅ Validação de objetos JSON maliciosos
- ✅ Bloqueio de operadores MongoDB maliciosos
8. XXE
- ✅ Rejeição de conteúdo XML não esperado
- ✅ Prevenção de external entity attacks
🛠️ Personalização
O script pode ser personalizado editando teste_seguranca.py:
- Adicionar novos payloads de teste
- Modificar limites de requisições
- Ajustar timeouts e delays
- Adicionar novos tipos de testes
⚠️ Avisos Importantes
-
Use apenas em ambientes de teste/desenvolvimento
- Nunca execute este script em produção sem autorização
-
Este script simula ataques reais
- Pode gerar logs de segurança no sistema
- Pode bloquear temporariamente seu IP
- Use com responsabilidade
-
Alguns testes podem ser bloqueados pelo firewall
- Isso é normal e esperado
- Indica que o sistema está protegido
-
Execute com o sistema SGSE rodando
- Certifique-se de que o frontend e backend estão ativos
- URLs padrão: http://localhost:5173 (frontend) e http://127.0.0.1:3210 (backend)
📝 Exemplo de Saída
╔══════════════════════════════════════════════════════════════════════╗
║ TESTES DE SEGURANÇA - SGSE ║
╚══════════════════════════════════════════════════════════════════════╝
[INICIO] URL Base: http://localhost:5173
[INICIO] URL Convex: http://127.0.0.1:3210
──────────────────────────────────────────────────────────────────────
[BRUTE_FORCE] Iniciando teste de força bruta (10 tentativas)...
[BRUTE_FORCE] ✅ DETECTADO! Bloqueio após 5 tentativas (429)
──────────────────────────────────────────────────────────────────────
[SQL_INJECTION] Iniciando testes de SQL Injection...
[SQL_INJECTION] ✅ DETECTADO! Payload: ' OR '1'='1...
──────────────────────────────────────────────────────────────────────
[DDOS] Iniciando teste DDoS (50 threads, 10s)...
[DDOS] ✅ DETECTADO! 45/50 requisições bloqueadas (90.0%)
══════════════════════════════════════════════════════════════════════
RELATÓRIO DE TESTES DE SEGURANÇA - SGSE
══════════════════════════════════════════════════════════════════════
[BRUTE FORCE]
Status: ✅ DETECTADO
Sucessos: 0
Falhas: 0
[SQL INJECTION]
Status: ✅ DETECTADO
Sucessos: 0
Falhas: 0
...
══════════════════════════════════════════════════════════════════════
Total de Testes: 8
Ataques Detectados: 7/8
══════════════════════════════════════════════════════════════════════
🤝 Contribuindo
Para adicionar novos testes de segurança:
- Adicione um novo método na classe
SegurancaTeste - Adicione o teste ao dicionário
resultadosem__init__ - Adicione o teste à lista
testesemexecutar_todos_testes - Atualize este README com a descrição do novo teste
📄 Licença
Este script é parte do projeto SGSE e deve ser usado apenas para fins de teste e validação de segurança.