Files
sgse-app/scripts/README_TESTE_SEGURANCA.md
deyvisonwanderley 88983ea297 feat: integrate rate limiting and enhance security features
- 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.
2025-11-16 01:20:57 -03:00

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

  1. Use apenas em ambientes de teste/desenvolvimento

    • Nunca execute este script em produção sem autorização
  2. Este script simula ataques reais

    • Pode gerar logs de segurança no sistema
    • Pode bloquear temporariamente seu IP
    • Use com responsabilidade
  3. Alguns testes podem ser bloqueados pelo firewall

    • Isso é normal e esperado
    • Indica que o sistema está protegido
  4. Execute com o sistema SGSE rodando

📝 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:

  1. Adicione um novo método na classe SegurancaTeste
  2. Adicione o teste ao dicionário resultados em __init__
  3. Adicione o teste à lista testes em executar_todos_testes
  4. 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.