Cómo detectar y limpiar malware en WordPress sin contratar a nadie
Cómo detectar y limpiar malware en WordPress: guía paso a paso
Un sitio WordPress infectado no avisa con una alarma. Avisa con páginas que redirigen a sitios desconocidos, con Google que muestra advertencias de «sitio peligroso» antes de que el visitante llegue, con clientes que te escriben preguntando qué pasó. Para ese momento, el daño ya está hecho: reputación comprometida, posicionamiento afectado y, en muchos casos, acceso al panel de administración bloqueado.
Esta guía cubre el proceso completo: desde la preparación antes de tocar cualquier archivo, hasta la verificación final y las medidas para que no vuelva a ocurrir.
Por qué WordPress es un blanco frecuente
WordPress mueve más del 40% de los sitios web del mundo. Esa popularidad lo convierte en el objetivo más rentable para quienes desarrollan malware: un exploit que funciona en una versión desactualizada de un plugin popular puede afectar a millones de sitios a la vez. No se trata de que tu sitio sea importante o no; se trata de que es vulnerable si no está mantenido.
Los vectores de entrada más comunes son tres: plugins o temas con vulnerabilidades conocidas que no fueron actualizados, credenciales débiles o reutilizadas, y archivos subidos desde equipos locales infectados. Entender por dónde entró el malware es tan importante como limpiarlo, porque si no cerrás la puerta, vuelve.
Preparación antes de empezar
Antes de ejecutar cualquier escaneo o tocar un archivo, cubrí estos puntos. Saltarte alguno puede convertir una limpieza en una pérdida total del sitio.
- Acceso al panel de administración de WordPress o, si ya no podés ingresar, acceso FTP/SFTP y a la base de datos vía phpMyAdmin.
- Copia de seguridad completa del sitio: archivos y base de datos. Aunque el sitio esté infectado, tener un backup del estado actual te permite comparar archivos y recuperar contenido si algo sale mal durante la limpieza.
- Un plugin de seguridad instalado y actualizado: Wordfence o Sucuri son los más usados y documentados para WordPress.
- Conexión segura: si vas a conectarte por FTP, usá SFTP. Evitá trabajar desde redes públicas.
No avances sin el backup. Es el único punto sin negociación.
Cómo detectar malware en tu sitio WordPress
Paso 1: Ejecutá un escaneo completo con tu plugin de seguridad
Instalá Wordfence o Sucuri si todavía no lo tenés, y lanzá un escaneo completo desde el panel de administración. Estas herramientas comparan los archivos de tu instalación contra las versiones originales del repositorio oficial de WordPress y detectan modificaciones, archivos inyectados y patrones de código malicioso conocidos.
El escaneo puede tardar varios minutos dependiendo del tamaño del sitio. Dejalo terminar sin interrumpirlo.
Paso 2: Revisá los resultados con criterio
No todos los archivos marcados son malware. Algunos plugins modifican archivos del core de WordPress de forma legítima, y eso puede generar falsos positivos. Prestá atención especial a:
- Archivos en directorios donde no deberían existir archivos PHP (por ejemplo, dentro de
/uploads/). - Archivos con nombres aleatorios o que imitan nombres legítimos con una letra cambiada.
- Archivos modificados en fechas que no coinciden con actualizaciones que vos hayas hecho.
- Funciones como
eval(),base64_decode()ogzinflate()usadas de forma encadenada: son señales clásicas de código ofuscado.
Paso 3: Inspeccioná el código fuente manualmente en los archivos sospechosos
Para los archivos marcados como sospechosos, abrí el código directamente desde el administrador de archivos de tu hosting o por FTP. Buscá bloques de código que no correspondan al propósito del archivo: un archivo de funciones de un tema no debería tener código que haga peticiones HTTP externas ni que escriba archivos en el servidor.
¿El código está encriptado en base64 y no podés leerlo directamente? Eso solo ya es una señal de alerta. Los plugins y temas legítimos no necesitan ocultar su código.
Cómo limpiar el malware detectado
Paso 1: Eliminá o restaurá los archivos infectados
Para archivos del core de WordPress (los que están en la raíz o en /wp-admin/ y /wp-includes/), la forma más segura de limpiarlos es reemplazarlos con versiones originales descargadas desde wordpress.org. No intentes editar manualmente esos archivos: es fácil dejar rastros o romper algo.
Para archivos de plugins o temas infectados, desinstalalos completamente y reinstalalos desde el repositorio oficial. No los desactivés solamente: desinstalalos. La desactivación deja los archivos en el servidor.
Si el malware está en archivos propios (funciones personalizadas, archivos de configuración), vas a necesitar editar manualmente y eliminar el bloque de código malicioso. Comparar con el backup que hiciste antes es la forma más rápida de identificar exactamente qué cambió.
Paso 2: Actualizá todo lo que puedas actualizar
Una vez limpio el sitio, actualizá WordPress, todos los plugins y todos los temas. Las actualizaciones no son opcionales después de una infección: son el cierre de la puerta por donde entró el atacante.
Si hay plugins que ya no tienen actualizaciones disponibles porque fueron abandonados por sus desarrolladores, eliminalos. Un plugin sin mantenimiento activo es una vulnerabilidad permanente.
Paso 3: Reforzá el acceso y la configuración
Cambiá todas las contraseñas: cuenta de administrador de WordPress, usuario de base de datos, cuenta de hosting y FTP. Usá contraseñas únicas generadas con un gestor de contraseñas. Si el sitio tiene múltiples usuarios con rol de administrador que ya no deberían tenerlo, reducí sus permisos.
Activá la autenticación de dos factores para el acceso al panel. Wordfence incluye esta función. También podés configurar el plugin para bloquear IPs después de varios intentos fallidos de login: esto reduce significativamente los ataques de fuerza bruta.
Si tu hosting lo permite, activá un firewall de aplicaciones web (WAF). Sucuri ofrece uno como parte de su servicio. Cloudflare también tiene una capa gratuita que filtra tráfico malicioso antes de que llegue al servidor.
Checklist de verificación antes de dar el sitio por limpio
No declares el sitio limpio hasta haber completado cada punto de esta lista:
- ✅ Ejecutaste un segundo escaneo completo con el plugin de seguridad y no aparecieron nuevas amenazas.
- ✅ Revisaste manualmente los directorios
/uploads/,/wp-content/y la raíz del sitio buscando archivos PHP que no deberían estar ahí. - ✅ Todas las contraseñas fueron cambiadas: WordPress, base de datos, hosting y FTP.
- ✅ WordPress, plugins y temas están en sus versiones más recientes.
- ✅ Verificaste que el sitio carga correctamente en el navegador sin redirecciones ni advertencias de seguridad.
- ✅ Revisaste Google Search Console: si Google marcó el sitio como peligroso, solicitá una revisión manual desde la consola.
- ✅ Hiciste un nuevo backup del sitio ya limpio.
Qué hacer si algo falla durante la limpieza
Algunos escenarios comunes y cómo resolverlos:
- El malware reaparece después de limpiar: hay una puerta trasera que no encontraste. Revisá archivos en
/uploads/con extensión PHP, archivos.htaccessmodificados y usuarios administradores que no reconocés en la base de datos. - No podés acceder al panel de WordPress: usá un cliente FTP (FileZilla, por ejemplo) para acceder directamente al servidor y trabajar sobre los archivos. También podés desactivar plugins temporalmente renombrando la carpeta
/wp-content/plugins/desde FTP. - El sitio quedó en blanco después de eliminar un archivo: restaurá ese archivo desde el backup y revisá si realmente era malware o un archivo legítimo modificado. Comparar con la versión original del plugin o tema es la forma más segura de decidir.
- Google sigue mostrando advertencias después de limpiar: el proceso de revisión de Google puede tardar varios días. Asegurate de haber solicitado la revisión desde Search Console y de que el sitio esté realmente limpio antes de hacerlo.
Seguridad continua: lo que hacés después importa tanto como la limpieza
Limpiar un sitio infectado resuelve el problema inmediato. Lo que evita que vuelva a pasar es lo que implementás después.
- Escaneos automáticos programados: configurá Wordfence o Sucuri para que ejecuten escaneos periódicos sin que tengas que recordarlo.
- Backups automáticos con retención: no alcanza con tener un backup; necesitás tener varios puntos de restauración. Un backup diario con retención de 30 días te da margen para detectar infecciones que pasaron desapercibidas por un tiempo.
- Principio de mínimo privilegio: cada usuario del sitio debe tener solo los permisos que necesita. Un editor no necesita rol de administrador. Un colaborador no necesita acceso a la configuración de plugins.
- Monitoreo de cambios en archivos: activá las alertas por email cuando se modifiquen archivos críticos del sitio. Wordfence tiene esta función integrada.
La seguridad de WordPress no es un estado que alcanzás una vez: es un proceso de mantenimiento continuo. Un sitio que no se actualiza durante tres meses vuelve a ser vulnerable, independientemente de cuánto trabajo hayas puesto en limpiarlo.
Si además de tu sitio WordPress gestionás ventas en Mercado Libre, mantener ambos canales sincronizados es otra capa de operación que requiere atención. El plugin para sincronizar WooCommerce y Mercado Libre de WooSync mantiene el stock, los precios y el estado de tus publicaciones actualizados en ambas plataformas de forma automática, sin que tengas que intervenir manualmente en cada cambio. Si un producto se agota en WooCommerce, la publicación en Mercado Libre se pausa sola. Si actualizás el precio desde tu tienda, el cambio se refleja en Mercado Libre sin pasos adicionales.
Podés conocer más sobre cómo funciona el sincronizador de stock y precios entre WooCommerce y Mercado Libre y evaluar si se ajusta a tu operación actual.