Site WordPress hackeado com spam de cassino: como identificamos e removemos o malware da TourReview
Spam de cassino em francês injetado via banco de dados comprometido, não plugin desatualizado. Reparo completo em 5 fases, do malware ao QA.
O alerta
Se o seu site WordPress começou a exibir blocos de texto em francês promovendo cassinos online — ou o Google Search Console alertou sobre conteúdo suspeito indexado — o primeiro instinto é suspeitar de um plugin desatualizado. Nem sempre é esse o problema. Foi o que encontramos ao investigar o site da TourReview, SaaS B2B de gestão de reputação online para operadores de turismo, cliente via Workana: o site apresentava spam promovendo um cassino (mystakecasinobet.com) repetido em múltiplas páginas. A causa raiz não estava em nenhum plugin — estava direto no banco de dados, comprometido por um usuário backdoor criado a partir de uma credencial vazada.
Regra do projeto: nunca atualizar com malware ativo
Atualizar plugins antes de identificar e remover o vetor de infecção pode mascarar como o invasor entrou, dificultando a remoção completa depois. A investigação veio primeiro: a injeção estava nas tabelas `wpuw_posts` e `wpuw_postmeta`, sem nenhum arquivo PHP comprometido. O vetor foi um usuário backdoor (`Af17lN8wTX`) criado via acesso ao banco ou credencial vazada — deletado permanentemente após confirmação.
Depois do malware: reinstalação limpa
Depois da remoção, o WordPress e 21 plugins foram atualizados, incluindo um Elementor Pro nulled (pirata, versão 3.8.0) removido e substituído por uma licença legítima. A instalação antiga foi descartada e uma reinstalação limpa promovida como único WordPress ativo na conta, com os uploads (325MB) restaurados do backup pré-limpeza.
QA com metodologia contra o ruído
Testes de Lighthouse em hospedagem compartilhada mostravam variação de 14 a 23 pontos entre execuções idênticas do mesmo teste — ruído do servidor de origem, não das otimizações aplicadas. A solução foi medir por mediana de 5 execuções por página, em vez de confiar em um único resultado, para não tomar decisões técnicas em cima de uma medição que era só imprecisão estatística.
Resultado
23 páginas e cerca de 70 posts de blog verificados, todos 200 OK. Scan completo do Wordfence sem nenhuma ocorrência maliciosa restante. Hardening aplicado: xmlrpc.php bloqueado, bloqueio de força bruta, admin próprio da Crazy Diamond criado para manutenção futura. Nenhum item técnico bloqueia a entrega — o que resta depende só de decisões da própria cliente (reconexão do feed do Instagram, chave do Akismet), sem impacto no escopo principal já concluído.