Skip to content

Todo para WordPress, el desarrollo web — y mucho más

🔐 Cómo limpiar y restaurar un sitio WordPress hackeado: una guía paso a paso

🔐 Cómo limpiar y restaurar un sitio WordPress hackeado: una guía paso a paso

Se despierta una mañana y descubre que su sitio de WordPress se ha convertido en la sucursal de un casino en línea o ha caído silenciosamente en una penalización de Google. ¿Le suena familiar? Un hackeo destruye mucho más que archivos en el servidor: el tráfico cae a cero, el posicionamiento en buscadores se desploma y el negocio se paraliza durante días, a veces semanas.

El peor momento es cuando el soporte del hosting se lava las manos: «Las copias de seguridad también están infectadas, no podemos ayudarle». Una historia típica para miles de propietarios de sitios, especialmente aquellos con planes de hosting compartido económicos.

La buena noticia: incluso un sitio completamente comprometido puede limpiarse y restaurarse en una tarde. Sin un ejército de programadores ni contratos costosos con empresas de seguridad. Necesita mantener la cabeza fría, seguir la secuencia correcta de pasos y saber dónde se esconde el código malicioso.

💡 Resumen rápido:

  • Evalúe el alcance: ¿tiene acceso de administrador, qué dice el proveedor de hosting, qué archivos están afectados?
  • Contacte a su proveedor de hosting y obtenga una lista de los archivos infectados
  • Elimine o reemplace los archivos comprometidos mediante cPanel, FTP o WP-CLI
  • Restaure una versión limpia del sitio desde una copia de seguridad o reinstale el núcleo
  • Cambie TODAS las contraseñas, las claves de seguridad en wp-config.php y cierre el punto de entrada
  • Solicite la eliminación de las listas negras de Google y del hosting

Paso 1: Evalúe el alcance y no entre en pánico

Notificación de hackeo del proveedor de hosting

Primero, verifique si el panel de administración es accesible. Si wp-admin le permite entrar e iniciar sesión, la situación tiene solución, a menudo en menos de una hora. Si el acceso está bloqueado, tendrá que trabajar a través del panel de hosting o FTP, pero eso tampoco es una sentencia de muerte.

Segundo: no elimine todo el sitio presa del pánico. En el 90% de los casos, los archivos infectados son específicos, no toda la instalación de WordPress. Vaya a Google Search Console, a la pestaña Seguridad, donde encontrará las URL que Google marcó como maliciosas. Esto le dará una primera idea del alcance.

Tercero: contacte a su proveedor de hosting de inmediato. No con un «nos hackearon, ayuda», sino específicamente: «Envíeme una lista de los archivos modificados con marcas de tiempo y los registros de actividad sospechosa de las últimas 72 horas». El proveedor tiene los registros del servidor, ve las anomalías y puede proporcionarle una lista exacta de los archivos infectados.

Si el soporte se demora, escale la situación: llame, publique en las redes sociales de la empresa, abra otro ticket. La mayoría de los proveedores de hosting se toman en serio las consultas públicas, ya que el daño reputacional cuesta más que una hora del tiempo de un ingeniero.

Paso 2: Encuentre y elimine los archivos infectados

Lista de archivos PHP infectados con código malicioso

Una vez que reciba la lista de archivos infectados de su proveedor de hosting o los descubra mediante un escáner, proceda metódicamente. El orden importa: si pasa por alto una puerta trasera, el atacante regresará en 24 horas.

Haga una copia completa del sitio. Descargue TODOS los archivos a su computadora local mediante FTP o SFTP. Incluso los infectados, ya que serán útiles para el análisis y como seguro en caso de que algo salga mal.

Reinstale el núcleo de WordPress. Elimine por completo las carpetas wp-admin e wp-includes, luego descargue un ZIP nuevo de wordpress.org y extráigalo sobre los archivos existentes. Reemplace todo excepto wp-content y wp-config.php. Esto garantiza que los archivos del sistema estén limpios.

Revise wp-content. Los plugins y los temas son los principales objetivos de los atacantes. Si un plugin está infectado, elimine su carpeta por completo y reinstálelo desde el repositorio oficial. Si un tema está infectado y está usando un tema hijo, lo más probable es que solo el tema padre se haya visto afectado, así que reinstálelo.

Busque firmas de código malicioso. Los marcadores clásicos de shells PHP y puertas traseras: eval y base64_decode son los más comunes. Busque también gzinflate, str_rot13 y assert. Ejecute una búsqueda con grep en todos los archivos .php. Revise los archivos ocultos: .htaccess, php.ini y archivos .ico con código PHP en su interior. A los hackers les encanta disfrazar las puertas traseras como iconos inofensivos.

Paso 3: Restaure el sitio desde una copia limpia

Si tiene una copia de seguridad y está limpia, está de suerte: la restauración toma de 15 a 20 minutos. Vaya a su plugin de copias de seguridad o al panel de hosting, seleccione un punto de restauración ANTERIOR a la fecha del hackeo e inicie el proceso. Inmediatamente después de la restauración, ejecute un escáner de seguridad: la puerta trasera podría haberse instalado mucho antes del ataque activo.

¿No tiene copia de seguridad? Reinstale WordPress a través del panel de administración: «Actualizaciones» → «Reinstalar». Esto actualiza el núcleo pero deja intactos los plugins y temas, y deberá revisarlos manualmente como se describe en el paso 2.

Después de la restauración, asegúrese de que el sitio cargue y proceda de inmediato al paso 4. El atacante podría intentar regresar a través de una puerta trasera remanente en cuestión de horas.

Paso 4: Cambie todas las credenciales y claves

Interfaz para generar claves de seguridad en wp-config.php

Primero y más urgente: genere nuevas claves de seguridad de WordPress. Insértelas en wp-config.php reemplazando las anteriores. Esto cierra instantáneamente TODAS las sesiones activas, incluida la del atacante si aún está en el panel de administración.

A continuación, cambie todo lo de esta lista sin omitir nada:

  • Contraseña del administrador de WordPress y de todos los usuarios con el rol «administrator»
  • Contraseña de la cuenta de hosting: cPanel, ISPmanager o panel personalizado
  • Contraseña de la base de datos MySQL y actualícela en wp-config.php
  • Contraseña de FTP o SFTP
  • Contraseña de la cuenta de correo electrónico vinculada al administrador del sitio
  • Claves API: Google Search Console, CDN, servicios de correo, pasarelas de pago

Revise la tabla wp_users en la base de datos: ¿hay usuarios desconocidos con privilegios de administrador? Si encuentra alguno, elimínelo de inmediato. Esta es una huella clásica del ataque: el atacante crea una cuenta oculta y vuelve a entrar por ella después de su «limpieza».

Paso 5: Solicite la retirada de las listas negras

Después de la limpieza, el sitio puede seguir apareciendo en las listas negras de Google Safe Browsing durante varios días más. Los navegadores mostrarán una pantalla roja de advertencia incluso si el código malicioso ya se ha eliminado. Vaya al panel de seguridad de Search Console, a la pestaña «Problemas de seguridad», y haga clic en «Solicitar revisión». Google suele retirar la marca en un plazo de 24 a 72 horas.

Al mismo tiempo, contacte con su proveedor de hosting: es posible que hayan añadido su IP o dominio a una lista negra interna, lo que impide que el sitio cargue aunque esté limpio. Explique que la limpieza se ha completado y solicite que se levante el bloqueo.

Una vez retiradas todas las marcas, compruebe el sitio en modo incógnito. Debería cargar sin advertencias de seguridad. Guarde una captura de pantalla, puede ser útil si el bloqueo reaparece.

Paso 6: Cierre el punto de entrada y refuerce la protección

Diagrama de protección de WordPress tras la recuperación de un hackeo

La limpieza es solo la mitad de la batalla. Si no cierra la brecha por la que entraron, el segundo hackeo ocurrirá decenas de veces más rápido que el primero. Ahora conoce el vector de ataque exacto, así que use ese conocimiento.

Instale un firewall. Wordfence proporciona un firewall de endpoint y un escáner de firmas, y la versión gratuita es suficiente para la mayoría de los sitios. Solid Security (antes iThemes Security) añade un conjunto de reglas de endurecimiento: cambiar el prefijo de la base de datos, desactivar el editor de archivos en el panel de administración y autenticación de dos factores. Configuración mínima: un firewall más un escáner.

Conecte un WAF en la nube. Cloudflare con reglas para WordPress o Sucuri filtran el tráfico antes de que llegue al servidor. Después de un hackeo, esto no es un lujo, sino una necesidad: un WAF en la nube bloquea las solicitudes maliciosas a nivel de DNS y reduce la carga sobre su sitio.

Configure la monitorización de integridad de archivos. Wordfence y Solid Security pueden alertarle de cualquier cambio en los archivos PHP. Se enterará de un ataque repetido en el mismo minuto, no una semana después, cuando Google marque el sitio como malicioso.

Revise su lista de plugins. Cada plugin innecesario es un punto de entrada potencial. Elimine todo lo que no use. Actualice los restantes a las últimas versiones y active las actualizaciones automáticas donde sea posible.

Cómo proteger WordPress de hackeos en el futuro

Comparativa de paneles de control de hosting para WordPress

La prevención cuesta cientos de veces menos que la recuperación. Esto es lo que necesita hacer ahora mismo, incluso si su sitio aún no ha sido hackeado.

Migre a un hosting administrado

Cuatro dólares al mes por un plan compartido es un precio tentador. Pero cuando su sitio vive en el mismo servidor con cientos de otros, un hackeo en uno de sus vecinos casi con seguridad le alcanza a usted. La contaminación entre sitios en hosting compartido no es teoría: según Sucuri, alrededor de un tercio de los sitios WordPress infectados están alojados en plataformas compartidas.

El hosting WordPress administrado (WP Engine, Kinsta, Cloudways) proporciona un entorno aislado, copias de seguridad diarias automáticas y un equipo de seguridad disponible las 24 horas. Sí, es varias veces más caro que un plan compartido. Pero una semana de inactividad tras un hackeo cuesta más que un año de suscripción a un buen hosting.

Al elegir un proveedor, verifique tres cosas: si su entorno está aislado de los vecinos, si hay copias de seguridad diarias automáticas y con qué rapidez responde el soporte ante incidentes de seguridad. Las respuestas a estas preguntas son el mejor predictor de si sobrevivirá al próximo hackeo sin pérdidas.

Mantenga actualizados el núcleo, los temas y los plugins

Interfaz de actualización de plugins en el panel de administración de WordPress

La gran mayoría de los hackeos exitosos a WordPress ocurren a través de vulnerabilidades conocidas en plugins y temas, las mismas que los desarrolladores ya han cerrado con parches. Los atacantes escanean automáticamente internet en busca de sitios con versiones sin parchear, a menudo dentro de las 48 horas posteriores a la publicación de un CVE.

Las actualizaciones automáticas para el núcleo de WordPress están habilitadas por defecto desde la versión 5.5. Para plugins y temas del repositorio oficial de WordPress.org, active las actualizaciones automáticas de forma selectiva, ya que esto es seguro. Los plugins premium de sus propios sitios deben actualizarse manualmente, pero al menos una vez por semana.

Y sí, haga una copia de seguridad antes de cada actualización importante. Siempre.

Configure las copias de seguridad

Catálogo de temas y plugins en WordPress.org

Sin una copia de seguridad reciente, la recuperación tras un hackeo se convierte en revisar manualmente decenas de miles de archivos. Con una copia de seguridad, son cinco clics y media hora de espera.

Jetpack VaultPress Backup realiza copias de seguridad incrementales en tiempo real con almacenamiento en la nube de Automattic. BlogVault se especializa en WordPress y puede restaurar un sitio incluso si el panel de administración no funciona. BackWPup es una opción gratuita con programación y subida a Dropbox, S3 o Google Drive.

El estándar de oro: una copia de seguridad en la nube más una copia de seguridad local que descargue a su computadora una vez por semana. La copia en la nube le salva si el proveedor de hosting falla, y la local le salva si la cuenta en la nube también se ve comprometida.

Active la autenticación de dos factores

Una contraseña como admin123 o qwerty es una invitación abierta. Los ataques de fuerza bruta contra wp-login.php se ejecutan sin parar, y las contraseñas simples se descifran en segundos. Genere contraseñas de al menos 20 caracteres a través de un gestor de contraseñas (Bitwarden o 1Password), y nunca use la misma contraseña en varios sitios.

La autenticación de dos factores a través de Wordfence Login Security o Two Factor cierra el vector de fuerza bruta casi por completo: incluso conociendo la contraseña, un atacante no puede entrar sin el código TOTP de su teléfono.

Y cambie la URL de inicio de sesión estándar de /wp-admin y /wp-login.php por una personalizada. Esto no es una solución mágica, pero elimina a la gran mayoría de los bots automatizados que golpean los puntos de acceso estándar sin mirar.

⁉️🤔 Preguntas frecuentes

¿Puedo restaurar un sitio sin una copia de seguridad?

Sí, pero el proceso es más largo y complejo. Reinstale el núcleo de WordPress desde el panel de administración, revise manualmente cada plugin y tema en busca de código malicioso usando firmas como eval, base64_decode y gzinflate en los archivos .php. Cambie todas las contraseñas y claves de seguridad. El contenido no suele verse afectado: está en la base de datos, que los atacantes rara vez tocan. Una limpieza completa sin copia de seguridad toma de 2 a 4 horas, según el tamaño del sitio.

¿Cómo sé si mi sitio ha sido hackeado?

Señales: Google Search Console muestra una advertencia de seguridad, el navegador bloquea el sitio con una pantalla roja, el tráfico cayó abruptamente, aparecieron páginas ajenas en los resultados de búsqueda, el panel de administración no acepta la contraseña correcta o el proveedor de hosting envió una notificación sobre actividad sospechosa. Verificación rápida: ejecute el escáner gratuito Sucuri SiteCheck, que muestra infecciones conocidas en un minuto.

¿Qué debo hacer si el proveedor de hosting no ayuda?

Cambie de proveedor. Si en 24 horas tras el incidente no le han proporcionado una lista de archivos infectados y los registros del servidor, su equipo de seguridad no existe o está desbordado. Para un sitio de negocio, este no es un socio. Mientras se recupera, contrate un plan mínimo de hosting administrado, traslade allí una copia limpia del sitio y cierre la cuenta antigua.

¿Basta con el botón «Reinstalar» del panel de administración?

No. El botón «Reinstalar» de la sección «Actualizaciones» solo reemplaza los archivos del núcleo de WordPress. No toca los plugins infectados, los temas, las puertas traseras ocultas en wp-content ni las entradas maliciosas en .htaccess. Necesita el ciclo completo: escanear, reemplazar archivos infectados, restablecer contraseñas y claves, y revisar la base de datos en busca de administradores ocultos.

¿Vale la pena pagar por una limpieza profesional?

Si el sitio genera ingresos y el tiempo de inactividad cuesta más de unos cientos de dólares al día, sí, contrate a un especialista. Sucuri ofrece limpieza puntual de sitios, hay freelancers en Codeable y agencias especializadas en WordPress. Para un blog pequeño o una página de aterrizaje, la guía anterior es suficiente: la limpieza le tomará una tarde y el dinero ahorrado puede invertirlo en un hosting adecuado.

¿Cuánto tardará el sitio en recuperar sus posiciones en los buscadores?

Después de que Google Search Console elimine el bloqueo, el sitio se reindexa en pocos días. Las posiciones no regresan de inmediato: los algoritmos necesitan tiempo para verificar que las páginas estén limpias. Normalmente, la recuperación total toma de 2 a 4 semanas. La clave es cerrar la brecha por la que entraron; de lo contrario, un segundo hackeo echará por tierra todo el progreso.

Sitio restaurado: qué hacer para que el hackeo no se repita

Un hackeo es una llamada de atención que muestra dónde se quebró su protección. Considérelo una auditoría de seguridad gratuita: ahora conoce el vector de ataque exacto y puede cerrarlo de forma permanente.

Una lista de verificación rápida para el futuro:

  • Traslade el sitio a un hosting administrado con entorno aislado
  • Configure copias de seguridad diarias: una en la nube, otra local
  • Instale un firewall y un escáner, active las actualizaciones automáticas para los plugins del repositorio
  • Active la autenticación de dos factores para todos los administradores
  • Elimine los plugins y temas que no use

Lo más peligroso después de un hackeo es confiar en que «no volverá a pasar». Un segundo ataque por la misma brecha ocurre con mucha más frecuencia que el primero: la puerta trasera ya está instalada y el atacante conoce la dirección del sitio. Recorra toda la lista de verificación hasta el final, cierre el punto de entrada y duerma tranquilo.