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.