
Acordar e descobrir que os sites da sua hospedagem foram infectados por malware é, sem dúvida, o pesadelo de qualquer desenvolvedor ou agência. Atualmente, injeções de código, redirecionamentos maliciosos e a criação de usuários fantasmas são táticas cada vez mais avançadas, especialmente em ambientes de hospedagem compartilhada.
Por outro lado, aqui na Neex Brasil, ao longo de nossos 15 anos de experiência e mais de 7.000 clientes atendidos, já lidamos com as mais diversas infraestruturas de TI. Recentemente, por exemplo, neutralizamos um ataque sofisticado em um ambiente de hospedagem Hostinger.
Por esse motivo, neste artigo, vamos compartilhar o nosso protocolo interno de resposta a incidentes. Em outras palavras, você aprenderá como limpar uma infecção em massa em múltiplos sites WordPress de uma só vez. Além disso, mostraremos como usar o poder do Terminal (SSH) e do WP-CLI, contornando, inclusive, algumas restrições nativas da Hostinger.
Pré-requisitos
Antes de mais nada, para seguir este tutorial, você precisará:
- Acesso SSH habilitado no seu painel (hPanel) da Hostinger.
- Um terminal (como o PuTTY no Windows ou o Terminal no Mac/Linux).
- Conhecimento básico de navegação via linha de comando.
Passo 1: Fechar as Portas de Entrada (Bloqueio na pasta Uploads)
Primeiramente, o alvo inicial dos invasores quase sempre é a pasta wp-content/uploads. Na prática, eles enviam scripts maliciosos disfarçados (arquivos .php) para dentro dessa pasta e, em seguida, os executam para ganhar o controle do servidor.
Portanto, o primeiro passo é cortar esse mal pela raiz. Sendo assim, vamos injetar um arquivo .htaccess dentro de todas as pastas de uploads do servidor para proibir a execução de scripts PHP. Para isso, acesse o seu terminal SSL. Se você não sabe como acessar, siga este tutorial feito pela Hostinger.
Após entrar pelo terminal, precisamos inserir o código abaixo, que servirá para injetar um arquivo .htaccess dentro de todas as pastas de uploads do servidor:
Bash
find /home/u732981341/domains/ -type d -path "*/wp-content/uploads" | while read dir; do echo -e "<Files *.php>\ndeny from all\n</Files>" > "$dir/.htaccess"; echo "Bloqueio aplicado em: $dir"; done
(Nota: Lembre-se de alterar u732981341 pelo seu usuário real da Hostinger).
Passo 2: Caça aos Usuários Fantasmas (Administradores Ocultos)
Geralmente, os invasores costumam criar usuários administradores com nomes aleatórios (ex: admin_28e134) e os escondem para garantir um acesso vitalício, ou seja, um backdoor. Mas então, como procurar isso em 30 ou 40 sites manualmente? A resposta é simples: usando o WP-CLI!
Logo abaixo, para listar todos os administradores de todas as instalações WordPress do seu servidor, rode o comando:
Bash
find /home/u732981341/domains/ -type f -name "wp-config.php" | while read file; do dir=$(dirname "$file"); echo -e "\n🕵️ Buscando em: $dir"; wp user list --role=administrator --field=user_login --path="$dir" --skip-plugins --skip-themes 2>/dev/null; done
Consequentemente, se encontrar usuários estranhos, você poderá deletá-los em massa. Suponha, por exemplo, que o invasor tenha criado o usuário hacker_admin. Nesse caso, o comando para aniquilá-lo de todos os sites simultaneamente é:
Bash
find /home/u732981341/domains/ -type f -name "wp-config.php" | while read file; do dir=$(dirname "$file"); wp user delete hacker_admin --reassign=1 --yes --path="$dir" --skip-plugins --skip-themes 2>/dev/null && echo "✅ Hacker deletado de $dir"; done
Passo 3: Derrubar Sessões e Invalidar Cookies
Ainda que você delete o usuário invasor, ele pode continuar logado usando um cookie ativo. Por causa disso, precisamos embaralhar as chaves criptográficas (Salts) e, ao mesmo tempo, destruir as sessões de banco de dados de todo mundo.
Como resultado, essa ação vai deslogar todos os usuários de todos os sites instantaneamente:
Bash
find /home/u732981341/domains/ -type f -name "wp-config.php" | while read file; do dir=$(dirname "$file"); echo -e "\n🔒 Trocando chaves em: $dir"; wp config shuffle-salts --path="$dir" --skip-plugins --skip-themes 2>/dev/null; wp user session destroy --all --path="$dir" --skip-plugins --skip-themes 2>/dev/null; echo "✅ Sessões encerradas!"; done
Passo 4: Atualização de Senhas em Massa
Agora que os invasores estão desconectados, é a hora exata de trocar as senhas das suas contas legítimas. No entanto, fazer isso site por site é uma enorme perda de tempo. Em vez disso, atualize as senhas das suas contas principais (usando o seu e-mail padrão de administrador, por exemplo) de uma só vez:
Bash
find /home/u732981341/domains/ -type f -name "wp-config.php" | while read file; do dir=$(dirname "$file"); wp user update [email protected] --user_pass="SuaNovaSenhaForte" --path="$dir" --skip-plugins --skip-themes 2>/dev/null && echo "✅ Senha atualizada em $dir"; done
Passo 5: Limpeza do .htaccess e Correção do PHP (O Truque na Hostinger)
Muitas vezes, a hospedagem ou plugins antigos inserem regras <IfModule mime_module> AddHandler... no seu .htaccess que, infelizmente, fixam uma versão desatualizada do PHP. Consequentemente, isso gera alertas de segurança no WordPress e pode, até mesmo, quebrar sites.
Contudo, na Hostinger, ferramentas úteis de substituição (como o perl) podem estar bloqueadas no terminal compartilhado. Apesar disso, a solução engenhosa é usar o próprio motor do PHP do servidor para ler e limpar esses blocos do arquivo .htaccess:
Bash
find /home/u732981341/domains/ -type f -name ".htaccess" | while read file; do if grep -qi "AddHandler" "$file"; then echo "🧹 Limpando bloco AddHandler em: $file"; php -r '$c = file_get_contents($argv[1]); $c = preg_replace("/<IfModule mime_module>\s*AddHandler[^\n]+\s*<\/IfModule>\s*/i", "", $c); file_put_contents($argv[1], $c);' "$file"; fi; done
Dessa forma, com os arquivos limpos, você poderá ir ao hPanel da Hostinger e atualizar todos os domínios para a versão mais recente e segura do PHP (como 8.4 ou 8.5) com um único clique.
Passo 6: A Higienização Profunda (Reinstalando o Core)
Finalmente, chegamos ao golpe de misericórdia. Para garantir, de fato, que nenhum arquivo vital do WordPress tenha código camuflado, ordenaremos que o WP-CLI baixe os arquivos originais dos servidores oficiais.
Sendo assim, ele vai sobrescrever o seu sistema, mantendo, porém, seus temas, plugins e mídias 100% intactos graças à tag --skip-content:
Bash
find /home/u732981339/domains/ -type f -name "wp-config.php" | while read file; do dir=$(dirname "$file"); version=$(wp core version --path="$dir" 2>/dev/null); if [ -n "$version" ]; then wp core download --skip-content --force --version="$version" --path="$dir" 2>/dev/null; echo "✅ Core higienizado com sucesso em $dir"; fi; done
Conclusão: Prevenção é a melhor arma
Em suma, sobreviver a uma infecção de malware exige sangue frio, visão estratégica e conhecimento técnico de infraestrutura. Logo após aplicar esse protocolo, o passo mais importante é ir ao painel da sua hospedagem e gerar um backup manual imediato.
Além disso, mantenha sempre plugins robustos, como o Elementor Pro e seus firewalls (Solid Security, Wordfence), rigorosamente atualizados.
Por fim, se a sua empresa precisa de uma infraestrutura moderna, código seguro e sites de alta performance focados em conversão, conheça as soluções da Neex Brasil. Afinal, transformamos tecnologia em alavanca de vendas há mais de uma década e meia.