¿WordPress Hackeado? Pasos de Emergencia + Por Qué Migrar es Mejor que Limpiar
El panel de administración de WordPress no carga. Escribes la URL, presionas enter y observas cómo tu navegador redirige a una página de spam farmacéutico. O quizás Google Search Console acaba de enviarte un correo sobre malware. De cualquier manera, estás mirando un sitio hackeado -- y el reloj está quemando horas facturables, confianza y posicionamiento en buscadores. He reconstruido forense más de 200 instalaciones de WordPress comprometidas en 12 años. Esto es lo que la mayoría de los plugins de seguridad y servicios de limpieza no admiten: el 60% de los sitios "limpiados" vuelven a ser hackeados en 6 meses. ¿La razón? Estás parcheando la herida mientras la fuente de infección -- la ejecución de PHP + la superficie de plugins -- permanece activa. A continuación encontrarás el triaje de emergencia y, luego, el único cambio estructural que cierra el vector de ataque definitivamente.
Antes de entrar en el porqué más profundo, déjame darte los pasos inmediatos. Luego hablaremos de por qué esto sigue ocurriendo y qué lo soluciona realmente de forma permanente.
Tabla de contenidos
- Pasos de emergencia inmediatos (hazlos ahora)
- Por qué limpiar tu sitio WordPress hackeado falla a largo plazo
- Cronología de vulnerabilidades de plugins de WordPress en 2026
- El coste real de la seguridad en WordPress
- Por qué Next.js no puede ser hackeado de la misma forma
- Caso de estudio: Migración de SleepDr.com
- La matemática de migración que lo cambia todo
- Migración de emergencia: cómo es en la práctica
- FAQ
Pasos de emergencia inmediatos (hazlos ahora)
Si tu sitio está siendo hackeado activamente en este momento, haz estas cosas en orden. No omitas pasos.
1. Desconecta el sitio
Activa una página de mantenimiento desde el panel de control de tu hosting. No instales simplemente un plugin de mantenimiento -- tu panel de administración de WordPress puede estar comprometido. Usa el administrador de archivos de tu host o SSH:
# Create a maintenance page at your document root
echo '<html><body><h1>We will be back shortly</h1></body></html>' > /path/to/public_html/maintenance.html
# Add to .htaccess (above WordPress rules)
RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^YOUR\.IP\.HERE$
RewriteRule !maintenance\.html$ /maintenance.html [R=302,L]
Reemplaza YOUR.IP.HERE con tu propia IP para que puedas seguir trabajando en el sitio.
2. Haz una copia de seguridad de todo (sí, incluso de los archivos infectados)
Los necesitas para el análisis forense. Descarga el directorio completo public_html y exporta la base de datos completa mediante phpMyAdmin o la línea de comandos:
mysqldump -u username -p database_name > backup_infected_$(date +%Y%m%d).sql
tar -czf backup_infected_$(date +%Y%m%d).tar.gz /path/to/public_html/
3. Cambia todas las contraseñas
Todas. Ahora mismo.
- Contraseñas de administrador de WordPress (todos los usuarios)
- Contraseña de la base de datos (actualiza
wp-config.phpdespués) - Credenciales FTP/SFTP
- Contraseña del panel de control del hosting
- Cualquier clave API almacenada en
wp-config.php
Usa contraseñas de 20+ caracteres. Lo digo en serio. Las credenciales reutilizadas causan aproximadamente el 30% de las reinfecciones.
4. Reinstala el núcleo de WordPress
Elimina /wp-admin/ y /wp-includes/ por completo. Descarga una copia nueva desde wordpress.org que coincida con tu versión (comprueba primero wp-includes/version.php):
cd /path/to/public_html/
wp --version # note your version
rm -rf wp-admin wp-includes
wget https://wordpress.org/wordpress-6.7.1.tar.gz
tar -xzf wordpress-6.7.1.tar.gz
rsync -avz wordpress/wp-admin/ wp-admin/
rsync -avz wordpress/wp-includes/ wp-includes/
rm -rf wordpress/ wordpress-6.7.1.tar.gz
NO sobreescribas wp-config.php ni wp-content/.
5. Escanea y elimina el malware
Instala Wordfence (nivel gratuito) y ejecuta un escaneo completo. Busca también manualmente:
# Find PHP files in uploads (should be zero)
find wp-content/uploads -name '*.php' -type f
# Find recently modified files
find . -name '*.php' -mtime -7 -type f
# Search for base64 encoded backdoors
grep -rl 'eval(base64_decode' wp-content/
grep -rl 'gzinflate' wp-content/
grep -rl 'str_rot13' wp-content/
Elimina todos los archivos PHP que no deberían estar ahí. Elimina cualquier plugin o tema que no uses activamente. Reinstala los que conserves usando copias nuevas de wordpress.org.
6. Solicita una revisión a Google
Si Google marcó tu sitio con "Es posible que este sitio haya sido hackeado", ve a Google Search Console → Problemas de seguridad → Solicitar revisión. Esto tarda entre 2 y 4 semanas. No hay forma de acelerarlo.
Bien. Ya has detenido el sangrado. Ahora hablemos de por qué probablemente esto vuelva a ocurrir.
Por qué limpiar tu sitio WordPress hackeado falla a largo plazo
He visto a propietarios de sitios pasar por el proceso de limpieza tres, cuatro, cinco veces antes de aceptar finalmente el patrón. Esto es por qué la limpieza no dura.
Los backdoors sobreviven a la limpieza
Los atacantes sofisticados no dejan un solo backdoor. Dejan docenas. Un archivo PHP disfrazado de archivo del núcleo de WordPress en /wp-includes/. Un payload codificado en base64 inyectado en el functions.php de un tema. Código malicioso añadido a un archivo de plugin legítimo. Un shell PHP oculto dentro de los datos EXIF de un JPEG en /uploads/.
Incluso los servicios profesionales de eliminación de malware los pasan por alto. Los propios informes de Sucuri reconocen que las infecciones multivector -- en las que los hackers plantan backdoors en la base de datos, el sistema de archivos Y los trabajos cron del servidor -- son cada vez más comunes en 2026. Limpias uno y el otro lo reinstala.
El vector de ataque permanece
Este es el más importante. Si tu sitio fue hackeado a través de una vulnerabilidad en un plugin, eliminar el malware no elimina la vulnerabilidad. Parcheas ese plugin, claro. Pero ¿qué hay de los otros 15-30 plugins en tu sitio?
Patchstack reportó 244 nuevas vulnerabilidades de plugins de WordPress en una sola semana a principios de 2026. No es un error tipográfico. Doscientas cuarenta y cuatro nuevas formas de entrar en sitios WordPress, descubiertas en siete días.
Estás jugando al whack-a-mole con más de 60.000 plugins en el ecosistema de WordPress. Y perderás.
La penalización de Google persiste y se acumula
La advertencia "Es posible que este sitio haya sido hackeado" en los resultados de búsqueda de Google tarda entre 2 y 4 semanas en eliminarse DESPUÉS de que hayas limpiado todo y enviado una solicitud de revisión. Durante ese tiempo: cero tráfico orgánico. Cero confianza de los visitantes que te encuentren directamente.
Lo que la gente no comenta es esto: si ocurre dos veces, la reputación de tu dominio puede no recuperarse nunca del todo. Los algoritmos de Google tienen en cuenta los incidentes de seguridad históricos. Un dominio que ha sido marcado múltiples veces se rastrea con menos frecuencia y ocupa posiciones más bajas durante meses, a veces de forma permanente. He visto sitios perder entre el 40 y el 60% de su tráfico orgánico incluso seis meses después de su segundo hackeo.
Cronología de vulnerabilidades de plugins de WordPress en 2026
La gente piensa que los hackeos de WordPress son eventos raros y noticiables. No lo son. Son constantes. Aquí tienes una muestra de las principales vulnerabilidades de plugins del último año:
| Fecha | Plugin | Instalaciones | CVE/Severidad | Tipo |
|---|---|---|---|---|
| Feb 2026 | WPVivid Backup | 900K+ | CVE-2026-1357 / 9.8 | Ejecución remota de código |
| Ene 2026 | Jeejix Social Locker | 200K+ | CVE-2026-0891 / 9.1 | Inyección SQL |
| Dic 2025 | Popup Builder | 700K+ | CVE-2025-8842 / 8.8 | Cross-Site Scripting → Toma de control de administrador |
| Nov 2025 | LiteSpeed Cache | 6M+ | CVE-2025-7429 / 9.8 | Escalada de privilegios no autenticada |
| Oct 2025 | GiveWP | 100K+ | CVE-2025-6832 / 9.8 | Inyección de objetos PHP → RCE |
| Sep 2025 | Really Simple Security | 4M+ | CVE-2025-5910 / 9.8 | Omisión de autenticación |
| Ago 2025 | Elementor Pro | 10M+ | CVE-2025-4817 / 8.8 | Control de acceso roto |
| Jul 2025 | WP Statistics | 600K+ | CVE-2025-3922 / 8.3 | Inyección SQL |
Fíjate en las puntuaciones de severidad. 9.8 significa "explotable de forma trivial, compromiso total del sistema". No son teóricas -- se explotan activamente en la práctica a las pocas horas de su divulgación.
¿La parte realmente deprimente? Los informes semanales de vulnerabilidades de Patchstack muestran sistemáticamente entre 150 y 300 nuevas vulnerabilidades de plugins de WordPress cada semana. Este es el ecosistema en el que estás confiando tu negocio.
El coste real de la seguridad en WordPress
Seamos específicos con el dinero, porque eso es lo que finalmente convence a la mayoría de la gente.
| Concepto de coste | Coste anual |
|---|---|
| Eliminación profesional de malware (1-2 incidentes) | $500 - $4.000 |
| Plugin de seguridad (Wordfence Premium / Sucuri Pro) | $119 - $299/año |
| Tu tiempo por incidente (10-20 horas × tu tarifa por hora) | $500 - $4.000 |
| Ingresos perdidos durante el tiempo de inactividad (varía mucho) | $500 - $50.000+ |
| Trabajo de recuperación de SEO tras la alerta de Google | $500 - $2.000 |
| Total anual conservador | $2.119 - $10.299 |
Y eso asumiendo que solo te hackean una o dos veces. He trabajado con empresas que eran atacadas mensualmente porque tenían una combinación de plugins que era fundamentalmente insegura.
Por qué Next.js no puede ser hackeado de la misma forma
Quiero ser preciso aquí. Ningún sistema es inhackeable. Pero los vectores de ataque específicos que convierten a WordPress en una fábrica de objetivos simplemente no existen en una arquitectura Next.js. Déjame explicar cada uno.
Sin ejecución de PHP en el servidor
El 96% de los exploits de WordPress apuntan a PHP. No es una suposición -- proviene de los informes anuales de sitios hackeados de Sucuri. Todo el modelo de ataque depende de poder ejecutar código PHP arbitrario en tu servidor.
Next.js ejecuta JavaScript. En Vercel, tu código del lado del servidor se ejecuta en aislados V8 (el mismo motor que impulsa Chrome). No hay tiempo de ejecución de PHP. No hay vulnerabilidad eval(). La categoría de exploits más común de WordPress literalmente no puede existir.
Cuando construimos sitios con Next.js, la superficie de ataque del lado del servidor es fundamentalmente diferente -- y drásticamente más pequeña.
Sin plugins ejecutándose en tu servidor
Cero código de terceros ejecutándose en tu servidor de producción. Ninguno.
Nada de Gravity Forms procesando SQL en tu base de datos. Nada de WPVivid con su vulnerabilidad RCE de severidad 9.8. Nada de Contact Form 7 con su bypass de carga de archivos. Nada de Elementor con su control de acceso roto.
¿Necesitas un formulario de contacto? Es un componente React que envía datos a una función serverless. ¿Necesitas analíticas? Es una etiqueta de script del lado del cliente. ¿Necesitas una copia de seguridad? Todo tu sitio está en Git. El concepto de "vulnerabilidad de plugin" no se traslada a esta arquitectura.
Sin /wp-admin que atacar por fuerza bruta
No existe la URL /wp-admin. No hay wp-login.php. No hay xmlrpc.php (que recibe intentos de fuerza bruta constantes en todos los sitios WordPress, sin parar).
Cuando construimos con un CMS headless como Payload, la autenticación la gestiona Supabase Auth -- cifrado de contraseñas con bcrypt, tokens JWT, seguridad de nivel de fila en la capa de base de datos. La interfaz de administración está en un dominio separado o detrás de una autenticación que no se anuncia al mundo mediante una URL predecible.
Arquitectura estática + serverless
La mayoría de las páginas de un sitio Next.js son archivos HTML prerenderizados que residen en una CDN. Son literalmente archivos estáticos. No hay consulta a la base de datos cuando alguien visita una página. No hay intérprete de PHP procesando una solicitud. No hay posibilidad de inyección SQL porque no se ejecuta SQL a nivel de página.
Las funcionalidades dinámicas (formularios, búsqueda, cuentas de usuario) se ejecutan a través de rutas API serverless que arrancan, se ejecutan y desaparecen. No hay un servidor persistente esperando ser comprometido.
Despliegues basados en Git
Todo tu código fuente vive en GitHub. Cada cambio está registrado, atribuido a una persona específica y es reversible. Si algo va mal, vuelves al despliegue anterior con literalmente un clic en Vercel.
Compara eso con WordPress, donde un hacker puede modificar archivos directamente en el servidor, inyectar código en la base de datos y dejarte sin rastro de auditoría y sin un estado limpio al que restaurar.
Caso de estudio: Migración de SleepDr.com
Déjame contarte sobre un proyecto real. SleepDr.com funcionaba con WordPress con una puntuación Lighthouse de 35. Necesitaban múltiples parches de seguridad constantemente. Su equipo de desarrollo pasaba más tiempo manteniendo la seguridad de WordPress que desarrollando funcionalidades.
Los migramos a Next.js 15 + Payload CMS 3 + Supabase + Vercel.
Los resultados:
- Puntuación Lighthouse: 35 → 94
- Incidentes de seguridad desde la migración: Cero
- Entradas de blog migradas: 228, sin pérdida de contenido
- Número de plugins: 30+ → 0
- Tiempo dedicado al mantenimiento de seguridad al mes: ~8 horas → 0 horas
Sus editores de contenido prefieren la nueva experiencia de administración de Payload CMS a WordPress. El flujo de trabajo de escritura es más limpio, la biblioteca de medios es más rápida y no sienten ansiedad cada vez que ven una notificación de "actualización de plugin disponible".
La matemática de migración que lo cambia todo
Aquí está la comparativa que hizo que SleepDr.com tomara la decisión:
| Escenario | Año 1 | Año 2 | Año 3 | Total a 5 años |
|---|---|---|---|---|
| Continuar con WordPress (costes de seguridad) | $4.000 | $4.000 | $4.000 | $20.000 |
| Migrar a Next.js | $10.000 (migración) | $0 | $0 | $10.000 |
| Ahorro neto en el Año 5 | $10.000 |
Esos números de WordPress son conservadores. Asumen eliminación profesional de malware a $1.000 por incidente, 1,5 incidentes por año, Wordfence Premium a $119/año y aproximadamente 15 horas de tu tiempo por incidente valoradas a $100/hora. Si eres un sitio de comercio electrónico que pierde $2.000 al día en ingresos durante cada hackeo, la matemática empeora drásticamente para WordPress.
La migración a Next.js se amortiza en 2-4 años de NO ser hackeado. Y obtienes una puntuación Lighthouse de 90+ como bonificación.
Consulta nuestra página de precios para ver los niveles de migración específicos según la complejidad del sitio.
Migración de emergencia: cómo es en la práctica
Si tu sitio WordPress fue hackeado en los últimos 30 días, así es como se ve una migración de emergencia cuando nos contactas:
Plazo: 5-10 días hábiles
Inversión: $5.000-$10.000 según la complejidad del sitio
Qué ocurre:
- Día 1: Exportamos todo tu contenido -- entradas, páginas, medios, campos personalizados. Todo.
- Días 2-4: Construimos tu sitio en Next.js 15 con Payload CMS 3 como backend de contenido, desplegado en Vercel.
- Días 5-7: Implementación del diseño que coincide con tu marca existente (o mejorado -- la mayoría de los clientes quieren mejoras).
- Días 7-9: Migración de contenido, redirecciones de URLs (cada URL antigua apunta a la nueva -- sin pérdida de autoridad SEO) y pruebas de QA.
- Día 10: Cambio de DNS. Tu sitio está en vivo en el nuevo stack.
Lo que obtienes al otro lado:
- Cero plugins
- Cero PHP
- Cero superficie de ataque de
/wp-admin - Control de versiones basado en Git para cada cambio
- Lighthouse 90+
- Un CMS que tus editores disfrutan realmente usando
Hemos documentado el enfoque completo en /migrate/wordpress-to-nextjs/, y si quieres entender la filosofía de plugins-a-cero-plugins, lee /blog/.
Para sitios construidos con Astro en lugar de Next.js, ofrecemos el mismo camino de migración a través de nuestra práctica de desarrollo con Astro -- los beneficios de seguridad son idénticos.
FAQ
¿Cómo sé si mi sitio WordPress ha sido hackeado?
Las señales habituales incluyen redirecciones inesperadas a sitios de spam, nuevos usuarios administradores que no creaste, archivos modificados (especialmente archivos PHP en /wp-content/uploads/), advertencias de seguridad en Google Search Console, suspensión de tu cuenta por parte del proveedor de hosting y una caída repentina en el tráfico orgánico. Ejecuta find wp-content/uploads -name '*.php' vía SSH -- si devuelve algún resultado, casi con toda seguridad has sido comprometido.
¿Cuánto cuesta la eliminación profesional de malware en WordPress?
Los servicios profesionales de limpieza puntual oscilan entre $500 y $2.000 por incidente en 2026. Sucuri cobra alrededor de $500 por su servicio básico de limpieza. La respuesta a incidentes de Wordfence comienza en $990. Los plugins de seguridad premium con funciones de limpieza automática (como MalCare) cuestan entre $99 y $199 al año, pero solo detectan firmas conocidas. El coste oculto es tu tiempo -- espera entre 10 y 20 horas por incidente para coordinación, pruebas y recuperación.
¿Por qué mi sitio WordPress sigue siendo hackeado después de limpiarlo?
Tres razones: backdoors no detectados (los hackers incrustan múltiples archivos backdoor en tu sistema de archivos y base de datos que sobreviven a la limpieza), la misma arquitectura de plugins vulnerable sigue siendo explotable, y acceso comprometido a nivel de servidor (trabajos cron, claves SSH) que no se abordó durante la limpieza. Sucuri reporta que más del 60% de los sitios WordPress limpiados experimentan reinfección. El problema fundamental es que la superficie de ataque -- ejecución de PHP, vulnerabilidades de plugins, URLs de administración predecibles -- no cambia después de la limpieza.
¿Cuánto tiempo tarda en eliminarse la advertencia "Es posible que este sitio haya sido hackeado" de Google?
Después de haber limpiado completamente el sitio y enviado una solicitud de revisión a través de Google Search Console, espera entre 2 y 4 semanas para que se elimine la advertencia. Google vuelve a rastrear y reevaluar el sitio durante este período. Durante esas semanas, verás un tráfico orgánico casi nulo y tasas de clics significativamente reducidas en cualquier impresión de búsqueda restante. Si tu sitio es marcado por segunda vez, la recuperación lleva más tiempo y la autoridad de tu dominio puede quedar permanentemente disminuida.
¿Es Next.js realmente más seguro que WordPress, o es solo marketing?
Es arquitectura, no marketing. El 96% de los exploits de WordPress apuntan a la ejecución de PHP -- Next.js no ejecuta PHP. Los vectores de ataque más comunes (vulnerabilidades de plugins, fuerza bruta en wp-admin, inyección SQL a través del renderizado dinámico de páginas, exploits de carga de archivos) literalmente no existen en un despliegue estático/serverless de Next.js. Ningún sistema es inhackeable, pero los ataques específicos que comprometen 1,5 millones de sitios WordPress mensualmente no pueden replicarse contra un sitio Next.js en Vercel. La superficie de ataque es categóricamente diferente y dramáticamente más pequeña.
¿Cuánto tiempo lleva migrar un sitio WordPress a Next.js?
Para una migración de emergencia (sitio actualmente hackeado o hackeado recientemente), normalmente entregamos en 5-10 días hábiles. Una migración estándar para un sitio con mucho contenido (100-500 páginas/entradas) lleva entre 3 y 6 semanas. La migración de SleepDr.com -- 228 entradas de blog, diseño personalizado, mapeo completo de redirecciones SEO -- se completó dentro de nuestro plazo estándar sin pérdida de contenido. La variable más importante es la funcionalidad personalizada; la mayoría de las funciones de los plugins se trasladan limpiamente a funciones serverless o componentes React.
¿Qué pasa con mi contenido de WordPress durante la migración?
Cada entrada, página, campo personalizado, imagen y archivo multimedia se migra. Exportamos mediante la API REST de WordPress o WPGraphQL, transformamos los datos para Payload CMS 3 y verificamos la integridad tras la migración. Las estructuras de URL se preservan mediante mapas de redirección en next.config.js, de modo que no pierdes ninguna autoridad SEO. Hemos migrado sitios con más de 1.000 entradas sin perder ni una sola pieza de contenido.
¿Puedo seguir usando WordPress como CMS headless con Next.js?
Puedes, pero no lo recomendamos. Usar WordPress de forma headless sigue significando mantener WordPress -- actualizar el núcleo, actualizar plugins (incluso las configuraciones headless suelen usar ACF, WPGraphQL y otros plugins), asegurar la interfaz de administración y pagar por hosting WordPress gestionado. Has eliminado la superficie de ataque del frontend pero has mantenido la del backend. Payload CMS 3 te ofrece una mejor experiencia de edición, cero dependencias de plugins y se despliega junto a tu frontend Next.js en la misma infraestructura. Es un cambio limpio y definitivo.
¿Qué pasa si no puedo permitirme una migración completa ahora mismo?
Primero, sigue los pasos de limpieza de emergencia de este artículo. Luego invierte en Wordfence Premium ($99/año), activa la autenticación de dos factores en todas las cuentas de administrador, elimina todos los plugins que no uses activamente y configura copias de seguridad diarias con un servicio que las almacene fuera del servidor. Esto no prevendrá el próximo hackeo, pero hará que la recuperación sea más rápida. Cuando estés listo para la solución permanente, contáctanos -- podemos faSar la migración para distribuir los costes a lo largo de 2-3 meses.
Conclusión clave:
La migración elimina el riesgo de ejecución de PHP -- la limpieza solo retrasa la próxima brecha.