Limpar um site WordPress infectado por algum malware pode ser bem trabalhoso, mas há comandos do WP-CLI que podem ajudar e agilizar algumas tarefas.
Reinstalar plugins
Como códigos maliciosos são comumente injetados em plugins válidos, é altamente recomendado reinstalar todos os plugins diretamente do repositório de plugins do WordPress.
Para verificar se o código de algum plugin está diferente do código disponível no repositório de plugins do WordPress, use o comando wp plugin verifiy-checksums:
$ wp plugin verify-checksums --all
Caso esse comando informe que arquivos e códigos dos plugins instalados em seu site são diferentes da versão no repositório de plugins do WordPress, será necessário reinstalá-los. Em sites com dezenas de plugins, essa tarefa pode ser bem demorada caso feita manualmente mas o WP-CLI pode fazer isso com apenas um comando (dois comandos aninhados para ser mais sincero):
$ wp plugin install $(wp plugin list --field=name) --force
Essa linha é a junção de dois comandos disponíveis em wp plugin (install e list). Em resumo, o comando mandará o WordPress instalar os plugins listados pelo comando entre $(), no caso, todos os plugins. Atenção para o parâmetros --field=name
que retornará apenas o nome do plugin (única informação necessária nesse momento) ao invés de todos seus detalhes e --force
para remover os arquivos durante a instalação.
Se você quiser instalar apenas um único plugin, use este comando substituindo slug-do-plugin
pelo slug real:
$ wp plugin install slug-do-plugin --force
Infelizmente, o comando wp plugin install
não consegue instalar plugins que não estejam disponíveis no repositório de plugins do WordPress (normalmente plugins pagos) sendo necessário instalá-los manualmente.
Reinstalar temas
Reinstalar temas também é recomendado para garantir que a versão instalada esteja livre de códigos que possam ter sido adicionados por malwares. Infelizmente, o comando wp theme
não possui um verify-checksums
para chamar de seu, nesse caso o mais seguro é reinstalar os temas:
$ wp theme install $(wp theme list --field=name) --force
Essa linha também é uma junção de dois comandos assim como o exemplo anterior, porém, agora para temas. wp theme (install e list).
Assim como o comando plugin install
, esse comando só consegue instalar temas disponíveis no repositório de temas do WordPress.
Como o WordPress precisa de um único tema para funcionar, eu acho mais interessante revisar os temas instalados no site e remover todos os temas desnecessários deixando apenas o tema ativo nele. Caso queira remover todos os temas inativos do site, use este outro comando:
$ wp theme delete $(wp theme list --field=name --status=inactive)
Esse comando usa o já citado theme list (com um novo parâmetro para listar apenas temas inativos) e o theme delete.
Redefinir a senha de todos os usuários
Após remover manualmente usuários que possam ter sido criados indevidamente durante uma infecção, também aconselho redefinir a senha dos demais usuários para garantir que as contas continuem seguras. Isso pode ser feito com esta linha:
$ wp user reset-password $(wp user list --field=ID)
O comando wp user reset-password redefinirá a senha de todos os usuários retornados pelo comando wp user list.
Caso você queira redefinir a senha de usuários com uma função específica no WordPress, você pode adicionar o parâmetro --role
ao list
assim:
$ wp user reset-password $(wp user list --field=ID --role=administrator)
Gerar novos Salts
A cereja do bolo na hora de limpar um site é gerar novas chaves únicas e Salts para seu arquivo wp-config.php com o comando wp config shuffle-salts:
$ wp config shuffle-salts
O Salts do WordPress é composto por um conjunto de chaves de segurança única salvas no wp-config.php que ajudam a fortalecer ainda mais as senhas geradas criptografando-as. Além disso, criar novos Salts fará com que todos os usuários logados no site sejam desconectados, ajudando a remover sessões indesejadas.
Dica bônus
Se você quiser adicionar uma camada de segurança ao seu site WordPress.org, recomendo fortemente o Jetpack Security que oferece recursos como:
- Todas as funcionalidades do Jetpack VaultPress Backup.
- Todos os recursos do Jetpack Scan.
- Proteção anti-spam do Akismet.
- Varredura de malware em tempo real.
- Firewall (WAF beta).
Caso você esteja estudando uma nova hospedagem para seu site, os planos Negócios e eCommerce do WordPress.com incluem os recursos do Jetpack, além de uma estrutura otimizada para o WordPress e acesso SSH necessário para usar o WP-CLI.
Apesar de ainda ser necessário analisar manualmente as demais pastas de sua instalação WordPress (algo que o Jetpack Security faz por você), reinstalar plugins e temas, redefinir senha dos usuários e criar novos Salts de uma forma quase automática ajuda bastante no processo de limpeza do site.