WordPress: Cómo eliminar malware y limpiar un sitio hackeado (guía paso a paso)
Primeros pasos: ¿Cómo saber si tu WordPress está hackeado?
Antes de entrar en pánico, respira. Que tu web esté hackeada no es el fin del mundo, y con esta guía podrás limpiar WordPress hackeado incluso si no eres un experto en tecnología. Lo primero es identificar los síntomas.
Los signos más comunes de que tu sitio ha sido comprometido incluyen:
- Avisos de Google Safe Browsing: Al buscar tu dominio, Chrome o Firefox te muestran una advertencia de "sitio engañoso" o "sitio peligroso".
- Redirecciones extrañas: Al hacer clic en tus enlaces, los usuarios son llevados a páginas de spam, casinos online o webs de farmacia.
- Contenido invisible: Tu web muestra texto o enlaces ocultos (a menudo en blanco o en el pie de página) que solo ven los buscadores.
- Rendimiento pésimo: El sitio carga extremadamente lento porque está ejecutando scripts maliciosos en segundo plano.
- Usuarios administradores desconocidos: En tu panel de WP, aparece un usuario llamado "admin2" o "support" que tú no creaste.
- Archivos modificados: Detectas que archivos como
index.phpo.htaccesstienen un tamaño o fecha de modificación sospechosa.
[WARNING] Si tu web está hackeada, no la borres ni la reinstales de inmediato. Si haces eso, perderás la evidencia del ataque y podrías dejar una puerta trasera abierta que vuelva a infectar el sitio en horas.
Fase 1: Preparación antes de limpiar WordPress hackeado
1.1. Cambia todas tus contraseñas YA
El primer paso es cortar el acceso al atacante. Cambia las contraseñas de:
- Tu panel de WordPress (todos los usuarios).
- Tu base de datos MySQL (desde tu panel de hosting).
- Tu cuenta FTP/SFTP.
- Tu correo electrónico asociado al dominio (sí, ese también, porque desde ahí pueden resetear todo lo demás).
Usa contraseñas largas y únicas. Si no quieres memorizarlas, usa un gestor de contraseñas.
1.2. Haz una copia de seguridad completa (antes de tocar nada)
[INFO] Aunque parezca contradictorio, necesitas una copia del sitio infectado. Esta copia te servirá para analizar el malware sin poner en riesgo tu web limpia.
Crea una copia de seguridad de:
- Archivos: Descarga todo el contenido de
public_html(o el directorio raíz de tu WordPress) por FTP. - Base de datos: Exporta un backup SQL desde phpMyAdmin o desde tu panel de hosting.
Guarda esta copia en tu ordenador local. No la subas a ningún sitio público.
1.3. Identifica el alcance del ataque
Antes de usar herramientas de limpieza automáticas, haz una inspección visual rápida. Busca en tu gestor de archivos (o FTP) estos archivos sospechosos:
wp-admin/maint.phpo archivos con nombres aleatorios (ej:a4k2j9.php).- Archivos con doble extensión (
imagen.jpg.php). - Archivos
.phpen carpetas donde no deberían estar (como/uploads/).
Fase 2: Limpieza manual de malware en WordPress
Aquí empieza la acción. Si eres meticuloso, la limpieza manual es la más efectiva. Sigue estos pasos en orden.
2.1. Pon tu web en modo mantenimiento
Antes de tocar nada, activa un plugin de mantenimiento o simplemente añade un archivo .maintenance en tu carpeta raíz. Esto evita que los visitantes (y los bots maliciosos) interactúen con el sitio mientras lo limpias.
2.2. Audita los archivos del núcleo de WordPress
La forma más rápida de detectar archivos modificados es comparar tu instalación con una copia limpia de WordPress.
- Descarga la última versión de WordPress desde wordpress.org.
- Descomprime el ZIP en tu ordenador.
- Usa un cliente FTP (como FileZilla) para conectar a tu hosting.
- Compara las carpetas
wp-adminywp-includesde tu servidor con las que acabas de descargar.
Qué hacer con las diferencias:
- Si un archivo existe en tu servidor pero no en la copia limpia, es sospechoso. Descárgalo y luego bórralo del servidor.
- Si un archivo es más grande o tiene una fecha de modificación muy reciente, descárgalo y luego reemplázalo por la versión limpia.
[TIP] No borres archivos sin antes descargarlos. Pueden contener código que necesitas analizar para entender cómo entró el atacante.
2.3. Limpia el archivo wp-config.php
Este es el archivo de configuración principal. Los hackers suelen añadir líneas de código malicioso aquí.
- Ábrelo desde tu FTP.
- Busca funciones extrañas como
eval(),base64_decode()ogzinflate(). - Si encuentras algo raro, elimina esas líneas. Pero ten mucho cuidado de no borrar las constantes legítimas como
DB_NAMEoDB_PASSWORD.
2.4. Revisa el archivo .htaccess
Este archivo controla las reglas de redirección y seguridad. Es el favorito de los hackers para inyectar redirecciones a webs de spam.
- Descarga el
.htaccessoriginal. - Ábrelo en un editor de texto (como Notepad++).
- Busca reglas que redirijan a dominios extraños (ej:
Redirect 301 / http://malicious-site.com). - Elimina esas líneas y guarda el archivo.
[WARNING] Si no ves nada raro pero tu web sigue redirigiendo, el problema puede estar en un plugin de caché. Borra la caché después de limpiar el .htaccess.
2.5. Inspecciona la carpeta wp-content/uploads
Los hackers suben archivos PHP disfrazados de imágenes a esta carpeta. Es una de las zonas más descuidadas por los administradores.
- Accede a
wp-content/uploads/por FTP. - Busca archivos
.phpen esa carpeta o en sus subcarpetas. No debería haber ninguno. - Si encuentras uno, descárgalo y bórralo.
2.6. Revisa los plugins y temas
Los plugins y temas desactualizados son la puerta de entrada número uno para el malware.
- En tu panel de WP, ve a Plugins y Apariencia > Temas.
- Desactiva todos los plugins.
- Actívalos de uno en uno y revisa si tu web sigue mostrando síntomas de infección.
Si un plugin o tema tiene archivos modificados, la mejor opción es eliminarlo por completo y reinstalar la última versión limpia desde el repositorio oficial.
Fase 3: Limpiar la base de datos
El malware no solo vive en los archivos, también puede esconderse en tu base de datos. Aquí es donde se inyectan los enlaces de spam ocultos.
3.1. Busca inyecciones SQL
Entra en phpMyAdmin (desde tu panel de hosting) y selecciona tu base de datos. Luego haz clic en la pestaña SQL y ejecuta esta consulta para buscar tablas sospechosas:
SELECT * FROM wp_posts WHERE post_content LIKE '%<script%' OR post_content LIKE '%eval(%' OR post_content LIKE '%base64_decode%';
Si obtienes resultados, esa es la basura que tienes que limpiar. Puedes editar esos registros manualmente o usar un plugin de seguridad para hacerlo.
3.2. Revisa las tablas wp_options
Aquí se guardan las opciones de configuración. Los hackers suelen añadir una opción llamada siteurl o home que apunta a un dominio malicioso.
Ve a la tabla wp_options y revisa los valores de siteurl y home. Deben apuntar a tu dominio legítimo (ej: https://tudominio.com).
[INFO] Si el valor es un dominio extraño, cámbialo de vuelta a tu dominio. Esto suele ser lo que provoca las redirecciones a webs de spam.
3.3. Limpia usuarios maliciosos
En la tabla wp_users, busca usuarios que no reconozcas. Si encuentras uno, bórralo. También revisa la tabla wp_usermeta para asegurarte de que no tengan permisos de administrador.
Fase 4: Herramientas automáticas para eliminar malware WordPress
Si la limpieza manual te parece demasiado técnica, no te preocupes. Existen herramientas que automatizan el proceso. Son ideales si no te sientes cómodo tocando código.
4.1. Usa un plugin de seguridad
Los más populares y efectivos son:
- Wordfence: Escanea archivos, base de datos y bloquea IPs maliciosas.
- Sucuri Security: Tiene un escáner de malware gratuito y un firewall de pago.
- iThemes Security: Bueno para reforzar la seguridad después de la limpieza.
Cómo usarlo:
- Instala el plugin desde el repositorio de WP.
- Activa el escáner completo del servidor.
- Cuando termine, revisa los resultados y sigue las recomendaciones del plugin para poner en cuarentena o eliminar los archivos infectados.
4.2. Escáneres online gratuitos
Si no quieres instalar plugins, puedes usar servicios online:
- Sucuri SiteCheck: Analiza tu dominio y te dice si está en listas negras o tiene malware visible.
- Quttera Web Scanner: Más profundo, detecta amenazas en archivos y scripts.
[TIP] Estos escáneres online son útiles para la primera detección, pero no limpian tu web. Solo te dicen dónde está el problema.
4.3. Servicios de limpieza profesional
Si el ataque es muy complejo (por ejemplo, un rootkit que se esconde en el núcleo del servidor), puede que necesites contratar un servicio profesional.
- Sucuri Professional Cleaning: Eliminan el malware por ti y te garantizan que el sitio queda limpio.
- Wordfence Cleanup Service: Similar al anterior, pero integrado con su plugin.
Fase 5: Recuperar WordPress y restaurar el sitio
Una vez que has eliminado el malware, llega el momento de reconstruir.
5.1. Restaura desde una copia de seguridad limpia
Si tenías una copia de seguridad de antes de la infección, este es el momento de usarla.
- Reemplaza los archivos: Sube los archivos limpios por FTP, sobrescribiendo los infectados.
- Importa la base de datos limpia: En phpMyAdmin, elimina las tablas actuales e importa el backup SQL que tenías guardado.
[WARNING] Si la copia de seguridad es muy antigua, perderás los cambios recientes. Es un mal menor comparado con tener un sitio hackeado.
5.2. Actualiza todo a la última versión
Después de la limpieza, es crucial que todo esté actualizado:
- Núcleo de WordPress: Ve a
Escritorio > Actualizacionesy actualiza a la última versión. - Plugins: Actualiza todos los plugins a sus versiones más recientes.
- Temas: Igual que los plugins, actualiza tu tema a la última versión.
5.3. Cambia todas las claves de seguridad
WordPress tiene un sistema de "salting" que protege las contraseñas y sesiones. Después de un ataque, debes regenerar estas claves.
- Ve a la página de generación de claves de WordPress:
https://api.wordpress.org/secret-key/1.1/salt/. - Copia las claves generadas.
- Edita tu
wp-config.phpy reemplaza las líneasAUTH_KEY,SECURE_AUTH_KEY, etc., con las nuevas.
Esto invalida cualquier sesión activa del atacante.
Fase 6: Endurecer la seguridad después de la limpieza
Limpio y recuperado, ahora toca blindar el sitio para que no vuelva a pasar. La seguridad es un proceso continuo.
6.1. Cambia el prefijo de la base de datos
El prefijo por defecto de las tablas es wp_. Los hackers lo saben y lo atacan. Cambiarlo añade una capa extra de dificultad.
- Accede a phpMyAdmin.
- Selecciona tu base de datos y haz clic en Operaciones.
- Cambia el prefijo de todas las tablas de
wp_a algo aleatorio comox9k2_. - Actualiza el valor de
table_prefixen tuwp-config.php.
6.2. Cambia el usuario administrador
Si tu usuario administrador se llama "admin", es la primera contraseña que probarán.
- Crea un nuevo usuario con permisos de administrador.
- Inicia sesión con ese nuevo usuario.
- Elimina el antiguo usuario "admin".
6.3. Instala un firewall (WAF)
Un firewall de aplicaciones web filtra el tráfico malicioso antes de que llegue a tu sitio.
- Cloudflare (plan gratuito): Ofrece protección básica contra DDoS y filtrado de bots.
- Sucuri Firewall: Bloquea ataques en tiempo real y evita que el malware se ejecute.
6.4. Configura copias de seguridad automáticas
No hay excusa para no tener copias de seguridad. Instala un plugin como UpdraftPlus o BackWPup y configura:
- Copias diarias de la base de datos.
- Copias semanales de los archivos.
- Almacenamiento externo (Google Drive, Dropbox, etc.).
Preguntas frecuentes (FAQ)
¿Cuánto tiempo tarda en limpiar un WordPress hackeado?
Depende del alcance del ataque. Una limpieza manual básica puede llevarte 2-3 horas si sabes lo que haces. Si usas plugins automáticos, puede ser cuestión de minutos, pero luego necesitas verificar que todo quedó bien.
¿Qué hago si Google sigue mostrando mi web como peligrosa después de limpiarla?
Después de limpiar, debes solicitar una revisión en Google Search Console. Ve a Seguridad y acciones manuales y haz clic en "Solicitar revisión". El proceso puede tardar desde unas horas hasta varios días.
¿Puedo prevenir un hackeo al 100%?
No existe seguridad absoluta, pero siguiendo estas prácticas reduces el riesgo en un 95%:
- Mantén todo actualizado.
- Usa contraseñas fuertes.
- Instala un firewall.
- Haz copias de seguridad frecuentes.
¿Qué es Syspanel y por qué aparece en esta guía?
[INFO] Si tu hosting usa Syspanel (antes llamado HestiaCP), el acceso al panel de administración se realiza a través del puerto 2106 (ej: https://tudominio.com:2106). Desde ahí puedes gestionar bases de datos, usuarios FTP y archivos, lo cual es útil durante la limpieza.
Conclusión final
Eliminar malware WordPress es un proceso que combina paciencia, método y un poco de conocimiento técnico. No entres en pánico si encuentras archivos raros: lo importante es actuar con calma y seguir los pasos en orden.
Recuerda que la recuperación de WordPress no termina cuando el sitio vuelve a funcionar. La verdadera victoria está en implementar las medidas de seguridad que eviten que el atacante regrese.
Si te has sentido abrumado en algún punto, no dudes en pedir ayuda a tu proveedor de hosting o contratar un servicio profesional de limpieza. A veces, pagar 100-200 euros por un servicio de limpieza es mucho más barato que perder tu negocio online por una mala gestión del ataque.
Y lo más importante: aprende de la experiencia. Revisa qué plugin desactualizado causó la brecha, cambia tus hábitos de seguridad y no vuelvas a descuidar tu sitio. Un WordPress bien mantenido es un WordPress difícil de hackear.
