Si tu WordPress tiene malware, lo más probable es que ya lo sepas sin saberlo: el sitio redirige a farmacias rusas, Google Chrome muestra una advertencia roja, o tu hosting te suspendió la cuenta. Eliminar malware WordPress no es un proceso de cinco minutos, pero tampoco es magia negra. Acá te explico cómo rastrearlo, limpiarlo y cerrarte la puerta para que no vuelva.
En 30 segundos
- Los síntomas más comunes son redirecciones a sitios spam, alertas de Google, usuarios admin desconocidos y contenido farmacéutico inyectado en tus páginas.
- El malware suele esconderse en plugins o temas nulleados, archivos del core modificados, y registros de la base de datos.
- El proceso de limpieza tiene un orden: backup, escaneo, reinstalación del core limpio, limpieza de plugins y temas, base de datos, cambio de credenciales.
- Wordfence, Sucuri y MalCare son las herramientas más usadas para detectar infecciones. Las versiones premium detectan más, pero el free alcanza para un diagnóstico inicial.
- Después de limpiar, notificá a Google Search Console para que quite las alertas de malware de los resultados de búsqueda.
WordPress es un sistema de gestión de contenidos (CMS) de código abierto creado en 2003 por Matt Mullenweg, utilizado para crear y administrar sitios web, blogs y aplicaciones web. Permite la extensión y personalización mediante temas y complementos (plugins).
Síntomas de que tu WordPress está infectado
Ponele que entrás a tu sitio un lunes a la mañana y Chrome te muestra una pantalla roja con «Este sitio puede dañar tu computadora». O peor: un cliente te escribe preguntando por qué tu web vende Viagra. Esos son los casos evidentes. Los más sigilosos son peores.
Los signos que suelen aparecer primero:
- Redirecciones a sitios externos: el sitio redirige a páginas de farmacia, casino o contenido adulto, especialmente desde mobile o para usuarios que llegan desde Google.
- Alertas de Google Safe Browsing: Google marca el sitio como peligroso en los resultados de búsqueda. Una vez que esto pasa, el tráfico orgánico cae en horas.
- Usuarios administradores desconocidos: aparecen cuentas con nombres raros que vos no creaste. Es uno de los vectores de acceso más comunes.
- Contenido farmacéutico («pharma hack»): las páginas del sitio empiezan a ranquear para keywords de medicamentos. No lo ves en el frontend, pero lo ve Google.
- Sitio lento o con caídas frecuentes: el servidor está generando spam o participando en un botnet. Tu hosting empieza a reportar uso anómalo de CPU.
- Advertencias del hosting: muchos proveedores detectan patrones de malware y suspenden cuentas antes de que vos te des cuenta.
Según datos de AlmCorp, más de 700.000 sitios WordPress fueron comprometidos en 2025. La tasa de infección sigue creciendo en 2026, principalmente por plugins desactualizados y contraseñas débiles.
Cómo buscar y localizar malware en WordPress
Antes de usar cualquier plugin, hay técnicas manuales que te dan una imagen rápida de lo que está pasando.
Archivos modificados recientemente
Si tenés acceso SSH, este comando te muestra los archivos PHP modificados en los últimos 7 días:
find /var/www/html -name "*.php" -mtime -7 -type f
Si ves archivos en wp-content/uploads con extensión .php, es señal de alerta. Los archivos de imágenes no deberían ser ejecutables.
Código ofuscado en los archivos
El malware casi siempre usa ofuscación para esconderse. Los patrones más comunes son base64_decode(), eval(), gzinflate(), str_rot13() y fromCharCode(). Una búsqueda rápida en el servidor: En auditar el código de tus plugins personalizados profundizamos sobre esto.
grep -r "base64_decode" /var/www/html --include="*.php"
Ojo: algunas funciones legítimas también usan base64. El problema es cuando aparece dentro de eval() o en archivos que no deberían tener código PHP, como imágenes o archivos de configuración de tema.
Base de datos
El pharma hack clásico inyecta spam en los posts y opciones de WordPress. Conectate a phpMyAdmin y buscá en la tabla wp_options valores en sitemeta, home o siteurl que no reconocés. También revisá wp_posts para contenido con links a farmacéuticas.
Herramientas y plugins para escanear malware
Las herramientas automatizadas aceleran el trabajo, pero ninguna es infalible. Especialmente en infecciones sofisticadas donde el malware se camufla como código legítimo.
| Plugin | Free | Premium | Limpieza automática | Firewall |
|---|---|---|---|---|
| Wordfence | Sí (escaneo básico) | USD 119/año | Premium | Sí |
| Sucuri | Sí (escaneo externo) | USD 199/año | Premium (manual asistida) | Premium |
| MalCare | Sí (detección) | USD 99/año | Premium (1-click) | Sí |
| iThemes Security | Sí | USD 99/año | No | Parcial |

Wordfence Free alcanza para detectar la mayoría de las infecciones conocidas. El problema es que su base de firmas en la versión gratuita tiene 30 días de retraso respecto a la premium (sí, en serio, 30 días). Para malware reciente, eso puede ser la diferencia entre detectarlo o no.
MalCare usa análisis de señales en el servidor en vez de solo comparar firmas. Detecta más variantes de código ofuscado. Según Kinsta, en 2025 se registraron 11.334 nuevas vulnerabilidades en plugins y temas de WordPress. Con ese volumen, la actualización constante de firmas no es opcional.
Pasos para limpiar el núcleo de WordPress
El orden importa. Si saltás pasos, el malware vuelve.
- Backup completo primero: aunque el sitio esté infectado, necesitás el backup para recuperar contenido legítimo. WPVivid o Duplicator sirven. Si el hosting está suspendido, descargá los archivos por FTP.
- Activá modo mantenimiento: para que nadie más se infecte mientras trabajás.
- Descargá el core limpio: bajá la versión exacta de WordPress que tenés desde WordPress.org y subí todos los archivos excepto wp-content y wp-config.php. Esto sobreescribe el core sin tocar tu contenido.
- Verificá integridad: usá Wordfence o el plugin Integrity Checker para confirmar que los archivos del core coinciden con los originales.
El método oficial de WordPress.org para reinstalar el core es directo: subís los archivos y pisás lo que estaba. No borrés wp-config.php ni wp-content, ahí está tu base de datos y tus archivos de usuario.
Limpiar plugins, temas y base de datos
Los plugins y temas son el vector de entrada más común. La estrategia más efectiva no es «limpiar» el código infectado, es borrarlo y reinstalarlo desde cero. Cubrimos ese tema en detalle en usar formularios con validación segura.
Para cada plugin activo: desactivalo, borralo, reinstalalo desde el repositorio oficial. Si el plugin es premium y no tenés licencia activa, eso es un problema aparte, pero no instalés la versión nulleada de nuevo (probablemente eso fue lo que te infectó).
¿Y qué pasa con el tema? Mismo proceso. Si el tema tiene customizaciones, vas a tener que recuperarlas del backup limpio. El tema child ayuda a que las customizaciones estén separadas del tema padre.
Para la base de datos, exportá un dump SQL completo desde phpMyAdmin y abrilo en un editor de texto. Buscá patrones como <script src="http, eval(, base64_decode, y URLs que no reconocés. Si encontrás en wp_options una opción «auth_key» con un valor que incluye código JavaScript, eso es malware.
El warning más importante acá: los backdoors. El malware inteligente instala una puerta trasera separada del código infectado. Si solo limpiás lo visible sin encontrar el backdoor, en 24-48 horas estás de vuelta al punto de partida (spoiler: esto le pasa al 80% de los sitios que se «limpian» sin metodología).
Cambiar contraseñas y verificar accesos no autorizados
La limpieza técnica sin cambiar credenciales es trabajo perdido. El atacante puede seguir teniendo acceso.
- Contraseña del admin de WordPress (y de todos los usuarios con roles de Editor o superior)
- Contraseña FTP/SFTP
- Contraseña de la base de datos MySQL (y actualizar wp-config.php)
- Contraseña del panel de hosting
Revisá la lista completa de usuarios en WordPress desde Usuarios > Todos los usuarios. Si hay cuentas que no reconocés, borralas. El malware a veces crea usuarios con nombres que parecen legítimos («admin2», «webmaster», «support») para mantener el acceso. Sobre eso hablamos en automatizar escaneos periódicos.
Según Astra Security, muchos sitios infectados se usan como plataforma para ataques de fuerza bruta contra otros sitios. Tu servidor está siendo usado para atacar a otros sin que vos lo sepas.
Verificar que el sitio está limpio y notificar a Google
Una vez que terminaste la limpieza, quedan dos pasos críticos que mucha gente omite.
Primero, revisá Google Search Console. Entrá a Seguridad y Acciones Manuales. Si Google detectó malware, va a aparecer una alerta ahí. También revisá el informe de cobertura para ver si hay URLs raras que no deberían existir en tu sitio.
Segundo, revisá el archivo .htaccess. Las redirecciones maliciosas suelen inyectarse ahí. Un .htaccess limpio de WordPress tiene solo unas pocas líneas. Si ves bloques de código con condiciones extrañas sobre UserAgent o Referer, es malware.
Una vez que confirmás que el sitio está limpio, pedí revisión a Google desde GSC > Seguridad y Acciones Manuales > Solicitar revisión. Google tarda entre 1 y 3 días en procesar. Mientras tanto, las alertas siguen activas para los usuarios.
Para sitios con el módulo de Google Indexing API configurado (como los que usan el sistema de automatización que describe este blog), también conviene reprocesar las URLs principales para que Google las recrawlee limpias lo antes posible.
Lo que está confirmado y lo que no
| Afirmación | Estado |
|---|---|
| Reinstalar el core de WordPress sobreescribe archivos infectados del núcleo | Confirmado (método oficial de WordPress.org) |
| Wordfence Free detecta todas las infecciones | Falso: tiene 30 días de retraso en firmas respecto a la versión premium |
| Borrar y reinstalar plugins es más seguro que «limpiar» el código infectado | Confirmado por Sucuri y Wordfence como mejor práctica |
| Una limpieza manual sin encontrar backdoors elimina la infección definitivamente | No confirmado: la reinfección en 48h es común si no se encuentra el backdoor |
| Google levanta las alertas de malware de forma automática al limpiar el sitio | Falso: hay que solicitar revisión manualmente desde GSC |
Errores comunes al limpiar malware en WordPress
1. Limpiar sin hacer backup primero. El proceso puede borrar contenido legítimo. Si no tenés backup, podés perder posts, imágenes y configuraciones que no están infectadas. Siempre backup antes de tocar nada.
2. Cambiar solo la contraseña de WordPress y asumir que alcanza. Si el atacante entró por FTP o tiene acceso a la base de datos, cambiar la contraseña de WordPress no sirve de nada. Hay que cambiar todo el stack de credenciales. Relacionado: plugins gratuitos de detección de malware.
3. No investigar el vector de entrada. Si limpiás el sitio pero no sabés cómo entraron, van a volver a entrar. Los vectores más comunes son plugins desactualizados, contraseñas débiles, y temas nulleados. Revisá los logs de acceso de tu hosting para identificar el patrón.
4. Reinstalar la misma versión vulnerable del plugin. Si el malware entró por una vulnerabilidad en un plugin específico, reinstalar la misma versión te deja expuesto. Instalá siempre la versión más reciente disponible, y si el plugin no tiene actualización, considerá reemplazarlo.
5. Omitir la solicitud de revisión a Google. Muchos sitios quedan con la alerta de malware activa en Google durante semanas porque nadie pidió la revisión. El tráfico orgánico no se recupera hasta que Google confirma que el sitio está limpio.
Si querés ahondar en cómo rastrear malware en WordPress, mirá: Pulling My Hair Out Trying To Track Down This WordPress Malw.
Preguntas Frecuentes
¿Cómo detectar si mi WordPress tiene malware?
Los signos más claros son redirecciones a sitios externos, alertas de Chrome o Google Search Console, usuarios administradores que no creaste, y contenido de spam en tus páginas visible solo para los motores de búsqueda. Para confirmarlo, instalá Wordfence o MalCare y corré un escaneo completo. También podés verificar desde Google Search Console en la sección Seguridad y Acciones Manuales.
¿Cuáles son los síntomas de un WordPress hackeado?
Los síntomas van desde los obvios (sitio suspendido por el hosting, pantalla roja de Chrome) hasta los silenciosos (el sitio parece normal pero rankea para keywords de medicamentos o casino). Otros indicadores son archivos PHP en la carpeta de uploads, opciones de base de datos modificadas, y emails de spam saliendo desde tu servidor. Si tu hosting reporta picos anómalos de CPU, eso también es señal.
¿Cómo eliminar malware de WordPress manualmente?
El proceso manual requiere acceso SSH o FTP. Primero hacés backup, luego identificás archivos modificados recientemente con find y grep, reinstalás el core de WordPress descargando la versión oficial y sobreescribiendo los archivos del núcleo, borrás y reinstalás todos los plugins y temas desde fuentes oficiales, revisás la base de datos con phpMyAdmin buscando código inyectado, y cambiás todas las credenciales. Según Sucuri, encontrar y eliminar el backdoor es el paso más crítico para evitar reinfecciones.
¿Puedo limpiar mi WordPress sin ayuda de un profesional?
Sí, si tenés acceso SSH, sabés moverse por phpMyAdmin y entendés la estructura de archivos de WordPress. Para infecciones simples, los plugins como Wordfence o MalCare con su función de limpieza automática (premium) pueden resolver el 80% de los casos sin intervención manual. Para infecciones más complejas con backdoors avanzados o malware que se regenera, un profesional de seguridad WordPress ahorra tiempo y reduce el riesgo de dejar residuos.
¿Qué plugins detectan malware en WordPress?
Los más usados son Wordfence (tiene una versión gratuita con escaneo de firmas, pero con 30 días de retraso), MalCare (mejor para detectar código ofuscado y malware nuevo), y Sucuri Security (incluye monitoreo externo del sitio). Para limpiar automáticamente sin intervención manual, las versiones premium de MalCare y Wordfence son las opciones más completas. iThemes Security es bueno para hardening pero tiene capacidades de detección más limitadas.
Conclusión
Rastrear malware en WordPress puede volverse frustrante justamente porque el malware está diseñado para ser difícil de encontrar. Se camufla, se regenera, y a veces parece que limpiaste todo hasta que dos días después el hosting te vuelve a suspender la cuenta.
El proceso no es especialmente complicado, pero tiene un orden que no se puede saltear: backup, escaneo, reinstalación limpia del core, limpieza de plugins y temas desde cero, revisión de base de datos, cambio de todas las credenciales, y solicitud de revisión a Google. Omitir cualquier paso, especialmente encontrar el backdoor, hace que todo lo anterior sea tiempo perdido.
Lo más importante es entender por dónde entró el atacante. Sin eso, la limpieza es temporal. Si el vector fue un plugin desactualizado, actualizá o reemplazá. Si fue una contraseña débil, implementá autenticación en dos pasos. Si fue un tema nulleado, ya sabés la respuesta.