Eliminar malware en WordPress paso a paso seguro
Eliminar malware en WordPress paso a paso seguro: guía práctica para limpiar tu web, evitar reinfecciones y recuperar acceso sin perder datos ni SEO.
Índice
- Señales de infección en WordPress
- Antes de empezar: copias, accesos y prioridades
- Aislar la web y cortar el daño en minutos
- Diagnóstico fiable: qué mirar y qué descartar
- Limpieza manual: archivos más usados por malware
- Reinstalación segura: core, themes y plugins
- Usuarios, permisos y claves: el 70% del problema
- Base de datos y opciones: trampas habituales
- Blindaje post limpieza: hardening y monitorización
- Preguntas frecuentes
Señales de infección en WordPress
Cuando un WordPress se infecta, rara vez aparece un aviso claro que diga “tengo malware”. Lo habitual es notar síntomas dispersos: redirecciones a webs de apuestas o contenido para adultos, pop ups extraños, URLs nuevas que Google indexa sin que nadie las haya creado, o una caída repentina de tráfico. También son frecuentes la pantalla en blanco, el error crítico al entrar al panel, o un consumo inusual de CPU y memoria en el hosting. Si el proveedor te ha enviado un correo alertando de archivos maliciosos o de envío masivo de correo, tómalo en serio: muchos ataques convierten tu web en una plataforma para spam.
Una señal especialmente relevante es la “normalidad aparente” en el escritorio de WordPress mientras los visitantes ven otra cosa. Esto ocurre cuando el malware detecta el user agent, la IP o si el visitante viene desde Google, y solo entonces activa la redirección o el contenido inyectado. Otra pista es que las redirecciones solo aparezcan en móvil o solo desde ciertas ubicaciones. En SEO, la típica alarma es Search Console indicando problemas de seguridad, páginas hackeadas o “contenido engañoso”.
Conviene distinguir entre un fallo por actualización y una infección. Un conflicto de plugin suele romper la web de golpe tras una actualización reciente, y suele resolverse desactivando el plugin. En cambio, el malware suele dejar rastro: archivos nuevos con nombres parecidos a los de WordPress, funciones ofuscadas, tareas programadas que reaparecen, y usuarios administradores que nadie reconoce.
Qué ocurre en la práctica
Caso típico: una web sigue “bien” para el propietario (logueado) pero redirige a spam a quien entra desde Google. Error frecuente: limpiar solo el archivo .htaccess o solo un plugin y darlo por resuelto. Recomendación concreta: confirma el problema con una navegación en incógnito desde otra red y revisa Search Console para ver si Google detecta hackeo.
Antes de empezar: copias, accesos y prioridades
Eliminar malware en WordPress paso a paso seguro empieza por ordenar prioridades. La primera es preservar evidencia y datos. Aunque suene contraintuitivo, no empieces borrando a ciegas. Haz una copia completa de archivos y base de datos, incluso si están infectados. Esa copia sirve para recuperar contenido, comparar cambios y, si algo sale mal, volver a un punto anterior para hacerlo mejor. Guárdala fuera del servidor, por ejemplo en tu ordenador o en un almacenamiento externo.
A continuación, asegúrate de tener accesos: panel de hosting, FTP o SFTP, base de datos (phpMyAdmin o credenciales), y si es posible acceso SSH. Si el panel de WordPress no funciona, casi siempre podrás actuar desde el hosting. Reúne también información útil: cuándo empezó el problema, si hubo actualizaciones recientes, si se instalaron plugins nuevos, si hay usuarios nuevos, y si se ha compartido la contraseña con terceros.
Otra prioridad es evitar más daños. Si la web está enviando spam o infectando a visitantes, te interesa frenar el tráfico mientras trabajas. Además, si es una web con pagos o datos sensibles, evalúa si existe riesgo de exposición y considera comunicarlo internamente. En entornos profesionales, se recomienda cambiar claves antes incluso de limpiar, pero con un matiz: si el atacante sigue dentro, verá el cambio. Por eso, lo ideal es cambiar claves después de aislar el sitio, y luego repetir cambios al final para asegurar que no se reintroducen.
- Haz copia completa de archivos y base de datos, guarda fuera del servidor.
- Verifica accesos a hosting, SFTP, base de datos y correo asociado al dominio.
- Identifica el alcance: solo front, también panel, también correo, también subdominios.
- Prepara una ventana de mantenimiento para no tocar el sitio con usuarios activos.
Qué ocurre en la práctica
Caso típico: se intenta “arreglar rápido” borrando carpetas y se pierde el wp-content con imágenes y subidas. Error frecuente: confiar en la copia automática del hosting sin descargarla, luego no está disponible cuando hace falta. Recomendación concreta: descarga la copia y comprueba que incluye wp-content y la base de datos antes de tocar nada.
Aislar la web y cortar el daño en minutos
El aislamiento reduce el impacto y evita reinfecciones mientras limpias. La forma más limpia es activar un modo mantenimiento desde el hosting, o redirigir temporalmente el dominio a una página estática de mantenimiento. Si no puedes, al menos protege el acceso a wp-admin con contraseña a nivel de servidor, o limita por IP si trabajas desde una ubicación fija. Esto detiene bots que intentan explotar la vulnerabilidad una y otra vez.
Si hay sospecha de que se ha comprometido el correo, revisa el buzón asociado al dominio y el panel DNS. Cambiar DNS sin control puede causar problemas, pero verificar registros es clave: algunos ataques alteran el registro A o añaden subdominios para phishing. Revisa también si hay redirecciones en el panel del hosting (redirects), reglas extrañas en .htaccess, o configuraciones de proxy tipo Cloudflare que hayan sido modificadas.
Un paso rápido con alta eficacia es desactivar temporalmente plugins renombrando la carpeta wp-content/plugins a otra cosa, por ejemplo plugins.off. WordPress desactivará plugins automáticamente. Si tras eso desaparece el síntoma, ya sabes que hay una alta probabilidad de que el vector esté en un plugin, o en un archivo dentro de esa carpeta. Haz lo mismo con el theme si sospechas: renombra el theme activo para forzar un theme por defecto.
- Activa mantenimiento y protege wp-admin con contraseña adicional.
- Renombra plugins para desactivar todo y observar cambios.
- Revisa si hay redirecciones configuradas en el hosting y en el DNS.
- Si hay tráfico malicioso, bloquea temporalmente por país o por patrones.
Qué ocurre en la práctica
Caso típico: el cliente insiste en que “no se puede parar la web”. Error frecuente: seguir trabajando con la web abierta, y el malware vuelve a entrar por el mismo agujero durante la limpieza. Recomendación concreta: acuerda una ventana breve de mantenimiento y prioriza cortar accesos automáticos antes de limpiar archivos.
Diagnóstico fiable: qué mirar y qué descartar
Un diagnóstico fiable se basa en evidencias, no en “instalar un plugin y ya”. Los escáneres ayudan, pero el malware moderno se camufla. Empieza por lo básico: revisa el gestor de archivos o SFTP y ordena por “fecha de modificación”. Los ataques suelen dejar picos claros: decenas de archivos tocados el mismo día y hora. Busca archivos PHP nuevos en carpetas donde no deberían existir, como wp-content/uploads. Esa carpeta debería contener imágenes, PDF y contenido, no ejecutables.
Mira archivos críticos: wp-config.php, .htaccess, index.php del root, y archivos del theme activo como functions.php. En malware típico verás funciones ofuscadas, uso de base64_decode, gzinflate, str_rot13, o cadenas larguísimas sin sentido. Ojo: estas funciones también pueden aparecer en código legítimo, por eso importa el contexto. También revisa wp-cron y las tareas programadas internas: algunos ataques crean cron jobs para reinstalarse.
Comprueba logs del servidor si los tienes: accesos a xmlrpc.php, intentos masivos de login, llamadas a endpoints raros, o POST repetidos a admin-ajax. Si tu hosting incluye WAF o logs de seguridad, podrás ver patrones. Y revisa Search Console y herramientas de blacklist (Safe Browsing) para entender si Google marca el dominio.
- Ordena por fecha de modificación, detecta picos de cambios.
- Busca PHP en uploads y carpetas de caché, es una bandera roja.
- Revisa wp-config.php, .htaccess y functions.php del theme.
- Identifica reinfección: tareas programadas y archivos que reaparecen.
Qué ocurre en la práctica
Caso típico: el escáner detecta “malware” en un archivo y se borra, pero la web se reinfecta al día siguiente. Error frecuente: no identificar el punto de entrada (plugin vulnerable, credenciales filtradas, permisos abiertos). Recomendación concreta: anota qué archivos cambian y busca el origen, si no cierras la puerta, la limpieza no dura.
Limpieza manual: archivos más usados por malware
La limpieza manual consiste en eliminar lo que sobra y restaurar lo que debe estar. Empieza por localizar archivos que no pertenecen al núcleo de WordPress. En el directorio raíz, WordPress suele tener un conjunto bastante estable de archivos, y cualquier PHP extraño con nombres aleatorios merece revisión. En wp-includes y wp-admin casi nunca deben existir archivos adicionales, así que cualquier añadido ahí es sospechoso. En wp-content sí hay variedad, pero el malware suele esconderse en subcarpetas raras, o dentro de mu-plugins y uploads.
Revisa .htaccess con atención. Una técnica común es inyectar reglas para redirigir tráfico o servir contenido distinto. Busca bloques grandes con condiciones por user agent o referencias a dominios que no son tuyos. Si no estás segura de qué es legítimo, guarda copia y vuelve a un .htaccess básico, luego reintroduce reglas necesarias (por ejemplo, las de enlaces permanentes) y observa si el problema vuelve.
Busca también “puertas traseras”. Suelen ser archivos pequeños que permiten ejecutar comandos, subir archivos o recrear el malware. Pueden parecer archivos de caché, de estadísticas, o tener nombres parecidos a archivos del sistema. Un truco simple: revisa si hay eval y cadenas codificadas en archivos que no deberían tener lógica compleja. En un theme legítimo puede haber lógica, pero no suele estar ofuscada.
- Elimina PHP en uploads salvo que tengas una razón muy concreta.
- Revisa .htaccess y borra reglas extrañas, restaura reglas básicas.
- Localiza archivos nuevos en wp-includes y wp-admin, normalmente son intrusos.
- Detecta ofuscación: cadenas largas, base64_decode sin motivo, eval.
Qué ocurre en la práctica
Caso típico: aparece un archivo PHP dentro de wp-content/uploads con fecha reciente y permisos amplios. Error frecuente: borrar el archivo visible y olvidar el segundo archivo “loader” en otra carpeta. Recomendación concreta: cuando encuentres uno, busca referencias a su nombre en toda la carpeta y revisa tareas programadas que lo llamen.
Reinstalación segura: core, themes y plugins
Una de las medidas más seguras para eliminar malware en WordPress es reinstalar el núcleo (core) desde una fuente fiable y limpiar extensiones. La idea es simple: los archivos del core deben coincidir con los oficiales. Por eso, en lugar de “reparar uno a uno”, suele ser mejor reemplazar todo wp-admin y wp-includes por versiones limpias del mismo número de versión, y sustituir archivos raíz estándar. Mantén wp-config.php porque contiene credenciales, pero revísalo a conciencia.
Con plugins y themes, el criterio es estrictamente práctico: lo que no sea imprescindible, se elimina. Lo que sea imprescindible, se reinstala desde el repositorio oficial o desde el proveedor legítimo, nunca desde una copia antigua que pueda venir contaminada. Si usas themes premium, descarga de nuevo desde la cuenta del proveedor. Evita “nulled themes” porque son un vector clásico de infección.
Si la web tiene funcionalidades críticas, documenta qué plugins hay y reinstálalos uno a uno, probando cada paso. Esto ayuda a identificar el causante. En sitios donde hay comercio electrónico, añade una revisión adicional de integraciones de pago y hooks, porque un atacante puede intentar inyectar skimmers. Si no puedes validar con seguridad, considera una auditoría más profunda o restaurar desde copia limpia previa al incidente y luego actualizar todo.
- Reemplaza wp-admin y wp-includes por copias limpias de la misma versión.
- Reinstala plugins y themes desde fuentes oficiales, elimina lo que no uses.
- Evita copias antiguas de plugins, reinstala y actualiza.
- Tras cada reinstalación, comprueba redirecciones y comportamiento en incógnito.
Qué ocurre en la práctica
Caso típico: la infección está en un plugin abandonado que “siempre ha funcionado”. Error frecuente: mantenerlo por miedo a romper la web y, a la vez, sufrir reinfecciones. Recomendación concreta: sustitúyelo por alternativa mantenida o implementa la función con código propio revisado.
Usuarios, permisos y claves: el 70% del problema
En muchos incidentes, el malware es la consecuencia, no la causa. La causa real suele ser una contraseña filtrada, un usuario administrador creado sin permiso, o permisos de archivos demasiado abiertos. Por eso, tras la limpieza técnica, toca cerrar el acceso. Primero, revisa todos los usuarios de WordPress. Busca administradores desconocidos, correos raros, o nombres que imitan los tuyos. Si hay uno sospechoso, elimina y reasigna contenido a un usuario legítimo. Después, cambia contraseñas de todos los usuarios con roles altos.
Segundo, cambia credenciales del hosting: panel, SFTP, base de datos, y correo asociado. Si usas FTP sin cifrar, considera migrar a SFTP. Revisa claves de API de plugins (por ejemplo, SMTP, backups, cachés), y tokens de integraciones externas. Si el sitio fue comprometido, asume que lo que esté en el servidor pudo verse.
Tercero, revisa permisos de archivos. En WordPress, lo habitual es que carpetas estén en 755 y archivos en 644, con variaciones según hosting. Un permiso 777 es una invitación al desastre. Revisa también el propietario de archivos, si hay mezclas raras. Si hay archivos de WordPress propiedad de un usuario distinto, puede indicar manipulación. Y activa medidas como autenticación en dos pasos para administradores si el proyecto lo permite.
- Elimina usuarios admin sospechosos, revisa roles y correos.
- Cambia contraseñas de WordPress, hosting, SFTP, base de datos y correo.
- Revisa permisos 755 en carpetas, 644 en archivos, evita 777.
- Activa 2FA y limita intentos de login para reducir fuerza bruta.
Qué ocurre en la práctica
Caso típico: se limpia la web y a las 48 horas vuelve la redirección. Error frecuente: no cambiar la contraseña del panel del hosting, que era la vía de acceso. Recomendación concreta: cambia credenciales en cascada, empezando por hosting y correo, y termina por WordPress, luego repite al final para asegurarte.
Base de datos y opciones: trampas habituales
El malware no siempre vive en archivos. A veces se incrusta en la base de datos, especialmente en opciones, widgets, shortcodes o contenido de entradas. El síntoma típico es que el código malicioso se “recrea” tras reinstalar archivos. Por eso conviene revisar tablas sensibles como wp_options, wp_posts y a veces wp_usermeta. En wp_options, busca valores muy largos en opciones autoload que no te suenen, o referencias a scripts externos. En wp_posts, revisa si hay inyecciones de iframes o scripts al final del contenido.
Otra trampa común es el cambio de la URL del sitio, o el home, para provocar redirecciones. Verifica que siteurl y home apuntan a tu dominio real. También revisa si hay plugins de caché o seguridad que almacenan reglas en base de datos. Una limpieza agresiva sin saber qué se borra puede romper el sitio. La estrategia segura es: identifica entradas maliciosas, elimina o limpia ese contenido, y deja lo legítimo.
En sitios con formularios, revisa si el malware añadió receptores de correo extra o cambió el destino de formularios. En e commerce, revisa scripts en plantillas de checkout y posibles inserciones en la cabecera. Si detectas patrones repetidos, usa búsquedas por fragmentos como “base64”, “iframe”, “display:none” o dominios extraños, pero no borres masivamente sin respaldo.
- Revisa wp_options: valores largos, autoload sospechoso, URLs externas.
- Comprueba siteurl y home, deben ser tu dominio real.
- Busca scripts e iframes en wp_posts, especialmente al final del contenido.
- En formularios y checkout, revisa receptores y scripts añadidos.
Qué ocurre en la práctica
Caso típico: el atacante inserta un script en una opción autoload y afecta a toda la web. Error frecuente: reinstalar WordPress y pensar que “ya está”, dejando la base de datos intacta. Recomendación concreta: tras la reinstalación, revisa opciones y cabeceras del theme para confirmar que no queda código externo cargándose.
Blindaje post limpieza: hardening y monitorización
La limpieza sin blindaje es una reparación temporal. Una vez que el sitio vuelve a funcionar, aplica medidas de hardening. Empieza por actualizar todo: WordPress, plugins y themes. Desinstala lo que no uses. Activa un firewall a nivel de aplicación si es viable, y configura reglas básicas contra fuerza bruta. Limita intentos de login, desactiva XML RPC si no lo necesitas, y protege endpoints sensibles. Implementa copias automáticas externas y verifica restauración, porque la copia solo es útil si se puede recuperar.
Refuerza también el servidor. Usa versiones de PHP soportadas, desactiva ejecución de PHP en uploads (muchos hostings permiten reglas en .htaccess o configuración), y revisa permisos de escritura. Si puedes, separa entornos (producción, staging) para probar actualizaciones sin arriesgar. Y añade monitorización: alertas de cambios de archivos, de usuarios nuevos, de modificaciones en wp-config, y de picos de tráfico. La detección temprana reduce el coste del incidente.
Por último, limpia el impacto en reputación. Solicita revisión en Search Console si hubo alerta de seguridad, y revisa si tu dominio aparece en listas negras. Si el hosting te suspendió, pide reactivación tras demostrar limpieza y medidas. En entornos con marca, es mejor comunicar internamente qué se hizo, qué se cambió y qué se ha mejorado, para evitar repetir fallos.
- Actualiza core, plugins y themes, elimina extensiones sin mantenimiento.
- Configura WAF, limitación de login, y 2FA en administradores.
- Desactiva ejecución de PHP en uploads y endurece permisos.
- Activa monitorización de integridad y alertas de cambios.
Qué ocurre en la práctica
Caso típico: se limpia una vez y el cliente vuelve a instalar el mismo plugin vulnerable porque “lo necesita”. Error frecuente: no documentar el motivo de la infección y repetir el escenario. Recomendación concreta: deja una lista corta de plugins permitidos, actualizaciones programadas, y una alarma si se instala algo nuevo sin revisión.
Preguntas frecuentes
¿Basta con instalar un plugin de seguridad para eliminar malware en WordPress?
Ayuda, pero no siempre basta. Un escáner puede detectar parte del malware, pero si no cierras el punto de entrada (plugin vulnerable, credenciales filtradas, permisos abiertos), la infección vuelve. Lo seguro es combinar escaneo, limpieza y hardening.
¿Puedo limpiar sin perder SEO?
Sí, pero hay que hacerlo con cuidado. Evita cambios masivos de URL, conserva contenidos legítimos, y revisa que no queden páginas spam indexadas. Si Google marcó tu web, solicita revisión tras limpiar y refuerza seguridad para evitar reincidencias.
¿Qué hago si me han robado el acceso al administrador?
Actúa desde el hosting. Puedes desactivar plugins renombrando la carpeta, resetear contraseñas desde base de datos y, si hace falta, crear un usuario admin nuevo desde phpMyAdmin. Después, elimina usuarios sospechosos y cambia todas las credenciales.
¿Por qué vuelve el malware aunque borre archivos infectados?
Porque suele quedar una puerta trasera o un cron que lo reinstala, o porque la vulnerabilidad sigue activa. También puede residir en la base de datos. La clave es localizar el mecanismo de persistencia y cerrar la entrada.
¿Cuándo conviene restaurar desde una copia en lugar de limpiar?
Si tienes una copia verificada anterior a la infección, restaurar puede ser más rápido y seguro, siempre que luego actualices y corrijas la vulnerabilidad. Si no sabes cuándo empezó el ataque, restaurar a ciegas puede reintroducir el problema.
Qué ocurre en la práctica
Caso típico: tras limpiar, el sitio funciona, pero Google sigue mostrando resultados de spam. Error frecuente: olvidar eliminar URLs spam y no solicitar revisión. Recomendación concreta: revisa Search Console, elimina páginas hackeadas, corrige redirecciones y solicita revisión cuando corresponda.
¿Necesitas asesoramiento legal?
Nuestro equipo de expertos está listo para ayudarte