Portada » Blog » Seguridad » WordPress hackeado: cómo detectarlo, limpiarlo y blindarlo para que no vuelva a pasar

WordPress hackeado: cómo detectarlo, limpiarlo y blindarlo para que no vuelva a pasar

Descubrir que tu WordPress ha sido hackeado es uno de los peores momentos que puede vivir cualquier negocio online.

Tu web redirige a páginas extrañas, Google muestra un aviso rojo en los resultados, los clientes te escriben preocupados, las ventas se paran y, mientras tanto, el atacante puede estar enviando spam, robando datos o usando tu servidor para atacar a otros.

Cada hora que pasa sin actuar, el daño se multiplica: SEO, reputación, ingresos y, en muchos casos, también responsabilidad legal si manejas datos de clientes.

La buena noticia es que la mayoría de los hackeos en WordPress tienen solución y son recuperables si se actúa rápido y con el procedimiento correcto.

La mala es que la mayoría de «soluciones» que circulan por internet son superficiales: instalar Wordfence, escanear y borrar lo que aparezca rara vez limpia un sitio comprometido de verdad.

Un hackeo profesional deja backdoors ocultos, código inyectado en la base de datos, cron jobs maliciosos y, muchas veces, tareas programadas en el servidor que reinfectan el sitio horas después de la limpieza.

Esta guía está escrita desde la trinchera. Te explico cómo identificar de verdad si tu WordPress está hackeado, qué hacer en las próximas dos horas para contener el daño, cómo se limpia un sitio infectado de forma definitiva, y qué medidas de blindaje aplicar después para que no se repita.

🚀 Analiza tu web WordPress gratis en 1 minuto y descubre su estado de salud

Cómo saber con certeza si tu WordPress está hackeado

Antes de entrar en pánico, conviene confirmar el diagnóstico. No todos los problemas raros son un hackeo: a veces es un plugin que ha entrado en conflicto, un cambio de DNS, un problema del hosting o caché corrupta. Estas son las señales que sí indican una infección real:

  • Tu web redirige a otro sitio, especialmente farmacia online, casinos, contenido para adultos o páginas en idiomas extraños. A menudo la redirección solo afecta a visitantes no logueados, así que pruébalo desde una ventana de incógnito o desde el móvil con datos.
  • Google muestra «Este sitio puede ser hackeado» o «Este sitio puede dañar tu equipo» en los resultados de búsqueda, o el navegador bloquea directamente el acceso con una pantalla roja.
  • No puedes entrar al panel de administración aunque la contraseña sea correcta, o aparecen usuarios administradores que tú no creaste.
  • El contenido de tu web ha cambiado sin que tú lo tocaras: textos extraños, enlaces a sitios desconocidos, productos nuevos en tu WooCommerce, posts publicados que no son tuyos.
  • Tu hosting te ha avisado o te ha suspendido la cuenta por consumo anómalo, envío masivo de correo o tráfico saliente sospechoso.
  • Tu web va extremadamente lenta o se cae de forma intermitente. Muchos hackeos usan tu servidor para minar criptomonedas o atacar a otros, consumiendo todos los recursos.
  • Picos extraños en Search Console: páginas indexadas que tú no creaste, normalmente con nombres en japonés, ruso o relacionadas con productos farmacéuticos.

Si tienes una o varias de estas señales, lo más probable es que estés ante un hackeo real. Si solo tienes una sospecha vaga («la web va rara»), descarta primero conflictos de plugins y caché antes de iniciar el protocolo de emergencia.

Qué hacer en las próximas 2 horas: el protocolo de contención

El primer objetivo no es limpiar. Es contener el daño. Cada minuto que la web esté online infectada significa más visitantes expuestos, más penalización de Google y más posibilidades de que el atacante siga haciendo cambios.

1. Pon la web en modo mantenimiento o suspéndela temporalmente

Si todavía tienes acceso al admin, activa un plugin de mantenimiento. Si no, entra a tu panel de hosting y suspende el sitio temporalmente, o crea un archivo .maintenance en la raíz. Si no tienes acceso a nada, llama a tu hosting y pide que suspendan la cuenta. Es preferible una web caída a una web infectando visitantes.

2. No borres nada todavía

Es tentador empezar a borrar archivos sospechosos a lo loco. No lo hagas. Necesitas las pruebas para entender por dónde entraron y asegurar que la limpieza es completa. Antes de tocar nada:

  • Descarga una copia completa del sitio (archivos + base de datos) y guárdala fuera del servidor.
  • Descarga los logs de acceso y error de los últimos 30-60 días. Aquí está casi siempre la pista del punto de entrada.

3. Cambia TODAS las contraseñas (en este orden)

No solo la de WordPress. Si un atacante ha entrado, asume que ha visto todo:

  1. Contraseña del panel de hosting.
  2. Contraseñas FTP/SFTP de todas las cuentas.
  3. Contraseña de la base de datos (cambia también la línea correspondiente en wp-config.php).
  4. Contraseñas de todos los usuarios administradores de WordPress.
  5. Correos asociados a cuentas de administrador.

Usa contraseñas largas, únicas y guardadas en un gestor tipo Bitwarden o 1Password. Si reutilizas la misma que en otro servicio, el problema seguirá ahí.

4. Avisa a las partes implicadas

Si manejas datos de clientes (especialmente en WooCommerce), tienes obligaciones legales bajo el RGPD. Documenta el incidente, valora si hay que notificar a la AEPD en las 72 horas siguientes y, si los datos comprometidos son sensibles, notifica también a los usuarios afectados.

Cómo se limpia un WordPress hackeado de verdad

Aquí es donde la mayoría de tutoriales se quedan cortos. Te dicen «instala Wordfence y escanea». Eso encuentra una parte del malware, sí, pero rara vez todo. Un hackeo serio se limpia con un procedimiento de varias capas.

Paso 1: Diagnóstico del punto de entrada

Antes de limpiar, necesitas saber por dónde entraron. Si no lo identificas, vas a limpiar y el atacante volverá por la misma puerta. Las vías más habituales son:

  • Plugin o tema desactualizado con una vulnerabilidad conocida (la causa de más del 50% de los hackeos).
  • Plugin o tema nulled (pirata) con código malicioso de origen.
  • Contraseña débil o reutilizada comprometida por fuerza bruta o filtración en otro servicio.
  • Hosting compartido vulnerado desde otro sitio del mismo servidor.
  • Backup antiguo accesible desde la web (carpeta /old/, /backup/, etc.) que el atacante usó como puerta trasera.
  • Archivos PHP en carpetas que no deberían tenerlos (típicamente wp-content/uploads/).

Revisa los logs en el rango de fechas en que empezaron los síntomas. Busca peticiones POST a xmlrpc.php, wp-login.php o a archivos PHP extraños.

Paso 2: Reemplazo del core de WordPress

Borra completamente las carpetas /wp-admin/ y /wp-includes/ y todos los archivos PHP de la raíz excepto wp-config.php y la carpeta /wp-content/. Descarga la última versión limpia de WordPress desde wordpress.org y sube los archivos limpios. Esto elimina cualquier modificación maliciosa en el core.

Paso 3: Reemplazo de plugins y temas

No intentes «limpiar» los plugins archivo por archivo. Es ineficiente y peligroso:

  • Borra completamente la carpeta /wp-content/plugins/ y reinstala cada plugin desde su fuente oficial.
  • Elimina todos los temas que no uses. Para el tema activo, si es de un marketplace o desarrollador, reinstálalo desde su fuente oficial.
  • Cualquier plugin o tema nulled tiene que desaparecer, sin excepciones.

Paso 4: Limpieza de la base de datos

Esta es la parte que más se descuida y donde se esconde casi todo el malware persistente. Revisa:

  • Tabla wp_users: elimina cualquier usuario administrador que no reconozcas.
  • Tabla wp_options: busca entradas con código JavaScript o iframes en campos como siteurl, home o cualquier opción modificada recientemente. Busca también opciones con nombres aleatorios añadidas recientemente.
  • Tabla wp_posts: busca posts y páginas con post_status = 'publish' y fechas anómalas. Es habitual encontrar miles de posts spam ocultos.
  • Tabla wp_usermeta: revisa si han añadido capabilities de admin a usuarios normales.

Si no tienes soltura con SQL, pide ayuda: un DELETE mal ejecutado puede dejar la web inservible.

Paso 5: Búsqueda manual de backdoors

Aquí no hay atajo. Hay que buscar a mano archivos PHP sospechosos en lugares donde no deberían existir:

  • Archivos PHP dentro de /wp-content/uploads/ (nunca debería haber ninguno).
  • Archivos con nombres aleatorios tipo wp-xxxx.php, class-xxxx.php en la raíz.
  • Modificaciones en .htaccess y wp-config.php.
  • Funciones PHP sospechosas como eval(base64_decode(...)), gzinflate, str_rot13, assert($_POST[...]).
  • Tareas programadas (cron jobs) en el servidor que no hayas creado.

Si el sitio está en un hosting con SSH, este comando muestra los archivos modificados en los últimos 7 días, que suelen ser los sospechosos:

bash

find . -type f -mtime -7 -name "*.php"

Paso 6: Verificación con escáneres profesionales

Después de la limpieza manual, pasa dos o tres escáneres distintos para confirmar. Wordfence solo no es suficiente. Usa también Sucuri SiteCheck, Maldet a nivel de servidor si tienes acceso SSH, y si tienes dudas, pide una segunda opinión a un profesional.

Paso 7: Solicitar la retirada de los avisos de Google

Si Google ha marcado tu sitio como peligroso, no basta con limpiarlo. Hay que pedirle a Google que vuelva a escanearlo:

  • Entra en Google Search Console > Seguridad y acciones manuales > Problemas de seguridad.
  • Solicita una revisión describiendo qué has hecho para limpiar el sitio.
  • La retirada del aviso puede tardar de 24 horas a varios días.

Cómo blindar tu WordPress para que no vuelva a pasar

Limpiar es solo la mitad del trabajo. Si no cambias lo que permitió el hackeo, volverás a estar infectado en semanas. Estas son las medidas que aplico siempre tras una limpieza:

  • Actualizaciones automáticas de WordPress, plugins y temas. Sin excepciones. Más del 75% de los WordPress hackeados estaban desactualizados.
  • Copias de seguridad automáticas diarias, almacenadas fuera del servidor (Google Drive, Dropbox, S3). Que no estén en el mismo hosting que la web.
  • Doble factor de autenticación (2FA) en todas las cuentas de administrador.
  • Cambio de la URL de login (/wp-admin/ por algo personalizado). Elimina el 90% de los ataques automatizados.
  • Limitar intentos de acceso con un plugin que bloquee IPs tras varios intentos fallidos.
  • Firewall a nivel de servidor o CDN (Cloudflare incluso en plan gratuito ya filtra mucho tráfico malicioso).
  • Permisos correctos: 644 para archivos y 755 para carpetas. wp-config.php a 600.
  • Eliminar todos los plugins y temas que no uses. Cada uno es una puerta potencial, aunque esté desactivado.
  • Hosting de calidad. Un hosting compartido barato sin aislamiento entre cuentas es un riesgo estructural que ningún plugin de seguridad va a solucionar.
  • Monitorización continua: alguien que vigile el sitio, no solo cuando hay un problema visible.

¿Lo hago yo o contrato a un profesional?

Esta es la pregunta clave. Si la web es personal, tienes tiempo, conocimientos técnicos y tolerancia a equivocarte, probablemente puedas seguir esta guía y resolverlo. Si la web genera ingresos, gestiona pedidos de clientes, almacena datos personales o no puedes permitirte estar caído otros tres días intentándolo, contrata a alguien que lo haga bien a la primera.

Los costes de una limpieza profesional son ridículos comparados con el coste de:

  • Una semana de WooCommerce caído.
  • Una penalización de Google que tarda meses en revertirse.
  • Una sanción de la AEPD por una brecha de datos no notificada.
  • Un cliente que recibe spam desde tu dominio y pierde la confianza en tu marca.

Y, sobre todo, una limpieza incompleta hecha por ti puede pasar inadvertida durante semanas mientras el atacante mantiene el control. He visto muchos casos en los que el cliente creía que lo había arreglado y, en realidad, el malware solo había dejado de mostrarse al admin logueado.

Preguntas frecuentes sobre WordPress hackeado

¿Cuánto tarda en limpiarse un WordPress hackeado? Un hackeo estándar puede limpiarse en 2-6 horas si se hace bien. Casos complejos (WooCommerce grandes, multisite, hackeos profundos a nivel de servidor) pueden requerir entre 1 y 3 días.

¿Puedo limpiar la web restaurando un backup anterior? Solo si tienes la certeza de que ese backup es anterior a la infección. La mayoría de los hackeos llevan semanas o meses activos antes de detectarse, así que los backups recientes suelen estar también infectados. Y aunque restaurar limpie los archivos, la vulnerabilidad por la que entraron seguirá ahí.

¿Wordfence o Sucuri son suficientes para limpiar el sitio? Como herramientas de escaneo son útiles. Como solución completa, no. Detectan el malware más conocido, pero hay backdoors personalizados, código ofuscado e inyecciones en base de datos que se les escapan. Y ninguno corrige el punto de entrada original.

¿Mi SEO se va a recuperar después de la limpieza? Sí, en la mayoría de los casos. Si Google marcó el sitio como peligroso, una vez retirado el aviso el ranking se recupera en semanas. Si el atacante creó miles de páginas spam que llegaron a indexarse, hay que hacer un trabajo extra de desindexación que puede llevar más tiempo.

¿Cuánto cuesta una limpieza profesional? Depende del alcance. Para una web informativa estándar suele estar entre 200-500€. Para WooCommerce con muchos pedidos o sitios multisite, puede llegar a 1.000-2.000€. En todos los casos, es muchísimo menos de lo que cuesta seguir caído o ser penalizado por Google. Si quieres ver más, tenemos un análisis completo en Medidas contra spam WordPress que sí funcionan.

¿Y si me lo hago yo y me equivoco? El riesgo principal no es romper la web (eso se recupera con un backup), sino dejar backdoors activos sin saberlo. Si después de limpiar el sitio vuelve a fallar en cuestión de días o semanas, es señal clara de que la limpieza fue incompleta. En ese punto, llamar a un profesional ya no es opcional. Tratamos este tema a fondo en Malware en WordPress: cómo detectarlo y proteger tu negocio.

Podemos recuperar tu WordPress hackeado y reforzar su seguridad.

Scroll al inicio