Limpiar Wordpress de Malware

Dagoberto Medina
6 min readOct 9, 2020

Contexto

Contar con un sitio en wordpress conlleva una gran responsabilidad, especialmente si está orientado a ecommerce.

La mejor manera de proteger un sitio es la prevención. Cloudflare por ejemplo ofrece medidas como page rules y firewall rules que ayudan mucho a este caso, además; un buen entorno de producción puede contrarrestar la mayoría de posibles puertas de entrada a usuarios malintencionados.

Otra medida de prevención es estar al tanto de posibles fallos de seguridad en los plugins y atender si llegamos a saber que usamos alguno de los reportados. Además de esto es importante tener nuestro sitio actualizado y también nuestros plugins y themes.

Sin embargo, el motivo de este artículo es ayudar a los desarrolladores que tienen que lidiar con este problema. En mi caso, un conocido sufrió un problema asociado con malware debido a un plugin afectado recientemente. No fue removido o actualizado a tiempo en uno de sus sitios, lo que abrió un backdoor y se convirtió en un dolor de cabeza por resolver.
El plugin de la discordia fue Wordpress File Manager, Wordfence publicó en su blog sobre el caso el 4 de septiembre: https://www.wordfence.com/blog/2020/09/millions-of-sites-targeted-in-file-manager-vulnerability-attacks/

Resolviendo el problema

Ok, vamos a proceder. No existe una receta exacta para remover malware, pero la idea de esta guía es colaborar con algunos pasos que pueden ayudar. Si usted tiene extra tips y sugerencias, se le invita a comentarlos para mejorar este artículo.
Se asume que tiene accesos al servidor y que puede instalar dependencias al gusto para resolver el issue.

  1. Instalar y usar Wordfence: En Wordpress, este plugin ofrece muchas opciones para proteger el sitio y hace scan en busca de archivos infectados.

1.a Instalar o actualizar la version de Wordfence

Verificar si cuenta con la versión mas actualizada de Wordfence

1.b Ir al plugin y agregar estas opciones para un escaner mas intrusivo (your-wp.com/wp-admin/admin.php?page=WordfenceScan&subpage=scan_options)

Marcamos estas opciones
Estas también, aunque el Scan files outside your WP installation es un extra si usted siente que su malware es intrusivo

1.c Procedemos a realizar el scan (your-wp.com/wp-admin/admin.php?page=WordfenceScan)

Hacemos click en Start New Scan, por lo general esta opción resulta intuitiva

1.d Luego de esperar, debemos ver un lista de resultados como estos:

Resultados del scan

Debemos revisar todos estos resultados, la mayoría de ellos son fáciles de remover por Wordfence, pero en mi caso, me llama la atención este:

Un archivo con acceso publico, significa que probablemente esa carpeta “hello” dentro de plugins necesite un ajuste de permisos. Lo resolveremos en pasos posteriores.

Finalmente, decimos a Wordfence que borre todos los archivos. “DELETE ALL DELETABLE FILES” en la esquina superior derecha de los resultados.

Si luego de borrar lo que se pudo borrar sigue viendo resultados maliciosos, debe escoger uno por uno, y hacer un repair. En mi caso tuve que reparar alrededor de 5 archivos, desde el index.php hasta el wp-config.php.

Para este último, el wp-config.php debe ser limpiado manualmente. Es sencillo, pero un poco complejo sino está acostumbrado a editar este archivo en WP. Por otra parte, debemos revisar si otros archivos necesitarán ser removidos o editados manualmente.
Este proceso es más tedioso, pero es necesario que no se quede ninguno sin resolver.

2. Removiendo y editando archivos

2.a Luego de obtener resultados de Wordfence, mi recomendación es entrar al server via SSH y editar cada archivo manualmente. Si usa git puede hacer un git pull y sobreescribir archivos core de wordpress primeramente.

Los comandos útiles serian:

sudo nano yourfile.php
rm yourfile.php

2.b Procedemos a remover líneas similares a esta:

Eliminamos todas las lineas con un “@include” que veamos

Listo, a este punto, sugiero realizar un nuevo Wordfence Scan.

3. Si luego de un nuevo Wordfence Scan no obtenemos malware, podemos proceder a revisar permisos de acceso en nuestras carpetas. Recordando, los resultados del scan nos dieron una pista de un archivo con permisos públicos, así que vemos hasta ahí a revisar los accesos en ese folder:

Vamos hasta la carpeta hello.

3.a Remover la carpeta del “plugin” hello.

sudo rm -R hello/

3.b Permisos correctos

Primero, reasignar a todo el directorio de wordpress los permisos originales

sudo chown -R www-data:www-data /wp-directory

Segundo, vamos a revisar que todos los directorios dentro tengan los permisos correctos de esta manera:

find /var/www/wp-directory -type d -print0 | xargs -0 chmod 755

Tercero, lo mismo, pero con archivos

find /var/www/wp-directory -type f -print0 | xargs -0 chmod 644

Nota, si usted obtiene muchos errores al ejecutar estos comandos, puede convertirse en sudo user con sudo su (usar sudo delante del comando no funciona como se requiere..)

3.c Removemos carpetas extrañas y poco comunes que no pertenecen a una instalación convencional de wordpress (sugiero contar con un backup previamente):

Toda carpeta extraña que no sea normal a un WP se debe borrar

También puede borrar otros archivos que no se necesitan:

Ojo con .well-known suele estar presente si usa un ssl propio (como con Lets Encrypt). En mi caso no tenia porque estar ahí. El archivo nginx.conf estaba vacío y no debía tampoco porque existir ahí.

4. Instalar clamav en el servidor (antivirus)

Se sugiere instalar clamav para revisar adicionalmente el server en busca de virus.

4.a Primero corremos este comando para instalarlo en el servidor (un server basado en debian para este caso)

sudo apt-get update

sudo apt-get install clamav

4.b Verificamos la versión instalada

clamscan — version

4.b Usamos este comando para realizar un scan y borrar de paso cualquier archivo malicioso (esto puede tomar un tiempo)

clamscan -r — bell -i /var/www/your-wp-directory/

Al terminar, obtendrá los resultados así:

Y listo, de esta manera puede limpiar su instalación de Wordpress de Malware.

Recuerde mantener su sitio, themes y plugins actualizados.

Algunas recomendaciones adicionales:

Como recomendación adicional, haga cambio de clave a todos los usuarios que pueden acceder a /wp-admin

Recuerde que su archivo wp-config.php pudo ser visto y comprometido, por lo tanto es recomendable cambiar los salts de su instalación y las claves y usuarios de su base de datos.

Otro tip, puede volver a realizar un Wordfence Scan, pero esta vez en modo High Sensitive para descartar cualquier otro potencial backdoor.

Se realiza desde your-site.com/wp-admin/admin.php?page=WordfenceScan&subpage=scan_options

Hacemos click en SAVE CHANGES

Otro tip, es bajar un backup del sitio en su computadora y con un editor como phpstorm, sublime, etc.. hacer un search buscando cosas como base64, base64_decode, eval o eval(base64_decode

Estos serian los pasos usados para limpiar el sitio con Malware de Wordpress. Si usted conoce alguna forma más fácil y rápida puede compartirla acá!

Sign up to discover human stories that deepen your understanding of the world.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

Dagoberto Medina
Dagoberto Medina

Written by Dagoberto Medina

Full Stack & DevOps. Cybersecurity enthusiast and continuous improvement.

No responses yet

Write a response