Hoje em dia a segurança é mais importante até mesmo do que a implementação. Uma implementação WordPress livre de bugs que comprometam a segurança é valiosa e importante, mas o que fazer quando isso não acontece? Quais providências tomar quando isso escapa do normal e um visitante mal intencionado assume total controle da sua aplicação?
Minha instalação foi hackeada, e agora?
Acredite, isso é mais comum do que você possa imaginar, muitas vezes o hacker “minera” a falha, deixando-a ali escondida, apenas colhendo informações que podem ser sensíveis, tais como dados de usuários, senhas, dados bancários, número de cartões de crédito e outras informações que podem comprometer você e os seus usuários. Neste artigo iremos abordar práticas comuns de como hackers podem adentrar sua aplicação e como podemos corrigir este problema caso isso aconteça.
Como agem os hackers
A princípio tenha em mente que uma pessoa capaz de entrar em sua aplicação WordPress não é nada tolo, caso ele o faça ele é esperto o bastante a ponto de tirar vantagem desta falha e comprometer seus dados, ele irá manter tudo em sigilo para que você não saiba o que está acontecendo e não possa corrigir a falha. Isso dificulta a detecção da falha e consequentemente você terá dificuldade em saber de onde vem o problema, assim a falha persistirá enquanto ele extrai dados da aplicação de modo silencioso.
Práticas utilizadas para infectar seu site
Os hackers estão ficando cada vez mais sofisticados, antes haviam muitos “defaces”, que consistem em alterar a página inicial da instalação WordPress com intuito de “debochar” ou fazer chacota da segurança. Mas atualmente com crescimento da área, é de um interesse maior a obtenção de dados contidos na aplicação. Dependendo do escopo da sua aplicação, é possível que sejam armazenados dados sensíveis como citados anteriormente, até mesmo dados de cartão de crédito que podem se tornar uma grande dor de cabeça caso caia em mãos erradas.
O que devemos analisar primeiro é como seu site acaba ficando infectado. Bom… Isso é um assunto meio extenso, mas tentaremos passar os pontos mais utilizados para obter êxito nesta prática.
A maneira mais utilizada que basicamente notamos, e discutimos com outros profissionais da área e apontada como mais tradicional é a inclusão de instruções em arquivos do website. Ao explorar uma falha presente no design que a aplicação foi construída, é possível injetar instruções maliciosas, muitas vezes utilizadas para obter informações primárias que irão dar acesso ao interior da aplicação. Essas informações, muitas vezes, são constituídas de cookies, sessões ou qualquer outro dado utilizado para se passar por usuário logado.
Essas instruções podem também conter partes que criam outras falhas. Mas como assim?! A partir de uma falha, o hacker cria outras para que seja mais fácil explorar/obter as informações contidas na aplicação. Ao encontrar uma falha, o hacker utiliza do nível da vulnerabilidade para direcionar um ataque correspondente. Um exemplo seria: Imagine uma falha que permita a um usuário mal intencionado injetar um código PHP arbitrário. Ele pode, com isso, criar uma instrução interna que permite o upload de outros códigos PHP, isso pode comprometer a segurança, pois este usuário poderá enviar WebShells (arquivo que explora informações e arquivos de um servidor) ou criar consultas SQL e com isso obter toda lista de usuários contidos no seu website.
Setup do ambiente
Antes de mais nada, antes mesmo de pensar no que direcionar o foco, crie um ambiente de testes alternativo, de preferência que seja um ambiente local, pois a performance é maior e você não toca em nada de seu ambiente de produção. Assim você estará seguro durante as correções, pois se algum problema ocorrer não afetará seu software.
Como reparar seu WordPress hackeado
Para reparar uma instalação WordPress, você precisa limpar os arquivos do core do WordPress, o banco de dados, temas e plugins. Geralmente, os problemas se encontram nos temas e plugins, mas como esses compõem a instalação, eles podem servir de porta de entrada para os arquivos do core.
Identificando problemas
Na maioria dos casos, arquivos infectados possuem funções como eval() e str_rot13() que codificam uma string dificultando o entendimento do por quê ela estar ali ou o que ela faz. Essa string usada em eval() é executada como código PHP, por isso devemos pesquisar dentro do nosso código em busca dessas funções que podem expor sua instalação à vulnerabilidades.
Essas funções exitem nas principais linguagens usadas no core e plugins do WordPress, fique atento a elas e as remova. Essas strings codificadas podem também estar presentes em seu banco de dados, podem ser recuperadas e executadas de forma arbitrária levando a efeitos colaterais que podem comprometer sua instalação.
Atualizando
Outro ponto importante é atualizar todos os componentes, assim, ao atualizar, os arquivos infectados serão sobrescritos por arquivos livres de problemas. É bom ficar atento ao fato de que caso hajam arquivos com nomes diferentes daqueles contidos nas atualizações, estes não serão sobrescritos, então voltamos a bater na mesma tecla de pesquisar por strings que possam conter instruções que levem sua instalação WordPress à falhas.
Após atualizar, certifique-se de que tudo está em ordem antes de subir suas alterações para um servidor de produção. Muitas vezes essas atualizações podem levar a comportamentos inesperados, pois atualizações nada mais são que melhorias no software em questão. Essas melhorias envolvem alteração do estado atual em que se encontram sua aplicação, por isso sempre verifique se está tudo funcionando antes de realizar a atualização em ambiente de produção.
Conclusão
O bom senso é sempre o mais importante. Caso seu site seja hackeado ou invadido e você não domina bem o assunto, existem alguns artigos deste blog que gostaríamos de recomendar, listaremos logo abaixo. Caso você detecte alguma irregularidade, desative a edição de temas e plugins imediatamente, coloque uma página de manutenção e corrija o problema antes que se torne uma bola de neve e seus dados ou de seus clientes sejam comprometidos.
Espero que o artigo tenha ajudado, caso queira complementar ou tirar dóvidas é só postar nos comentários.