Como lidar com um site WordPress hackeado

Neste artigo, vamos falar sobre os tipos mais comuns de ataques ao WordPress, como identificá-los e os diferentes métodos para os resolver. Se encontrares um problema deste tipo, recomendamos vivamente que contactes um programador web profissional para obteres mais ajuda. Para orientação adicional sobre como melhorar a segurança da tua conta de alojamento, consulta este guia.

IMPORTANTE: Antes de fazeres quaisquer alterações, cria uma cópia de segurança completa do teu site. 

ATENÇÃO: Para reduzir o risco de futuros ataques ao WordPress, faz regularmente uma análise à tua conta de alojamento com uma ferramenta antivírus, remove quaisquer ficheiros maliciosos ou suspeitos e mantém todos os plugins e temas do teu site atualizados para as versões mais recentes.

  1. Ficheiros padrão em falta

  2. Como substituir ficheiros WordPress em falta

  3. Como substituir todos os ficheiros padrão do WordPress

  4. Ficheiros de tema ou plugin em falta

  5. Redirecionamentos maliciosos

Ficheiros padrão em falta

Embora vários problemas diferentes possam levar ao desaparecimento ou alteração de ficheiros padrão, a causa mais comum é a presença de malware injetado na tua instalação do WordPress. Felizmente, as ferramentas antivírus nos nossos servidores Web e de Alojamento conseguem detetar e colocar automaticamente em quarentena os ficheiros comprometidos.

Se os ficheiros principais do teu WordPress forem infetados, podes encontrar sintomas como:

  • Uma página em branco;

  • Um erro 500 Internal Server Error;

  • Um “Este site está a ter problemas técnicos” (introduzido no WordPress 5.2.2);

  • Ou outros erros semelhantes.

Para resolver este problema, basta seguires os passos abaixo.

Verifica o ficheiro error_log do teu site

Para identificares o que causou o problema no teu site, revê o ficheiro error_log. Este ficheiro regista todos os erros críticos que o teu site encontra.

Podes encontrá-lo na tua conta cPanel > menu “Gestor de Ficheiros” > diretório raiz da tua instalação do WordPress. 

Depois de acederes à pasta raiz do domínio, procura o ficheiro error_log. Se existir, segue estes passos:

  1. Clica com o botão direito no ficheiro e seleciona Ver:


  2. Dentro do log, podes ver um erro como: “No such file or directory in…”, seguido do caminho do ficheiro em falta. Isto indica que um ficheiro necessário está ausente e está a impedir o site de funcionar corretamente.

    Por exemplo:

    /home/cPuser/public_html/wp-settings.php

  3. Para restaurar o ficheiro em falta, desce até à secção "Como substituir os ficheiros em falta" deste guia.

Ativa a opção PHP display_errors

Se o ficheiro error_log não estiver disponível no diretório raiz do teu site, podes ativar a opção PHP display_errors na tua conta cPanel. Esta definição permite que as mensagens de erro apareçam diretamente no teu site, facilitando a identificação do problema.

Importante: Por motivos de segurança, certifica-te de desativar o display_errors assim que terminares a resolução do problema.

Podes ativar a opção PHP das seguintes formas:

  • Via php.ini 

Além do menu “PHP Tweaks” do cPanel, também podes ajustar certas definições de um site diretamente através de um ficheiro php.ini, adicionando/editando as linhas correspondentes.

Para ativar a opção display_errors, precisas de adicionar a seguinte linha ao ficheiro:

display_errors=1

Podes criar um novo ficheiro php.ini na pasta raiz do site e adicionar lá a linha, ou modificar o ficheiro gerado pelo sistema seguindo os passos abaixo.

  1. Entra na tua conta cPanel e vai ao menu “Gestor de Ficheiros”.

  2. Certifica-te de que a opção “Mostrar ficheiros ocultos (dotfiles)” está ativada nas definições:


  3. Navega até ao seguinte diretório:  /home/cPanel_user/.system-php/ini


  4. Seleciona a versão do PHP atribuída ao teu domínio e depois seleciona o diretório do domínio. Por exemplo, o caminho completo pode ser:

    /home/cPanel_user/.system-php/ini/7.0/testwebsite.com

  5. Clica com o botão direito no ficheiro php.ini e seleciona Editar.

  6. Adiciona a seguinte linha ao ficheiro:

    display_errors=1

  • Via .htaccess


Para ativar a opção PHP display_errors via ficheiro .htaccess, tens de editar o ficheiro dentro do diretório raiz do site no “Gestor de Ficheiros” e adicionar lá a seguinte linha:

php_value display_errors 1

Os passos detalhados para localizar o ficheiro .htaccess podem ser encontrados neste artigo

Depois de fazeres as alterações, clica em Guardar.

Como substituir ficheiros WordPress em falta

O WordPress utiliza uma estrutura de ficheiros simples e organizada, o que torna relativamente fácil restaurar ficheiros em falta ou corrompidos. Recomenda-se vivamente a substituição dos ficheiros principais, pois garante que quaisquer ficheiros comprometidos por malware sejam totalmente restaurados. No entanto, procede com cautela: substituir certos ficheiros ou pastas pode resultar em perda de dados se não for feito corretamente.

Segue os passos abaixo para substituir ficheiros WordPress em falta:

  1. Entra no teu cPanel e vai a Softaculous Apps Installer.

  2. Cria uma nova instalação do WordPress numa subpasta temporária. Para isso, clica no ícone WordPress e depois seleciona Instalar:


  3. Serás redirecionado para a página de definições da instalação. Lá, seleciona o nome do domínio em questão no menu suspenso e introduz o nome de uma subpasta no campo No Diretório.

    Neste exemplo, usamos a subpasta ” fix” para a instalação do WordPress:


    NOTA: Substituir todos os ficheiros padrão irá atualizar a tua instalação existente para a versão usada na instalação temporária “fix”, e misturar ficheiros de versões diferentes pode causar conflitos de sistema e quebrar a funcionalidade do site.

    Se for importante manter a tua versão atual do WordPress, ou se planeias substituir apenas ficheiros específicos, verifica a versão do teu site dentro do ficheiro /wp-includes/version.php , e certifica-te de que a nova instalação usa a mesma versão do WordPress:


  4. Podes escolher a versão do WordPress para a nova instalação diretamente na janela de instalação:


  5. Depois de todas as definições estarem configuradas, clica em Instalação Rápida ou desce até ao fundo da página de instalação e clica em Instalar

  6. Depois de concluída a nova instalação do WordPress, os ficheiros vão aparecer no “Gestor de Ficheiros” > diretório raiz do teu domínio. Abre a pasta fazendo duplo clique nela:


  7. Para substituir um ficheiro específico em falta (por exemplo, wp-settings.php), localiza esse ficheiro dentro do diretório da nova instalação.

  8. Depois disto, move o ficheiro para o diretório raiz atual do teu site clicando com o botão direito no ficheiro > clica em Mover > introduz o caminho para a pasta raiz do teu site > clica em Mover ficheiro(s)


  9. Depois de concluído, o ficheiro em falta foi restaurado e o teu site deverá carregar corretamente.

Como substituir todos os ficheiros padrão do WordPress

No processo de substituição de todos os ficheiros padrão do WordPress de um site, os passos 1-6 são iguais aos da secção “Como substituir ficheiros WordPress em falta”. 

Depois de concluíres estes passos e criada a nova instalação do WordPress, para substituir todos os ficheiros padrão na pasta raiz do teu site, segue estes passos:

  1. Abre a pasta raiz da nova instalação do WordPress:


  2. Dentro da nova pasta de instalação, apaga os seguintes ficheiros e pastas:


    • .htaccess

    • wp-config.php

    • wp-content

      Estes ficheiros e pastas contêm a configuração e o conteúdo do teu site e devem permanecer inalterados.

  3. Depois, move os ficheiros restantes para o diretório raiz do teu site principal. Para isso, usa o botão Selecionar Tudo > clica em Mover > introduz o caminho para a pasta raiz do teu site > clica em Mover ficheiro(s):


  4. Os ficheiros principais do WordPress foram totalmente substituídos. Visita o teu site para confirmar que tudo carrega corretamente.

    Se o site continuar a apresentar erros, verifica novamente o error_log. Na maioria dos casos, problemas adicionais são causados por ficheiros de temas ou plugins em falta.

Ficheiros de tema ou plugin em falta

A ausência de ficheiros de tema ou plugin pode ocorrer por várias razões, mas a causa mais comum é malware que infeta e remove componentes essenciais da tua instalação do WordPress. 

Se algum ficheiro de plugin ou tema do teu WordPress estiver em falta, podes encontrar:

  • Uma página em branco;

  • Um erro 500 Internal Server Error;

  • Um “Este site está a ter problemas técnicos” (introduzido no WordPress 5.2.2);

  • Uma página parcialmente carregada ou visualmente “quebrada”.

Para ajuda no diagnóstico do problema, consulta as seguintes secções deste artigo: Verifica o ficheiro error_log do teu site e Ativa a opção PHP display_errors.

Podes ver mensagens de erro semelhantes às seguintes no teu error_log ou diretamente no site:

PHP Fatal error: Uncaught Error: Call to undefined function sample_function() in /home/cPaneluser/...

Abaixo está um exemplo de erro causado por um ficheiro de plugin corrompido ou em falta:


Para restaurar o ficheiro em falta, basta reinstalar o tema ou plugin afetado.

NOTA: Ficheiros functions.php em falta nos temas estão frequentemente ligados ao malware wp-vcd.php, normalmente localizado no diretório /wp-includes. Antes de instalares um novo tema, remove wp-vcd.php se existir ou, se quiseres garantir total segurança, substitui todos os ficheiros padrão do WordPress conforme descrito anteriormente.

Redirecionamentos maliciosos

Em alguns casos, quando o teu site é infetado com malware, pode começar a redirecionar visitantes para páginas perigosas ou suspeitas. Este problema é normalmente causado por um plugin ou tema inseguro, que permite a atacantes alterar URLs na base de dados ou modificar ficheiros do site.

NOTA: Nunca cliques em nenhum dos links redirecionados. Isso pode infetar o teu computador pessoal com malware:


Para corrigir redirecionamentos maliciosos, segue os passos abaixo:

  1. Localiza um ficheiro de configuração da base de dados do teu site - wp-config.php no teu cPanel > Gestor de Ficheiros > pasta raiz do site. Abre o ficheiro e encontra lá o nome da base de dados do site:


  2. Depois, abre a base de dados atribuída ao teu site no menu phpMyAdmin do cPanel clicando nela e navega até à tabela wp_options (“wp_” é o prefixo padrão; o teu pode ser diferente):


  3. Revê os valores dos campos siteurl e home e, caso vejas URLs maliciosos ou suspeitos, substitui-os pelo teu domínio real: 


  4. Analisa o resto da base de dados à procura de URLs maliciosos semelhantes e substitui-os em conformidade. 

  5. Substitui temporariamente o teu .htaccess atual por uma versão padrão limpa. O ideal é renomear o ficheiro existente (por exemplo, .htaccess_old) e criar um novo de raiz.

    Para renomear o ficheiro, faz duplo clique nele > seleciona Renomear na lista > introduz um novo nome > e carrega em Renomear ficheiro.

    Depois disso, para criar um novo ficheiro, clica em + Ficheiro > dá-lhe o nome .htaccess > e seleciona Criar Novo Ficheiro.

  6. Depois de criado o novo .htaccess, edita-o clicando com o botão direito > seleciona Editar na lista. Quando a janela de edição abrir, cola as seguintes regras padrão do WordPress no ficheiro:

    # BEGIN WordPress
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    # END WordPress

  7. Clica em Guardar Alterações.

Se o teu site continuar a redirecionar, tenta substituir todos os ficheiros principais do WordPress.

Também podes desativar temporariamente todos os plugins através do painel do WordPress ou da base de dados e tentar ativá-los um a um. Depois de cada plugin ativado, verifica o site para detetar qual deles causa o problema de redirecionamento malicioso.

É necessário um email válido