“O site a seguir contém programas prejudiciais.”
Esta frase, exibida num ecrã vermelho vivo (Google Safe Browsing) ou num e-mail do seu provedor de alojamento, é o pesadelo de qualquer proprietário de site. Uma infeção no WordPress não é apenas uma questão de reputação. Arrisca o roubo de dados de clientes, a perda de posições no Google (o chamado “Japanese Keyword Hack” ou redirecionamentos para sites de jogos de azar) e potencialmente o bloqueio da sua conta de alojamento.
Em 2026, os ataques ao WordPress são em grande parte automatizados. Os bots não o atacam pessoalmente – eles varrem a web à procura de plugins desatualizados, senhas fracas ou vulnerabilidades em temas.
Neste artigo, vou mostrar-lhe um processo técnico e profissional para limpar um site WordPress hackeado. Esqueça os “plugins de remoção de malware” que muitas vezes apenas mascaram o problema. Vou mostrar como fazê-lo manualmente, eficazmente e ao nível do servidor usando SSH e WP-CLI.
Passo 0: Não entre em pânico e faça backup (sim, do estado infetado!)
Antes de tocar em qualquer coisa, faça backup do seu estado atual. Porquê? Porque durante a limpeza, pode apagar acidentalmente um ficheiro crítico (por exemplo, um functions.php modificado que continha funcionalidades importantes, não apenas o vírus).
Se tiver acesso SSH:
## Arquivar todos os ficheiros
tar -czf backup-infected-files_$(date +%F).tar.gz .
## Exportar base de dados
wp db export backup-infected-db_$(date +%F).sql --allow-root
Passo 1: Diagnóstico inicial (o método “grep”)
Antes de começar a cortar, precisa de saber contra o que está a lutar. Malware no WordPress esconde-se frequentemente como código ofuscado usando funções como eval, base64_decode, ou gzinflate.
Aqui está uma lista de comandos grep úteis para verificar ficheiros à procura de strings suspeitas. Execute-os na diretoria raiz do seu site.
As assinaturas de malware mais comuns
-
Procura da função
eval(muito raramente usada legitimamente em código moderno):grep -rnwl './' -e 'eval(' -
Procura de iframes ocultos e scripts injetados em ficheiros PHP:
grep -rnwl './' -e '<script' --include=*.php grep -rnwl './' -e '<iframe' --include=*.php -
Procura de “backdoors” (nomes de variáveis comuns em malware):
grep -rnwl './' -e 'bgeteam' grep -rnwl './' -e '3o' grep -rnwl './' -e '57h' -
Procura de strings codificadas (Base64 + Rot13):
grep -rnwl './' -e 'base64_decode' grep -rnwl './' -e 'str_rot13'
Análise DOS resultados
Nem todos os resultados são vírus!
- Plugins como Elementor ou Visual Composer podem ter
base64_decodeno seu código. - Preste atenção a ficheiros em locais estranhos, por exemplo,
wp-content/uploads/2024/03/avatar.php. A pastauploadsnão deve conter ficheiros PHP.
Para encontrar todos os ficheiros PHP na pasta uploads:
find ./wp-content/uploads -name "*.php"
Se encontrar algo aqui – 99% das vezes é malware (a menos que tenha um plugin muito específico).
Passo 2: A opção nuclear (sobrescrever ficheiros do core)
Remover manualmente um vírus dos ficheiros do core do WordPress (wp-admin, wp-includes) é um trabalho de Sísifo. O método mais rápido e fiável é substituir todos os ficheiros do sistema por originais limpos.
Este é um processo seguro se não tiver modificado manualmente os ficheiros do core (o que não deve fazer de qualquer forma!).
Usando WP-CLI:
## Descarregar versão fresca do WordPress (substituindo ficheiros)
wp core download --force --skip-content --allow-root
A flag --skip-content é crítica – garante que o WP-CLI não sobrescreve a sua pasta wp-content, onde residem as suas imagens, temas e plugins.
Se não tiver WP-CLI:
- Descarregue o pacote WordPress de wordpress.org.
- Descompacte-o localmente.
- Apague a pasta
wp-contente o ficheirowp-config-sample.phpdele. - Carregue o resto dos ficheiros via FTP, sobrescrevendo tudo no servidor.
Passo 3: Limpeza do wp-content
É aqui que normalmente reside o problema.
Plugins e temas
Se possível, apague e reinstale todos os plugins gratuitos. Os vírus anexam-se frequentemente a cada ficheiro .js ou .php no servidor.
## Reinstalar plugin do repositório (ex. Contact-form-7)
wp plugin install contact-form-7 --force --allow-root
Para plugins pagos, deve descarregar pacotes limpos do fornecedor e substituir ficheiros via FTP.
Verifique o seu tema. Se usa um Tema Filho (Child Theme), reveja manualmente o functions.php e header.php. Estes são locais favoritos para código malicioso.
Pasta uploads
Como mencionado anteriormente, a pasta de média (wp-content/uploads) deve conter apenas imagens, PDFs e documentos.
Limpeza radical (apaga todos os scripts PHP de uploads):
find ./wp-content/uploads -name "*.php" -delete
Aviso: Verifique a lista antecipadamente (sem -delete) para garantir que não está a apagar algo legítimo.
Passo 4: Base de dados (japanese keyword hack e spam)
As infeções muitas vezes não terminam nos ficheiros. Os vírus injetam links de spam no conteúdo dos posts ou criam falsos administradores.
Faça login na base de dados (phpMyAdmin ou wp db cli) e verifique:
-
Falsos Administradores:
SELECT * FROM wp_users;Procure utilizadores que não reconhece, muitas vezes com domínios
.ru,.cnou strings aleatórias. Apague-os imediatamente. -
SPAM no Conteúdo: Vírus do tipo “Japanese Keyword Hack” injetam milhares de páginas com caracteres chineses/japoneses a publicitar falsificações. Verifique a tabela
wp_posts:SELECT ID, post_title FROM wp_posts WHERE post_content LIKE '%<script%'; SELECT ID, post_title FROM wp_posts WHERE post_content LIKE '%eval(%';
Se o seu site tiver subitamente 50.000 novas páginas no índice do Google, precisa de limpar estas entradas da base de dados e, em seguida, enviar um sitemap para a Google Search Console para acelerar a remoção do lixo do índice.
Passo 5: Ficheiros de configuração (wp-config.php e .htaccess)
O malware modifica frequentemente estes dois ficheiros-chave.
-
wp-config.php: Abra-o e verifique se há linhas estranhas. Muitas vezes são adicionadas referências a ficheiros temporários:
include '\tmp\sess_dsf43...'; // SUSPEITO!Compare o seu ficheiro com o
wp-config-sample.php. Deve conter apenas credenciais da base de dados e definições de constantes. -
.htaccess: Os vírus adicionam frequentemente regras aqui que redirecionam o tráfego dos motores de busca (por exemplo, se o User-Agent for Googlebot) para sites com malware, enquanto você (visitando diretamente) vê o site normal. Se não tiver a certeza, gere o ficheiro .htaccess padrão do WordPress:
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress
Passo 6: Pós-limpeza - Reforço de segurança (hardening)
Limpou o site? Ótimo. Agora tranque as portas para que o ladrão não volte.
-
Mudar Palavras-passe:
- Para todas as contas de Administrador.
- Para a base de dados.
- Para FTP/SFTP.
-
Mudar Chaves de Sal (Salt Keys): Isto força o logout de todos os utilizadores. Edite o
wp-config.phpe substitua a secção de chaves por novas geradas aqui: https://api.wordpress.org/secret-key/1.1/salt/ Ou use WP-CLI:wp config shuffle-salts -
Desativar Edição de Ficheiros no Dashboard: Adicione ao
wp-config.php:define( 'DISALLOW_FILE_EDIT', true );Isto impede que um hacker que obtenha uma senha de administrador possa editar ficheiros de temas/plugins diretamente do painel.
-
Desativar XML-RPC: Se não usa a app móvel do WordPress ou o Jetpack, o XML-RPC é apenas um buraco de segurança (usado para ataques DDoS e Brute Force). Adicione ao
.htaccess:<Files xmlrpc.php> order deny,allow deny from all </Files>
Resumo
Lutar contra malware é uma corrida armamentista. A melhor proteção, no entanto, não é um “plugin de segurança mágico”, mas sim higiene digital:
- Atualizações instantâneas do WordPress e plugins.
- Não instalar plugins e temas “nulled” (pirateados) (esta é a principal fonte de infeções).
- Ter um backup externo (por exemplo, na nuvem).
Se sente que o aspeto técnico o sobrecarrega, é melhor contratar profissionais. Uma limpeza mal executada pode deixar uma porta dos fundos (backdoor) aberta, através da qual o hacker voltará em poucos dias, e perderá mais dinheiro e confiança aos olhos do Google.


