Cómo detectar y eliminar malware en WordPress y PrestaShop (Guía práctica)
¿Tu web va lenta? ¿Los visitantes ven anuncios raros? ¿Google te marca como sitio peligroso? Respira. Esto no es el fin del mundo. Es muy probable que tengas malware, pero la buena noticia es que tiene solución. En esta guía práctica y sin tecnicismos, te voy a enseñar cómo detectar y eliminar malware en WordPress y PrestaShop paso a paso, incluso si nunca has hecho algo así.
Vamos a ponernos el traje de detective digital y limpiar tu casa online. No necesitas ser un hacker, solo seguir el orden correcto.
Primero, ¿Qué es el malware y por qué te atacan a ti?
El malware es cualquier software malicioso que se instala en tu servidor sin tu permiso. No es personal, no es porque tu web sea famosa. Los bots atacan por miles, buscando cualquier vulnerabilidad.
Estos programas hacen de todo: robar contraseñas de tus clientes, redirigir tu web a páginas de apuestas, enviar spam en tu nombre o usar tu servidor para atacar a otros. El daño más grave es la pérdida de confianza: si Google marca tu sitio como peligroso, las visitas caen en picado.
Pero no te preocupes. El proceso de limpieza es como quitar una plaga de hormigas: hay que encontrar el nido, no solo matar a las que ves.
Fase 1: Detección de malware (El diagnóstico)
Antes de limpiar, hay que confirmar que hay infección y saber qué tipo es. No actúes a ciegas o podrías romper algo bueno.
Señales claras de infección
A veces el malware es muy evidente, pero otras se esconde. Estate atento a estos síntomas:
- Avisos de Google: Si buscas
site:tudominio.comy ves "Este sitio puede haber sido pirateado", es una señal inequívoca. - Redirecciones extrañas: Haces clic en tu página y te lleva a otra web de apuestas o farmacias.
- Ventanas emergentes (pop-ups): Aparecen anuncios que no has creado, incluso en tu escritorio al navegar.
- Rendimiento horrible: Tu web tarda una eternidad en cargar. El malware consume recursos del servidor.
- Nuevos usuarios o archivos: Ves en tu panel de administración usuarios que no creaste, o archivos con nombres raros (como
c0d3x.php). - Correos de tu proveedor: Tu hosting te avisa de que hay "actividad maliciosa" o que han puesto la cuenta en cuarentena.
[WARNING] Si tu web está en cuarentena por tu hosting, no intentes abrirla directamente. Trabaja desde el panel de control (cPanel, Syspanel, etc.) y con FTP. El objetivo es limpiar los archivos antes de reactivar el sitio.
Herramientas online gratuitas (El primer escáner)
No necesitas instalar nada para empezar. Usa estos escáneres externos:
- Sucuri SiteCheck (sucuri.net): Analiza tu dominio y te dice si hay malware, redirecciones o listas negras. Es el más popular.
- Quttera (quttera.com): Otro escáner externo muy completo que detecta incluso inyecciones en archivos core.
- VirusTotal (virustotal.com): Pega la URL de tu web para ver si algún motor antivirus la marca como peligrosa.
Estas herramientas son un buen punto de partida, pero no son 100% fiables. Si no encuentran nada pero sigues teniendo problemas, pasa a la inspección manual.
Escaneo manual con FTP (El detective en casa)
Aquí es donde nos arremangamos. Necesitas un cliente FTP (como FileZilla) y las credenciales de acceso a tu servidor (las tienes en tu panel de hosting).
Conéctate y revisa estas carpetas:
/wp-content/uploads/: Es un lugar común para esconder archivos PHP maliciosos (que parecen imágenes)./wp-content/plugins/y/wp-content/themes/: Busca archivos extraños que no reconozcas, o versiones de plugins que no instalaste.- La raíz (public_html): Mira los archivos
.htaccess,index.phpywp-config.php. Son los más atacados.
¿Qué buscas exactamente?
- Archivos con extensiones raras:
.phpdentro de carpetas de imágenes. - Archivos con nombres de codificación:
base64.php,eval.php,r57.php. - Archivos modificados recientemente (por fecha) que no recuerdes haber tocado.
- Líneas de código encriptado (una sola línea muy larga llena de
eval(base64_decode(...))) en archivosindex.php.
[TIP] Si no sabes qué espera, compara. Descarga una copia limpia de WordPress o PrestaShop del sitio oficial y compárala con la tuya. Cualquier diferencia en los archivos del núcleo es sospechosa.
Fase 2: Preparación para la limpieza (El plan de batalla)
No entres a lo loco. Si eliminas archivos sin saber qué haces, puedes romper la web. Sigue este orden.
1. Haz una copia de seguridad (Backup) YA
Esto es lo más importante. Antes de tocar nada, necesitas una copia de seguridad del estado actual (aunque esté infectado). Te servirá para restaurar si algo sale mal durante la limpieza.
Hazla desde el panel de tu hosting (cPanel, Syspanel, etc.) o con un plugin como UpdraftPlus en WordPress. Guarda la copia en tu ordenador y en la nube.
[WARNING] Esta copia está infectada. No la uses para restaurar el sitio directamente. Solo es para emergencias y para poder examinar los archivos con calma.
2. Cambia todas tus contraseñas
El malware suele entrar por una contraseña débil. Cambia:
- La contraseña del administrador de WordPress/PrestaShop.
- La contraseña de la base de datos (desde el hosting).
- La contraseña del FTP.
- La contraseña del correo asociado al dominio.
Usa contraseñas largas y únicas para cada cosa. Un gestor de contraseñas te facilita la vida.
3. Identifica el punto de entrada (La puerta de entrada)
¿Por dónde entraron? Las causas más comunes son:
- Plugins o temas desactualizados: Es la puerta principal. Si tienes un plugin de hace 2 años sin actualizar, es como dejar la llave puesta en la cerradura.
- Contraseñas débiles:
adminy123456no son contraseñas, son invitaciones. - Hosting comprometido: A veces el malware está en otro sitio del servidor y salta al tuyo.
No siempre sabrás el punto exacto, pero al menos intenta actualizar todo lo que esté desactualizado para cerrar la puerta.
Fase 3: Eliminar malware WordPress (La limpieza quirúrgica)
WordPress es el sistema más atacado, así que tiene más herramientas. Vamos a por él.
Paso 1: Actualiza TODO
Ve a tu panel de administración de WordPress y actualiza:
- El núcleo de WordPress (si hay una versión nueva).
- Todos los plugins.
- Todos los temas.
Si no puedes acceder al panel porque la web está caída, descarga los archivos de actualización y súbelos por FTP, o usa el panel de tu hosting si tiene un instalador automático que te permita actualizar.
Paso 2: Reinstala el núcleo de WordPress
Esto es un truco genial. Descarga la última versión de WordPress desde wordpress.org. Descomprime el archivo. Ahora, sube por FTP solo la carpeta wp-admin y wp-includes a tu servidor, sobrescribiendo los archivos existentes. Esto reemplaza los archivos del núcleo que estén infectados con versiones limpias.
No toques la carpeta wp-content porque ahí están tus plugins, temas y medios.
Paso 3: Desactiva todos los plugins (Modo seguro)
Si no puedes entrar al panel, renombra la carpeta wp-content/plugins a wp-content/plugins_fuera. Esto desactiva todos los plugins de golpe. Entra a tu web. Si ahora carga bien, el problema estaba en un plugin.
Luego, ve creando una carpeta plugins nueva, y ve moviendo los plugins de uno en uno desde plugins_fuera a plugins. Después de mover cada uno, revisa tu web. Cuando encuentres el que da problemas, lo sabrás porque la web vuelve a fallar.
Paso 4: Limpia los archivos infectados a mano
Vuelve al FTP. Ahora que tienes los archivos del núcleo limpios, revisa las carpetas de wp-content:
uploads/: Busca archivos.phpo.phtml. Si los encuentras, descárgalos para revisarlos, y luego elimínalos. No necesitas archivos PHP en tu carpeta de imágenes.themes/: Revisa elfunctions.phpde tu tema activo. Busca código extraño al final del archivo (como una línea larga debase64). Si lo ves, elimina esa línea.plugins/: Haz lo mismo con los archivos de los plugins que uses.
Paso 5: Limpia la base de datos
El malware también se esconde en la base de datos, especialmente en la tabla wp_options. Usa un plugin de seguridad como Wordfence o iThemes Security para escanear la base de datos en busca de código malicioso.
Si no quieres usar plugins, puedes entrar a phpMyAdmin (desde tu hosting), buscar en la tabla wp_options y revisar las filas que tengan valores extraños o código encriptado.
[INFO] Si no te sientes cómodo tocando la base de datos, los plugins de seguridad son tu mejor amigo. Tienen escáneres de malware que detectan y eliminan inyecciones SQL y código malicioso automáticamente.
Fase 4: Limpiar malware PrestaShop (El caso especial)
PrestaShop es un poco más complejo porque tiene más archivos y carpetas. El proceso es similar, pero con matices.
Paso 1: Actualiza PrestaShop y los módulos
Igual que en WordPress, la desactualización es el principal problema. Entra a tu back-office (tu panel de administración) y actualiza todo lo que puedas: el núcleo de PrestaShop, los módulos y los temas.
Paso 2: Reinstala el núcleo (Core)
Descarga la versión de PrestaShop que tienes instalada (mírala en tu back-office). Descomprímela. Ahora, sube por FTP las carpetas admin, classes, controllers, src y vendor, sobrescribiendo las existentes en tu servidor.
No subas la carpeta img ni modules, porque ahí tienes tus propias imágenes y módulos.
Paso 3: Revisa la carpeta cache y var/cache
PrestaShop guarda archivos en caché que a veces se infectan. Borra el contenido de estas carpetas, pero no borres las carpetas en sí. Esto es seguro y a menudo elimina archivos maliciosos.
Paso 4: Inspecciona los módulos
Al igual que en WordPress, los módulos de terceros son el punto débil. Revisa la carpeta modules por FTP. Busca archivos .php con nombres extraños o carpetas que no reconozcas.
Un truco: en PrestaShop, los módulos suelen tener una estructura estándar. Si ves una carpeta con un solo archivo .php raro, es sospechoso.
Paso 5: La base de datos de PrestaShop
En PrestaShop, el malware suele inyectarse en la tabla ps_connections o ps_connections_page. Usa un escáner de seguridad (como el de tu hosting) o revisa manualmente estas tablas en phpMyAdmin buscando campos inyectados.
[WARNING] PrestaShop es más sensible a errores de sintaxis. Si borras algo de la base de datos sin saber qué es, puedes romper la tienda. Ve con mucho cuidado y, si tienes dudas, consulta con un profesional.
Fase 5: Después de la limpieza (El refuerzo)
Has eliminado el malware. Ahora toca blindar la web para que no vuelva a pasar. Esto es tan importante como la limpieza.
1. Refuerza la seguridad (WordPress)
- Cambia el prefijo de la base de datos: No es fácil, pero si usas
wp_, los atacantes lo saben. Puedes cambiarlo con un plugin como "Change DB Prefix". - Instala un firewall: Un plugin como Wordfence o Cloudflare (versión gratuita) filtra el tráfico malicioso antes de que llegue a tu web.
- Activa la autenticación de dos factores (2FA): Esto añade una capa extra de seguridad para entrar en tu panel de administración.
- Limita los intentos de acceso: Evita que los bots prueben miles de contraseñas.
2. Refuerza la seguridad (PrestaShop)
- Activa el modo mantenimiento: Cuando hagas cambios, pon tu tienda en mantenimiento para que los visitantes no vean errores.
- Usa contraseñas robustas para el back-office y la base de datos.
- Mantén todo actualizado: Es la medida más eficaz. Configura actualizaciones automáticas si es posible.
3. Seguridad a nivel de servidor
- Accede siempre por SFTP o SSH, nunca por FTP sin cifrar.
- Revisa los logs: Tu hosting suele tener logs de acceso. Si ves peticiones raras a archivos
.phpque no existen, es una señal de alerta. - Pregunta a tu hosting: Si tu plan lo permite, activa un firewall de aplicación web (WAF) a nivel de servidor.
[TIP] Si tu hosting usa Syspanel (accesible en el puerto 2106), busca la sección de "Seguridad" o "Gestor de archivos". Allí puedes ver los permisos de los archivos y cambiar las contraseñas de la base de datos de forma segura.
Fase 6: Recuperación y prevención (El futuro)
La limpieza no termina cuando la web vuelve a funcionar. Hay que verificar y mantener.
Verifica que Google te ha perdonado
Si Google marcó tu web como peligrosa, tienes que solicitar una revisión. Ve a Google Search Console, en la sección "Problemas de seguridad", y solicita la revisión. Explica que has limpiado el malware y que has tomado medidas de seguridad. Tardan unos días en responder.
Programa escaneos regulares
No te olvides del tema. Configura escaneos de seguridad automáticos semanales con tu plugin de seguridad. Es como pasar la ITV de tu web.
Mantén un registro de cambios
Anota qué archivos modificas y cuándo. Si vuelve a pasar, te será más fácil encontrar el problema.
Preguntas frecuentes (FAQ)
¿Cuánto cuesta eliminar malware de una web?
Si lo haces tú, solo te cuesta tiempo. Si contratas un servicio profesional, puede costar entre 50 y 500 euros, según la gravedad y el tamaño de la web.
¿Qué hago si mi web está en cuarentena en el hosting?
No intentes acceder a ella. Trabaja desde el panel de control (cPanel, Syspanel) y con FTP. Limpia los archivos y luego pide a tu hosting que la desbloquee.
¿Puedo eliminar malware solo con un plugin?
Los plugins son muy útiles, pero no son infalibles. El malware más avanzado se esconde muy bien. Es recomendable combinar el uso de plugins con la inspección manual que te he enseñado.
¿Debo contratar un servicio de limpieza profesional?
Si tu web es una tienda online con muchos clientes, si no tienes tiempo o si el malware es muy complejo, sí merece la pena. Ellos tienen herramientas más potentes y experiencia para encontrar todo el malware.
¿Por qué me infectaron si tengo un hosting "seguro"?
Ningún hosting es 100% seguro. La seguridad es una responsabilidad compartida. Ellos protegen el servidor, pero tú tienes que proteger tu aplicación (WordPress, PrestaShop) y tus contraseñas.
Conclusión final
Eliminar malware de WordPress o PrestaShop es un proceso metódico que requiere paciencia, pero no es imposible. Recuerda el orden: detectar, hacer backup, actualizar, limpiar archivos, limpiar base de datos y reforzar la seguridad.
No te saltes pasos y, sobre todo, no te confíes. La seguridad web
