Virus en WordPress: señales, cómo eliminarlo y evitar reinfección

Virus en WordPress

Si estás aquí, probablemente ya viste una señal que no se siente “normal”: tu web redirige a páginas raras, aparece spam en Google, se crearon usuarios admin desconocidos, o tu hosting te avisó de malware. En WordPress, cuando algo se infecta, lo peor no es el susto: es perder tiempo haciendo “limpiezas” que no cierran la puerta real y a los días vuelve todo.

Lo que vas a lograr hoy (sin tutorial con capturas, directo a resultados):

  • Confirmar si realmente hay virus/malware en WordPress y qué tipo de infección parece.
  • Aplicar un plan de contención para que el daño no siga creciendo (redirecciones, spam, robo de tarjetas, etc.).
  • Dejar listo el terreno para limpiar bien (en el siguiente bloque), sin caer en errores comunes.

Importante: si tu sitio procesa pagos (WooCommerce), trata esto como prioridad máxima. No es paranoia: existen infecciones tipo skimmer que intentan capturar datos de pago.


Índice
  1. Señales claras de virus/malware en WordPress (las que casi nunca son “casualidad”)
  2. Qué NO hacer (porque casi garantiza reinfección)
  3. Plan de emergencia (primeros 20 minutos): contén el daño antes de limpiar
  4. Cómo saber “por dónde” entró (la pista que define si vuelve o no)
  5. Lecturas internas recomendadas
  6. Cómo eliminar el virus en WordPress: ruta rápida vs limpieza profunda (sin capturas)
  7. Ruta rápida (si tienes un backup realmente limpio)
  8. Limpieza profunda (cuando no confías en backups o hay reinfección)
  9. Blindaje mínimo para que no vuelva (lo que casi nadie hace completo)
  10. Lecturas internas recomendadas
  11. Refuerzo final: cómo blindar tu WordPress para que no vuelva el malware
  12. 1) Cambia llaves internas de WordPress (corta sesiones antiguas)
  13. 2) Revisa permisos y “lugares raros” donde se esconden
  14. 3) Desactiva la edición de archivos desde el panel (reduce daño si roban una cuenta)
  15. 4) Limpia usuarios y aplica “mínimo privilegio”
  16. 5) Actualizaciones con criterio (lo que más evita reinfección)
  17. 6) Protege el login y corta ataques automáticos
  18. 7) Revisa tareas programadas y reinfección silenciosa
  19. 8) Si tienes WooCommerce: revisa el checkout (skimmer)
  20. Checklist de 10 minutos (para saber si quedaste “limpio y firme”)

Señales claras de virus/malware en WordPress (las que casi nunca son “casualidad”)

1) Redirecciones a páginas raras (solo en móvil o desde Google)

Una de las señales más típicas: tu web se ve “normal” para ti, pero usuarios reportan que los manda a casinos, premios, APKs o páginas con publicidad agresiva. A veces solo ocurre:

  • cuando entran desde Google
  • cuando navegan desde móvil
  • cuando llegan por ciertos países

Esto suele ser inyección de código (JS/PHP) o reglas escondidas para “filtrar víctimas”. Si este es tu síntoma principal, luego enlazaremos a:
WordPress redirige a páginas raras.

2) “SEO spam” (títulos raros indexados: casino, japonés, farmacia, etc.)

Cuando de pronto aparecen páginas que tú no creaste (o resultados extraños en Google), normalmente es SEO spam: el atacante inyecta URLs o contenido para posicionar palabras basura en tu dominio.

Relacionado para profundizar:
SEO spam en WordPress.

3) Usuarios admin desconocidos o cambios de contraseña que no hiciste

Si aparece un “administrador” que no reconoces, ya no es solo “virus”, es control. Muchos atacantes primero crean su usuario, luego dejan una puerta trasera (backdoor) para volver aunque limpies.

Cuando publiques este, será un gran enlace interno:
Usuarios admin desconocidos en WordPress.

4) Archivos modificados sin explicación (wp-config.php, functions.php, plugins raros)

Si notas archivos tocados “ayer” cuando tú no hiciste cambios, o ves cosas como:

  • cadenas largas tipo base64
  • scripts incrustados en functions.php
  • archivos en wp-content/mu-plugins que tú no creaste

Eso suele ser inyección. Algunos atacantes esconden el malware donde casi nadie mira.

Luego enlazaremos a:
Malware en wp-config.php y
Base64 JavaScript sospechoso.

5) Tu web se puso lenta de golpe (picos de CPU, disco, tráfico raro)

Cuando hay un pico fuerte sin explicación, pueden ser bots, spam o incluso procesos maliciosos. No siempre es virus, pero si coincide con otras señales, suma puntos.


Qué NO hacer (porque casi garantiza reinfección)

  • No restaures un backup sin saber de qué fecha es el “último limpio”. Si restauras uno infectado, vuelves al mismo lugar.
  • No borres archivos al azar porque “se ven raros”. Puedes romper el sitio y dejar el backdoor vivo.
  • No instales themes/plugins nulled (piratas). Muchos vienen con puertas traseras y son una de las causas #1 de reinfección.
  • No confíes solo en “limpiadores mágicos”. Si no cierras la vulnerabilidad real (plugin, credenciales, permisos), vuelve.

Plan de emergencia (primeros 20 minutos): contén el daño antes de limpiar

Piensa en esto como “apagar el incendio” para que no se siga propagando mientras limpias.

1) Pon el sitio en modo mantenimiento (si puedes)

Si tu sitio está redirigiendo o mostrando contenido peligroso, lo más responsable es activar mantenimiento temporalmente. No es para siempre: es para evitar que más usuarios caigan o que Google te marque como “peligroso”.

2) Haz un backup, pero con una regla

Haz backup del sitio y base de datos, pero considéralo un “snapshot de evidencia”, no un backup para restaurar sin revisar. Te sirve para:

  • comparar archivos luego
  • revisar qué se modificó
  • no perder datos si algo sale mal

3) Cambia accesos críticos (para cortar al intruso)

Este es el cierre de puertas más directo. Cambia, al menos:

  • WordPress admin (y todos los admins)
  • Hosting/cPanel
  • FTP/SFTP
  • Base de datos (si sabes hacerlo o lo hará tu técnico)

Tip realista: muchos ataques se mantienen porque el atacante ya tiene acceso al hosting o FTP. Si solo cambias WordPress, vuelven a entrar por fuera.

4) Revisa si hay admin desconocidos y congela el acceso

Si detectas usuarios admin que no reconoces, no te quedes “mirando”. Ese usuario es el ancla del atacante. En la limpieza profunda se elimina bien y se revisan permisos, pero desde ya:

  • anota su nombre/correo
  • revisa fecha de creación si puedes
  • prepara la eliminación para cuando limpies

5) Si usas WooCommerce, asume riesgo hasta demostrar lo contrario

No para asustarte, sino para actuar con cabeza: si hubo infección, revisaremos en el siguiente bloque señales de skimmer (inyección de JS en checkout). Este tema se conecta con:
Credit card skimmer en WooCommerce.


Cómo saber “por dónde” entró (la pista que define si vuelve o no)

En WordPress casi siempre entra por una de estas puertas:

  • plugin o theme desactualizado
  • credenciales reutilizadas o filtradas
  • plugins/themes nulled
  • permisos de archivos inseguros
  • hosting con otra web infectada (contagio cruzado)

En el siguiente bloque haremos la limpieza con dos rutas: una rápida (si tienes backup limpio) y una profunda (si necesitas eliminar inyecciones/backdoors), y dejaremos un checklist para que la reinfección no te vuelva a golpear.


Lecturas internas recomendadas

Cómo eliminar el virus en WordPress: ruta rápida vs limpieza profunda (sin capturas)

Aquí viene la parte que define si esto se resuelve “de verdad” o si vuelve en 7 días. En WordPress, la mayoría de reinfecciones pasan por una razón simple: se limpia el síntoma (redirige, spam, popup) pero no se elimina la puerta trasera ni la vulnerabilidad que permitió entrar.

Elige tu ruta según tu situación:

  • Ruta rápida: tienes un backup reciente que estás casi seguro que estaba limpio.
  • Limpieza profunda: no confías en backups, hay señales de backdoor, o el sitio sigue reinfectándose.

Ruta rápida (si tienes un backup realmente limpio)

Esta ruta es la más efectiva cuando el backup es anterior al problema y proviene de una fuente confiable (hosting, plugin de backups serio, o export controlado). El objetivo es restaurar y luego cerrar la entrada para que no vuelva.

1) Restaura el backup limpio (archivos + base de datos)

  • Restaura archivos del sitio.
  • Restaura base de datos del mismo punto en el tiempo.

Advertencia realista: restaurar solo archivos o solo base de datos deja “mitades” que a veces reactivan la infección.

2) Actualiza todo inmediatamente (core + plugins + themes)

Si restauras y no actualizas, puedes estar dejando abierta la misma vulnerabilidad. Lo mínimo:

  • WordPress core a versión actual
  • Plugins actualizados (o eliminados si no son esenciales)
  • Theme actualizado

3) Cambia credenciales y claves (esto evita el “vuelvo por FTP”)

  • Contraseñas de WordPress (todos los administradores)
  • Hosting/cPanel
  • SFTP/FTP
  • Base de datos (si está a tu alcance)

4) Revisa usuarios admin y elimina lo sospechoso

Si aparece un administrador que no creaste, no lo dejes “para después”. En muchos casos, ese usuario es el seguro del atacante.

Si este punto te pasó, te conviene publicar luego este satélite:
Usuarios admin desconocidos en WordPress.

5) Observa 24–48 horas

Si después de restaurar + actualizar + cambiar accesos, el sitio vuelve a redirigir o reaparece spam, no es mala suerte: es señal de puerta trasera o de contagio cruzado en el hosting. En ese caso, salta a la limpieza profunda.


Limpieza profunda (cuando no confías en backups o hay reinfección)

Esta ruta es más técnica, pero es la que de verdad corta reinfecciones. La idea no es “buscar cualquier archivo raro”, sino seguir un método: comparar, identificar, eliminar, validar y blindar.

1) Congela el estado actual (backup de evidencia)

Antes de borrar nada, guarda un snapshot. Esto te salva si:

  • rompes algo por error
  • necesitas comparar qué cambió
  • tu hosting te pide evidencia

2) Reinstala el core de WordPress desde fuente oficial

La forma más limpia (sin jugar a “borrar archivos”) es reemplazar el core por uno oficial:

  • Descarga WordPress desde la fuente oficial: wordpress.org/download
  • Reemplaza carpetas del core (wp-admin, wp-includes) por las oficiales.

No toques wp-content todavía (ahí vive el 80% de infecciones).

3) Audita wp-content con enfoque (donde se esconden de verdad)

En vez de “revisar todo”, empieza por los lugares más comunes:

  • wp-content/mu-plugins/ (muchos ni saben que existe; ideal para backdoors)
  • wp-content/plugins/ (plugins abandonados o nulled)
  • wp-content/themes/ (inyecciones en functions.php, header.php, footer.php)
  • wp-content/uploads/ (sí: a veces suben PHP camuflado como imagen o archivo)

Patrones típicos sospechosos:

  • archivos .php dentro de uploads (no deberían estar)
  • código ofuscado (bloques enormes ilegibles)
  • funciones raras con cadenas largas y decodificación
  • scripts JS inyectados en header/footer

Si detectas cadenas tipo base64 o scripts raros, este satélite te encaja perfecto:
Base64 JavaScript sospechoso.

4) Revisa el wp-config.php y “cosas que no deberían estar”

wp-config.php debería tener configuración, no “lógica extra”. Señales típicas:

  • líneas enormes añadidas arriba o abajo
  • includes a archivos externos/desconocidos
  • código que ejecuta cosas “en silencio”

Relacionado:
Malware en wp-config.php.

5) Revisa la base de datos: reinfección silenciosa

Muchos limpian archivos y se olvidan que la base de datos puede volver a inyectar código. ¿Dónde mirar primero?

  • wp_options: valores que cargan scripts o redirecciones
  • posts/postmeta: contenido con iframes o scripts ocultos
  • usuarios y capacidades (roles con permisos extraños)

Señal típica: limpias archivos, pero el sitio vuelve a inyectar scripts al recargar.

6) Validación: confirma que ya no hay comportamiento malicioso

  • Prueba el sitio en móvil y escritorio.
  • Prueba entrando desde Google (si antes redirigía “solo desde buscador”).
  • Revisa que no aparezcan nuevos admins.
  • Confirma que no existan tareas raras o comportamientos automáticos.

Blindaje mínimo para que no vuelva (lo que casi nadie hace completo)

1) Elimina plugins/themes que no uses (menos superficie = menos riesgo)

Si no lo usas, no debería existir en el servidor. Muchos ataques entran por un plugin olvidado.

2) Actualizaciones + contraseñas únicas + 2FA

Esto no es “consejo genérico”: en WordPress es literalmente la diferencia entre un incidente único y una reinfección mensual.

3) WAF/Firewall (si tu web recibe mucho tráfico o ataques)

Un WAF (por ejemplo, a nivel de CDN) puede frenar muchísimos intentos automáticos. Si ya estás en Cloudflare, este concepto te encaja con tu contenido:
WAF Cloudflare.

4) Checklist de 48 horas post-limpieza

  • Revisar usuarios admin (que no reaparezca ninguno raro).
  • Monitorear redirecciones y scripts inyectados.
  • Verificar que no se creen archivos nuevos “solos” en wp-content.
  • Confirmar que Search Console/hosting ya no marque malware (si aplicaba).

Lecturas internas recomendadas

Cuando me confirmes, el siguiente paso natural para este tema es crear un tercer bloque opcional (solo si lo quieres) con un checklist de hardening más técnico: permisos recomendados, bloqueo de endpoints comunes, limpieza de tareas programadas, y señales finas de backdoor/reinfección que los plugins a veces no detectan.

Refuerzo final: cómo blindar tu WordPress para que no vuelva el malware

Si ya limpiaste el sitio (o restauraste un backup limpio), este paso es el que marca la diferencia entre “lo resolví” y “me volvió a pasar”. La mayoría de infecciones repetidas no son magia: es la misma puerta abierta (plugin vulnerable, credenciales filtradas, permisos inseguros o una configuración que facilita el acceso).

Meta de este refuerzo: que aunque vuelvan a intentar entrar, el impacto sea mínimo y tú te enteres rápido.


1) Cambia llaves internas de WordPress (corta sesiones antiguas)

Además de cambiar contraseñas, WordPress tiene claves internas (AUTH/SECURE_AUTH, etc.) que, al rotarlas, invalidan cookies y sesiones antiguas. Es un golpe directo contra accesos “pegados”.

Tip práctico: rota estas llaves después de la limpieza, y luego obliga a todos los admins a cambiar su contraseña.


2) Revisa permisos y “lugares raros” donde se esconden

Si un atacante pudo escribir archivos en tu servidor, pudo dejar algo para volver. Estos son los puntos donde más se esconden porque casi nadie mira:

  • wp-content/mu-plugins/ (carga automática; ideal para persistencia)
  • wp-content/uploads/ (PHP camuflado)
  • wp-content/themes/ (inyecciones en header/footer/functions)

Si encuentras cadenas ofuscadas o base64, revisa esto:


3) Desactiva la edición de archivos desde el panel (reduce daño si roban una cuenta)

Si alguien entra al admin, lo primero que intenta es editar theme/plugin para inyectar código. Una práctica común es deshabilitar la edición desde el panel para limitar el daño.

Beneficio real: aunque alguien logre entrar, le cuesta mucho más convertirlo en malware persistente.


4) Limpia usuarios y aplica “mínimo privilegio”

Muchos sitios tienen 2–3 administradores “porque sí”. Eso aumenta el riesgo. Deja como admin solo a quien realmente lo necesita y convierte el resto a roles menores.

Si viste un admin raro o reaparecen, este artículo satélite es clave:


5) Actualizaciones con criterio (lo que más evita reinfección)

Esto no es “consejo genérico”: el malware en WordPress entra muchas veces por plugins viejos. Define una rutina simple:

  • Actualiza WordPress core y plugins cada semana o apenas salga un parche crítico.
  • Elimina plugins que no uses (desactivar no es suficiente).
  • Evita themes/plugins “nulled”. Si no hay presupuesto, usa alternativas gratuitas oficiales antes que piratas.

6) Protege el login y corta ataques automáticos

Muchos ataques no son “personas”, son bots probando contraseñas. Medidas útiles:

  • Contraseñas únicas + 2FA para administradores.
  • Limitación de intentos de login (plugin reputado o capa del hosting/WAF).
  • Si tu hosting lo permite: reglas para bloquear patrones obvios de fuerza bruta.

Si ya usas una capa de protección externa, esto lo complementa:


7) Revisa tareas programadas y reinfección silenciosa

Un truco común es dejar algo programado para “volver a inyectar” aunque limpies. Señales:

  • archivos que reaparecen
  • cambios nocturnos sin actividad humana
  • scripts que se insertan solos en el header/footer

Cuando publiques estos satélites, encajan perfecto aquí:


8) Si tienes WooCommerce: revisa el checkout (skimmer)

Si tu sitio vende, no te quedes solo con “ya no redirige”. Hay infecciones que solo atacan el checkout. Señales típicas:

  • scripts nuevos cargando en la página de pago
  • código extraño en theme o plugins relacionados al checkout
  • alertas del navegador o del proveedor de pagos

Checklist de 10 minutos (para saber si quedaste “limpio y firme”)

  • No hay usuarios admin desconocidos.
  • No hay archivos PHP en uploads ni mu-plugins raros.
  • Claves internas (salts) rotadas y contraseñas nuevas para admins.
  • Plugins no usados eliminados.
  • 2FA activo para administradores.
  • Capas anti-bot (limitación de intentos / WAF / hosting) aplicadas.
  • Monitor de cambios o alertas del hosting activas (si existe).

Si tu síntoma principal fueron redirecciones o spam en Google, refuerza con estos temas:

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir