Guia educativo — o que os pentests acharam (e o que significa)

Para: Renata (Chefe) · FriendlyAI / Sentinel-Hub
Alvos: digia.com · cgi.com · eficode.com · q-factory.fi
Modo: só superfície pública (sem exploit, sem senha, sem DoS)
Data: 28 Jul 2026 · Elaborado para você explicar com confiança

Este guia traduz o relatório técnico em linguagem de 12 anos de idade, com gravidade, impacto no negócio, por que o cliente compraria o report, e o passo a passo + scripts de correção (para o time de TI deles).

1. O que é “gravidade”? (como um semáforo)

ALTA MÉDIA BAIXA OK
Como se você tivesse 12 anos:
Imagine a empresa como uma casa na rua.
ALTA = porta da frente aberta, ou a fechadura da entrada principal fraca. Qualquer estranho pode tentar entrar ou se passar por você.
MÉDIA = janela sem tranca: não é o pior, mas ajuda o ladrão se ele já estiver no quintal.
BAIXA = etiqueta no correio com o nome do cachorro — informação pequena, mas ainda é informação.
OK = tranca boa; manter e checar de vez em quando.
Infográfico DMARC e e-mail falso
Escada de gravidade (cliente sente na pele) ALTA Phishing, contas, lista de funcionários, porta VPN aberta MÉDIA Browser sem escudo, DNS sujo, CSP fraco BAIXA Ruído, fingerprint, higiene OK Controle forte — manter

Diagramas Excalidraw editáveis: diagrams/severity-gravidade-cliente.excalidraw e diagrams/pipeline-correcao.excalidraw (abra em excalidraw.com → Open).

2. Ranking (pior → melhor neste sample)

Ranking de risco das 4 empresas
1
Q-Factory Oy — WordPress conta usuários em público + zero headers + DMARC frouxo
2
Digia — Gateway Citrix na internet + e-mail fácil de falsificar + CSP “de mentirinha”
3
Eficode — Site moderno e limpo; falta fechar o cadeado de scripts (CSP) e security.txt
4
CGI — Mais madura (e-mail e borda fortes); ainda tem CSP frouxa e vazamento DNS de IP privado
Frase de elevador: “Não invadimos ninguém. Olhamos a fachada na internet como um cliente ou um atacante faria — e medimos o que está exposto de graça.”

3. Q-Factory Oy — q-factory.fi PIOR DO LOTE

Stack: WordPress + Elementor + WP Engine + Cloudflare DNS

WordPress REST user enumeration
Q-01 · ALTA

API do WordPress lista usuários (e até parece e-mail no “apelido”)

Em 12 anos: O site tem uma gaveta secreta chamada /wp-json/wp/v2/users. Qualquer pessoa na internet abre a gaveta e vê a lista de quem tem conta no site — nomes e slugs (um deles parece e-mail corporativo). É como a lista de moradores do prédio colada no elevador.
Implicação: Atacante monta lista de alvos para phishing (“Oi Petra, sou do RH…”), tenta senhas comuns nesses logins, ou mapeia a empresa. Não é “hackear o servidor” ainda — é inteligência grátis para o próximo passo.
Como corrigir (passo a passo):
  1. Instalar mu-plugin scripts/04-wp-disable-user-enum.php (só logado vê users).
  2. Ou no WP Engine / security plugin: desativar REST de usuários para anônimos.
  3. Trocar slugs que são e-mail por nomes neutros (ex.: onni.o).
  4. Re-testar: ./03-check-wp-user-enum.sh https://q-factory.fi deve NÃO retornar 200 com lista.
Q-01b · ALTA

REST aberto (posts, estrutura do site)

Mesma gaveta, outras pastas: o site entrega um mapa de conteúdo em JSON. Útil para apps — perigoso se demais.
Facilita scraping e mapeamento de conteúdo/estrutura.
Restringir endpoints desnecessários; manter só o que o front realmente usa; WAF regras em /wp-json sensíveis.
Q-02 · MÉDIA

Quase nenhum “escudo” no navegador (headers)

Headers são cartazes que o site manda pro browser: “só fale HTTPS”, “não deixe outro site me colocar num quadro”, “não adivinhe o tipo do arquivo”. Q-Factory manda quase nenhum cartaz.
Mais fácil clickjacking, MIME sniff, XSS se houver bug em plugin.
Aplicar 05-nginx… / 06-apache… / Cloudflare Transform (07-…). Validar com 02-check-security-headers.sh.
Q-03–04 · MÉDIA

DMARC p=none · sem CAA · sem security.txt

DMARC none = polícia do e-mail só assiste. CAA missing = qualquer autoridade de certificado “pode” ser usada se DNS for sequestrado de forma parcial. security.txt = cartão de visita do time de segurança (quem avisar de bug).
Seguir 08-dmarc-upgrade-guide.txt; publicar CAA; criar /.well-known/security.txt.
Q-07 · BAIXA

PUT/DELETE/PATCH devolvem 200 com HTML do cache

Parece que o site “aceitou” escrita, mas o tamanho é o mesmo do GET — cache ecoando, não gravação confirmada.
Ajustar cache/CDN para métodos mutáveis retornarem 405/403.

OK xmlrpc bloqueado, .git bloqueado, TRACE off — pontos positivos.

4. Digia Plc — digia.com #2 RISCO

Marketing: HubSpot + Cloudflare · Login: Citrix Gateway

Citrix Gateway como porta da frente
D-00 · ALTA

login.digia.com = portão Citrix (VPN/SSO) na internet

Não é só o site de marketing. É a portaria do castelo onde funcionários digita login para entrar na rede. Qualquer um na rua vê a portaria.
Histórico de CVEs Citrix; phishing de página de login; tentativas de senha (fora do nosso escopo). Se a portaria cai, o resto da casa sofre.
  1. Patch contínuo do ADC/NetScaler.
  2. MFA obrigatório (app, não só SMS se possível).
  3. Hardening LogonPoint; monitoramento de spray.
  4. Restringir por geo/IP se o negócio permitir.
  5. Programa de patch em 24–72h quando sair CVE crítica Citrix.
Não há “script mágico” externo que “conserte” Citrix do cliente — é operação interna deles + fornecedor.
D-18 · ALTA

/oauth* e /saml* no gateway devolvem erro 500

As “portas laterais” de login federado (OAuth/SAML) estão com fumaça: o servidor grita “Internal Server Error 43549”. Não exploramos o erro — mas erro barulhento = sistema mal configurado ou quebrado.
Usuários legítimos podem falhar SSO; atacantes usam comportamento de erro para fingerprint e bugs.
Time de identidade Digia: corrigir IdP/SAML/OAuth no NetScaler; retestar fluxos; logs de 500.
D-01 · ALTA

DMARC p=none

Dá para mandar e-mail fingindo ser @digia.com e muitos servidores aceitam (ou só marcam de leve).
Phishing de clientes e funcionários com logo/marca Digia — dano reputacional absurdo para empresa de TI.
01-check-email-auth.sh digia.com + guia DMARC 08. Ir none → quarantine → reject.
D-19 · ALTA

DKIM RSA 1024-bit (velho)

DKIM é o carimbo de cera no envelope. 1024 bits é carimbo antigo; o padrão moderno é 2048+.
No M365/admin de e-mail: rotacionar chaves DKIM 2048 e atualizar TXT DNS.
D-02–08, D-20–21 · MÉDIA

CSP fraca no marketing, headers faltando, SPF gordo, Leadoo, sem CAA, portas 8080/8443

O site de brochure tem poucos cartazes de segurança. SPF “gordo” = muitos serviços autorizados a enviar e-mail como Digia (mais confiança = mais risco se um terceiro vazar). Leadoo = chat de terceiros (você confia no JavaScript deles).
CSP real + headers (scripts 05/06/07); enxugar SPF; revisar terceiros; publicar CAA; entender 8080/8443 no Cloudflare (só 403 ou serviço real?).

OK HSTS forte, TLS 1.3, mutators 403, TRACE 405, sem .git aberto no apex.

5. Eficode — eficode.com #3

Vercel + Next.js + DatoCMS · e-mail Google + HubSpot SPF

E-01 · MÉDIA

CSP só fala de “quem pode me colocar em iframe”

CSP completa é uma lista do que scripts/imagens podem rodar. A deles só diz “não me embuta em site estranho” (frame-ancestors). Falta a parte de scripts.
Se um dia houver XSS, o browser tem menos freio.
Expandir CSP no Next/Vercel headers (nonce ou allowlist). Cuidado com marketing tags.
E-02 · MÉDIA

Sem security.txt

Não tem o “me liga se achar um buraco” padrão da internet (RFC 9116).
Publicar /.well-known/security.txt com contato e política.
E-03 · MÉDIA

Cookie NEXT_LOCALE sem Secure/HttpOnly

Cookie de idioma. Sem Secure pode ir em HTTP (se existir). Sem HttpOnly, JavaScript da página lê — pequeno risco, mas fácil de endurecer.
Flags Secure; HttpOnly se JS não precisar ler.

OK DMARC quarantine, CAA presente, HSTS, nosniff, mutators/TRACE bloqueados, sem WP REST.

Mensagem comercial: Eficode já está no “time moderno”. O report vende polimento de elite e maturidade de processo — não “seu site está em chamas”.

6. CGI Inc. — cgi.com #4 MAIS MADURA

Drupal + Akamai + Varnish · Proofpoint mail · DMARC reject

C-01 · ALTA (qualidade de CSP)

CSP permite unsafe-inline + unsafe-eval + style-src *

Eles têm o cartaz CSP, mas ele diz “pode rodar script solto e eval”. É como ter alarme na porta e deixar a chave embaixo do tapete.
XSS tem mais espaço para executar se houver falha em conteúdo/terceiro.
Remover unsafe-eval; reduzir inline com nonces; parar style-src *.
C-02 · ALTA

CSP confia em polyfill.io e muitos anúncios/analytics

polyfill.io já teve história feia de supply-chain: se o CDN do amigo for invadido, o script no site da CGI também sofre.
Raio de explosão de terceiros (ZoomInfo, ads, HubSpot, etc.).
Remover polyfill.io; self-host ou CDNs mínimos; revisar Taggrs em mycgi/data.
C-03 · MÉDIA

test.cgi.com aponta para IP privado 10.x

O mapa público da cidade mostra a porta dos fundos da rede interna. Não entrega o ouro sozinho, mas vaza topologia.
Split-horizon DNS: IP privado só na rede interna; público remove ou aponta certo.
C-04–07 · MÉDIA

xmlrpc 502 · /admin 403 Drupal · martech pesado

/admin existe mas nega acesso (mostra “Drupal”). xmlrpc residual 502 = resto de legado. Muitos JS de terceiros = muitas chaves na mesma chaveiro.
404 em xmlrpc; páginas de erro genéricas; reduzir tags.

OK DMARC reject, CAA, security.txt, XFO/nosniff/Permissions/COOP, TRACE 403 — marketing enterprise de verdade.

7. Scripts — o que cada um faz

Regra de ouro: nós não entramos nos servidores dessas empresas. Os scripts são kit para o cliente (ou lab autorizado) verificar e aplicar no ambiente deles.
ArquivoTipoO que faz (simples)
01-check-email-auth.shVerificarPergunta ao DNS: SPF/DMARC/CAA/DKIM. Diz se e-mail falso passa fácil.
02-check-security-headers.shVerificarOlha os “cartazes” HTTP: HSTS, CSP, XFO…
03-check-wp-user-enum.shVerificarTenta a gaveta de users do WordPress.
04-wp-disable-user-enum.phpCorrigirTrava a gaveta: só logado lista users.
05-nginx-security-headers.confCorrigirCola headers bons no nginx.
06-apache-security-headers.confCorrigirIdem no Apache.
07-cloudflare-transform-headers.jsonGuiaO que clicar no Cloudflare para headers.
08-dmarc-upgrade-guide.txtGuianone → quarantine → reject sem quebrar e-mail legítimo.

Exemplo de uso (no lab / máquina da Chefe com dig instalado)

cd scripts
./01-check-email-auth.sh q-factory.fi
./02-check-security-headers.sh https://www.eficode.com
./03-check-wp-user-enum.sh https://q-factory.fi
Pipeline de correção (ordem) 1 Portas abertas 2 E-mail DMARC 3 Headers 4 CAA/txt 5 Re-test

8. Por que o cliente se importa (e como você explica)

Cliente sente…Você traduz…Oferta Sentinel / FriendlyAI
Medo de phishing com marca delesDMARC/DKIM fracos = e-mail falsoHardening de e-mail + reteste
Medo de ransomware / VPNGateway Citrix exposto = porta principalReview de identidade + patch cadence
Medo de vazamento de funcionáriosWP users públicos = lista de alvosLockdown CMS + WAF
Compliance / boardsecurity.txt, CAA, headers = maturidadeScorecard + roadmap 30/60/90
“Já temos Akamai/CF”Borda boa ≠ política boa (CGI CSP)Quality pass, não só “tem WAF”
Frase pronta:
“Fizemos um raio-X da fachada pública — o que qualquer pessoa na internet já consegue ver. Não invadimos. Mostramos portas abertas, e-mail fácil de forjar, e scripts de terceiros. Entregamos prioridade por gravidade e o passo a passo para o time de vocês fechar. Depois retestamos e mostramos o antes/depois.”

O que NÃO dizer

9. Limites honestos (credibilidade)