Files
sgse-app/scripts/README_TESTE_SEGURANCA.md

234 lines
8.2 KiB
Markdown

# 🛡️ 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
```bash
# 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)
```bash
# 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
```bash
# 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
```bash
# 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**
- Certifique-se de que o SITE e backend estão ativos
- URLs padrão: http://localhost:5173 (SITE) 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:
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.