234 lines
8.2 KiB
Markdown
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.
|