Site WordPress pirateado: passo a passo para recuperar (e prevenir)
O site está esquisito. Aparecem redirecionamentos para casinos chineses. O Google diz "este site pode estar comprometido" nos resultados. Ou pior: o teu alojamento avisa que vai suspender a conta porque está a enviar 50.000 emails de spam por hora. Bem-vindo ao clube — todos os meses centenas de sites WordPress portugueses são pirateados.
A boa notícia: 90% dos casos resolvem-se em 2-6 horas se seguires um procedimento certo. A má: 90% dos donos de site agem em pânico, perdem dados e abrem buracos novos. Este guia é o procedimento. Lê do início ao fim antes de começar.
Sinais de que o site foi pirateado
Confirma antes de declarar emergência. Sinais típicos:
- Redirecionamentos estranhos — visitantes acabam em sites de aposta, viagra, malware.
- Páginas novas que não criaste com URLs tipo
/asdfgh1234/cheap-shoes.html. - Aviso do Google em Search Console: "Site comprometido" ou "Malware detetado".
- Aviso do alojamento sobre envio de spam ou pico de tráfego suspeito.
- Login no admin não funciona — palavra-passe foi alterada.
- Plugins novos instalados que não reconheces (nomes genéricos tipo "wp-mailer", "stats-plugin").
- Site carrega lentíssimo sem razão (crypto miners a correr).
- Avisos no antivírus dos visitantes.
- Em código-fonte aparecem blocos de JavaScript ofuscado ou base64.
Confirmaste? Avança.
Passo 1 — Isolar imediatamente (5 minutos)
Antes de qualquer limpeza, trava o estrago:
-
Modo manutenção — ativa via plugin ou via
.htaccess:RewriteEngine On RewriteCond %{REMOTE_ADDR} !^O\.TEU\.IP$ RewriteRule .* /maintenance.html [R=503,L]Substitui
O.TEU.IPpelo teu IP público (vê emwhatismyip.com). -
Bloqueia acesso ao painel — adiciona regra de IP allowlist ao
wp-admin/.htaccess:Order Deny,Allow Deny from all Allow from O.TEU.IP -
Desliga cronjobs que possam estar a propagar malware. No alojamento → cPanel → Cron jobs → desativar.
-
Comunica ao alojamento. Abre ticket de emergência. Maioria dos alojamentos PT tem equipa de segurança.
Site agora está em quarentena. Podes investigar sem o atacante continuar a operar.
Passo 2 — Snapshot forense (10 minutos)
Antes de limpar nada, guarda evidência. Se mais tarde precisas de identificar o vetor de ataque ou recorrer a seguros, vais querer isto.
- Backup completo do estado atual — base de dados + ficheiros. Sim, mesmo infetado. Guarda à parte, não restaures isto.
- Captura de ecrã do que está visível: páginas comprometidas, redirecionamentos, painel admin.
- Lista de IPs que acederam recentemente (logs do alojamento →
access.log). - Lista de ficheiros modificados nas últimas 48-72h:
find . -mtime -3 -type f -name "*.php"
Guarda tudo numa pasta forense-AAAAMMDD/ fora do site.
Passo 3 — Escaneamento (15-30 minutos)
Identifica o que está infetado.
Online (sem instalar nada):
- Sucuri SiteCheck (sitecheck.sucuri.net) — gratuito, identifica malware visível.
- Google Safe Browsing — verifica se Google sinalizou.
No alojamento (via SSH ou painel):
- Wordfence scan — se ainda consegues aceder ao admin, corre scan completo (pode demorar 30-60 min).
- MalCare ou WP Hacked Help — alternativas pagas que detetam mais.
- Procura manual por strings suspeitas:
grep -rn "eval(base64_decode" wp-content/ grep -rn "eval(gzinflate" wp-content/ grep -rn "<?php @include" wp-content/uploads/
Anota cada ficheiro infetado antes de apagar. Vais precisar da lista.
Passo 4 — Restaurar a partir de backup limpo (1-2 horas)
A forma mais segura de limpar é restaurar uma versão pré-infeção. Não tentes "limpar à mão" — sempre escapa coisa.
- Identifica quando começou. Olha os logs, ficheiros modificados, queixas. Se a infeção começou há 5 dias, restaura backup de há 7 dias.
- Restaura os ficheiros (
wp-content/, raiz) a partir do backup limpo. - Restaura a base de dados se necessário. Cuidado: vais perder pedidos/conteúdo desde o backup. Avalia o tradeoff.
- Atualiza WordPress core, plugins e tema para a versão mais recente. Versão antiga = porta de entrada provável.
- Apaga ficheiros que não estavam no backup — qualquer coisa estranha em
wp-content/uploads/que termine em.phpé altamente suspeita.
Se não tens backup limpo:
- Considera serviço profissional de limpeza (Sucuri, Wordfence Care, agências PT especializadas). Custo: 150-500€.
- Ou reconstrói o site do zero, importando apenas o conteúdo (posts, páginas) via export limpo.
Passo 5 — Repor TODAS as credenciais (30 minutos)
Assume que o atacante tem todas as palavras-passe. Mudar uma é inútil.
- Palavras-passe de todos os utilizadores admin — força reset.
- Sal e chaves do
wp-config.php— gera novas emapi.wordpress.org/secret-key/1.1/salt/. Isto invalida todos os cookies de sessão ativos. - Palavra-passe da base de dados — muda no cPanel + atualiza
wp-config.php. - FTP/SFTP — palavras-passe novas. Se possível, desliga FTP e usa só SFTP.
- Conta do alojamento — palavra-passe nova + ativa 2FA.
- Email associado — verifica se foi acedido; muda palavra-passe; ativa 2FA.
- Chaves de API (Stripe, ifthenpay, GA4) — rotaciona.
Sem isto, qualquer limpeza é em vão. O atacante volta em horas.
Passo 6 — Blindar contra repetição (1 hora)
Volta-se a abrir o site só depois disto:
- Atualiza tudo ao último patch. Core, tema, plugins.
- Remove tema/plugins inativos — superfície de ataque desnecessária.
- Instala plugin de segurança se ainda não tinhas (Wordfence ou Solid Security).
- Ativa firewall a nível de DNS — Cloudflare (gratuito) já bloqueia 80% das tentativas.
- Restringe
wp-adminpor IP se possível (allowlist). - Desativa edição de ficheiros via admin — adiciona ao
wp-config.php:define('DISALLOW_FILE_EDIT', true); - Restringe execução de PHP em uploads —
.htaccessemwp-content/uploads/:<Files *.php> deny from all </Files> - Ativa 2FA para todos os admins.
- Cria backup novo — agora é a tua base limpa.
Ver segurança WordPress para o setup completo.
Passo 7 — Comunicar (30 minutos)
Obrigatório, especialmente se há dados pessoais envolvidos.
Ao Google
- Google Search Console → "Problemas de segurança" → "Solicitar análise" depois de limpar. Sem isto, o aviso "site comprometido" pode permanecer dias.
Aos utilizadores (se aplicável)
Se há indício de que dados foram acedidos:
- Email a clientes afetados explicando o que aconteceu, o que fizeste, o que devem fazer (mudar palavra-passe).
- Comunicação à CNPD dentro de 72h se há dados pessoais comprometidos (artigo 33 do RGPD). Não cumprir = coima possível. Ver conformidade RGPD do site.
Aos visitantes
- Banner ou aviso durante alguns dias a confirmar resolução.
- Resposta pronta a quem pergunta nas redes sociais.
Comunicação atempada salva reputação. Esconder torna pior.
Quanto custa (tempo e dinheiro)
| Cenário | Tempo | Custo |
|---|---|---|
| Tens backup limpo + competência técnica | 2-4h | 0€ (só tempo) |
| Tens backup limpo + agência | 4-8h | 300€-800€ |
| Sem backup + agência | 1-3 dias | 500€-2.000€ |
| Site grande/loja sem backup | 3-7 dias | 1.000€-5.000€ |
Vantagem clara para quem mantém backups regulares testados.
Como evitar a próxima vez
Os 5 vetores responsáveis por 90% dos hacks de PME:
- Plugins/temas piratas (nulled) — 70% têm backdoor. Nunca uses.
- Plugins desatualizados — bug conhecido + sem patch = porta escancarada.
- Palavras-passe fracas/repetidas — sem 2FA é convite. Ver SSL e HTTPS.
- Alojamento partilhado mal configurado — vizinho infetado contagia. Considera upgrade.
- Ausência de WAF — sem firewall, ataques automatizados acertam mais cedo ou mais tarde.
Prevenção custa ~80-150€/mês de manutenção. Limpeza custa 500-2.000€ + dias offline + perda de tráfego. A matemática faz-se sozinha.
A regra que junta tudo
Recuperar um site WordPress pirateado é, em 95% dos casos, um procedimento mecânico — isolar, escanear, restaurar, rotacionar credenciais, blindar, comunicar. O que mata sites portugueses não é a complexidade do ataque; é o pânico que leva a saltar passos, e a ausência de backup que torna a limpeza dolorosa.
Tem o procedimento por escrito antes de precisares. Tem backup automático e testado. Tem 2FA em tudo. No dia em que acontecer (e acaba sempre por acontecer), perdes 3 horas, não 3 semanas.
No sitesfixe.pt limpamos sites WordPress comprometidos e blindamos contra reincidência — restauro, hardening, monitorização e comunicação à CNPD se necessário. Manutenção desde 80€/mês. Pede um orçamento sem compromisso.
Lê também:
Fontes
Precisas de um site ou loja online?
Agência digital portuguesa. Sites e lojas online rápidos, otimizados para o Google e feitos para resultado.
Pedir orçamento