Intermediário Web — OWASP Top 10
Security Misconfiguration — Padrões Inseguros e Configurações Expostas
Security Misconfiguration é a categoria mais prevalente no OWASP Top 10. Não exige vulnerabilidade no código — basta uma configuração errada para expor o sistema. Geralmente resultado de pressa no deploy, ambientes copiados de desenvolvimento para produção ou falta de hardening.
Debugging habilitado em produção
# Flask — NUNCA em produção
app.run(debug=True)
Com debug ativo, erros exibem stack trace completo, código-fonte e console interativo. Um atacante pode executar código Python diretamente na aplicação.
// Stack trace expõe:
- Caminhos de arquivo do servidor
- Variáveis de ambiente
- Versão do framework e dependências
- Lógica interna da aplicação
# Correto — lê do ambiente
DEBUG = os.getenv('DEBUG', 'false').lower() == 'true'
Credenciais padrão
Interfaces frequentemente esquecidas com senha padrão:
- phpMyAdmin: root / (sem senha)
- Apache Tomcat Manager: tomcat / tomcat, admin / admin
- Jenkins: admin / admin (versões antigas)
- MongoDB: sem autenticação por padrão (versões antigas)
- Elasticsearch: sem autenticação por padrão (< 6.8)
- Router admin: admin / admin, admin / password
Sempre altere credenciais padrão antes de expor qualquer serviço.
Listagem de diretório
// Apache/nginx com autoindex ativo — atacante vê todos os arquivos
http://example.com/uploads/
Index of /uploads
backup_2025-01.sql.gz
config_old.php
private_keys/
# nginx — desabilitar listagem (padrão correto)
autoindex off;
Headers de segurança ausentes
// Scanner: curl -I https://example.com
Ausentes com frequência:
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
Referrer-Policy: no-referrer
Permissions-Policy: geolocation=(), microphone=()
Content-Security-Policy: default-src 'self'
Portas e serviços desnecessários expostos
# Verificação rápida (em seu próprio servidor)
nmap -sV -p- 192.168.1.100
# Resultado preocupante em servidor web:
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.4
80/tcp open http
443/tcp open https
3306/tcp open mysql MySQL 8.0 # banco exposto publicamente
6379/tcp open redis Redis 6.0 # sem autenticação
27017/tcp open mongodb MongoDB 4.4 # sem autenticação
Ambientes cloud — buckets S3 públicos
# Verificar política de bucket (AWS CLI — seu próprio bucket)
aws s3api get-bucket-acl --bucket meu-bucket
aws s3api get-bucket-policy --bucket meu-bucket
# Listar bucket público acidentalmente
aws s3 ls s3://meu-bucket --no-sign-request
Checklist de hardening
- Remova frameworks, módulos e dependências não usados.
- Segmente ambientes: dev, staging, prod — configurações separadas.
- Desabilite features não necessárias (XML external entities, server-side includes).
- Aplique headers HTTP de segurança em todas as respostas.
- Revise configuração com ferramentas:
lynis,CIS Benchmarks,AWS Security Hub. - Automatize infraestrutura como código — evita configuração manual divergente.
- Escaneie portas e serviços expostos regularmente.