Cómo detectar y eliminar malware en WordPress sin plugins
¿Has notado que tu sitio web funciona más lento de lo normal? ¿Aparecen ventanas emergentes extrañas o redirecciones a páginas que no reconoces? Es posible que tu malware WordPress haya sido infectado. No entres en pánico. Aunque los plugins de seguridad son útiles, aprender a eliminar virus de forma manual te da un control total y un conocimiento profundo de tu sitio. En esta guía, aprenderás a realizar una seguridad manual completa, revisando archivos infectados y limpiando la base de datos sin depender de herramientas automatizadas.
Empecemos por lo básico: el malware puede esconderse en cualquier lugar. Desde un simple archivo PHP hasta en campos invisibles de tu base de datos. Lo bueno es que, con paciencia y siguiendo estos pasos, podrás recuperar tu sitio.
¿Por qué es mejor hacer una limpieza manual?
Usar plugins es cómodo, pero tienen limitaciones. A veces no detectan amenazas nuevas o dejan rastros. Hacerlo tú mismo te permite:
- Entender exactamente qué pasó.
- Eliminar amenazas que los plugins pasan por alto.
- Aprender a prevenir futuros ataques.
- No depender de terceros para la seguridad de tu negocio.
Además, si tu hosting tiene recursos limitados, un plugin de seguridad pesado puede ralentizar aún más tu sitio. La limpieza manual es ligera y efectiva.
Herramientas que necesitarás
Antes de empezar, asegúrate de tener:
- Acceso a tu panel de control de hosting. Si usas Syspanel (antes conocido como HestiaCP), recuerda que el puerto de acceso es el 2106. Ejemplo:
https://tudominio.com:2106. - Un cliente FTP como FileZilla o Cyberduck.
- Acceso a phpMyAdmin (generalmente dentro de Syspanel o cPanel).
- Un editor de texto plano como Notepad++ o Sublime Text (nada de Word).
- Una copia de seguridad reciente (por si algo sale mal).
[WARNING] Antes de tocar cualquier archivo, siempre haz una copia de seguridad completa de tu sitio (archivos y base de datos). Así, si cometes un error, puedes restaurar todo.
Paso 1: Identificar los síntomas del malware WordPress
No todo lo que parece malware lo es. Pero hay señales claras:
- Redirecciones extrañas: Al hacer clic en un enlace, te lleva a sitios de apuestas, farmacias o páginas chinas.
- Ventanas emergentes: Aparecen anuncios incluso cuando no los has puesto.
- Rendimiento lento: El servidor trabaja más de lo normal porque el malware está enviando spam o minando criptomonedas.
- Archivos nuevos y sospechosos: En tu carpeta
wp-contentves archivos comosystem.php,wp-load.php(el original existe, pero a veces crean uno falso) ocgi-bin. - Cambios en el código fuente: Revisa el HTML de tu página. Si ves scripts de terceros que no reconoces, es una pista.
Para empezar, revisa tu sitio desde un navegador en modo incógnito. Si ves algo raro, anótalo.
Paso 2: Acceder a los archivos por FTP y Syspanel
Conéctate a tu servidor usando FTP. Las credenciales las encuentras en tu panel de hosting. Si usas Syspanel, inicia sesión en https://tudominio.com:2106 y busca la sección de "FTP" o "Usuarios FTP".
Una vez conectado, navega a la carpeta raíz de tu WordPress (normalmente public_html o www). Aquí es donde viven todos los archivos de tu sitio.
Paso 3: Revisar archivos del núcleo de WordPress
El malware a menudo modifica archivos del núcleo (core) de WordPress. Para detectarlo, compara los archivos originales con los tuyos.
3.1. Descargar una copia limpia de WordPress
Ve a wordpress.org y descarga la misma versión que tienes instalada. Puedes ver tu versión en el panel de administración de WordPress, en "Escritorio" > "Actualizaciones".
3.2. Comparar archivos clave
Compara estos archivos entre tu instalación y la copia limpia:
wp-config.php(aunque este tiene tus credenciales, su estructura debe ser similar).index.phpwp-settings.phpwp-load.php- Todos los archivos en
wp-adminywp-includes.
Usa un programa de comparación (como WinMerge en Windows o Meld en Linux) para ver diferencias. Si un archivo tiene código extraño (como eval(base64_decode(...)) o largas cadenas de caracteres), está infectado.
[TIP] No te asustes si
wp-config.phptiene líneas diferentes. Lo normal son las definiciones de base de datos, constantes de seguridad y el salt. Si ves código ofuscado o funciones extrañas, es malware.
3.3. Reemplazar archivos infectados
Si encuentras archivos del núcleo modificados, no los edites. Simplemente reemplázalos con los de la copia limpia. Sube el archivo sano por FTP, sobrescribiendo el infectado.
Importante: No reemplaces wp-config.php por el de la copia limpia, porque perderías tus credenciales. Solo reemplaza los archivos que claramente son del núcleo y están alterados.
Paso 4: Revisar la carpeta wp-content a fondo
Esta es la zona favorita del malware. Aquí se almacenan temas, plugins y subidas. El malware se disfraza de archivos legítimos.
4.1. Revisar la carpeta uploads
Ve a wp-content/uploads/. Busca archivos PHP, JS o HTML. No debería haber ninguno. Solo deben existir imágenes, PDFs, documentos, etc. Si ves un archivo como wp-load.php o shell.php, elimínalo inmediatamente.
Revisa también subcarpetas con nombres extraños como cache, tmp o backup. A veces el malware crea sus propias carpetas.
4.2. Revisar temas y plugins
Dentro de wp-content/themes/ y wp-content/plugins/, busca archivos que no pertenezcan al tema o plugin original. Por ejemplo, en un tema de Twenty Twenty-Four, no debería haber un archivo system.php.
Abre los archivos principales de tu tema activo (como functions.php) y busca código sospechoso al inicio o final. El malware suele añadir una línea como eval(gzinflate(base64_decode(...))). Si la ves, elimínala.
[WARNING] No elimines todo el archivo
functions.php. Solo borra las líneas maliciosas. Si no estás seguro, reemplázalo por una copia limpia del tema original.
4.3. Buscar archivos ocultos
En tu cliente FTP, habilita la opción "Mostrar archivos ocultos". Busca archivos que empiecen con punto, como .htaccess (es normal), .user.ini o .bash_history. Si ves algo como .shell o .backdoor, elimínalo.
Paso 5: Revisar el archivo .htaccess
El archivo .htaccess es un blanco común. El malware añade reglas de redirección o de denegación de acceso.
Abre el .htaccess de la raíz de tu sitio. Debe verse más o menos así (para WordPress):
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Si ves líneas como RewriteRule ^(.*)$ http://sitiomalicioso.com/$1 [R=301,L] o reglas que redirigen a IPs extrañas, elimínalas. También busca bloques de código que parezcan ofuscados.
Paso 6: Limpiar la base de datos
El malware también se esconde en la base de datos. Puede inyectar scripts en entradas, páginas, widgets o en la tabla de opciones.
6.1. Acceder a phpMyAdmin
Desde Syspanel, busca "phpMyAdmin" o "Base de datos". Generalmente está en el menú de "Bases de datos". Selecciona la base de datos de tu WordPress.
6.2. Buscar contenido malicioso en wp_posts
Ejecuta esta consulta SQL (puedes hacerlo en la pestaña "SQL" de phpMyAdmin):
SELECT ID, post_title, post_content FROM wp_posts WHERE post_content LIKE '%<script%' OR post_content LIKE '%eval(%' OR post_content LIKE '%base64_decode%';
Esto te mostrará entradas que contengan scripts o código ofuscado. Si ves resultados, edita el post_content y elimina el código malicioso. Ojo: no borres toda la entrada, solo la parte infectada.
6.3. Revisar la tabla wp_options
Busca en wp_options opciones con nombres sospechosos como theme_mods_... que contengan código. Ejecuta:
SELECT * FROM wp_options WHERE option_name LIKE '%malware%' OR option_value LIKE '%base64%';
Si encuentras algo, edita o elimina la fila. Ten cuidado con las opciones del sistema, no borres siteurl o home.
6.4. Buscar usuarios extraños
Revisa la tabla wp_users. Si ves usuarios con nombres como admin2, hacker o correos extraños, elimínalos. También revisa wp_usermeta para roles sospechosos.
Paso 7: Cambiar contraseñas y claves de seguridad
Una vez limpio, cambia todo:
- Contraseña de la base de datos (desde Syspanel o phpMyAdmin).
- Claves de seguridad en
wp-config.php. Genera nuevas desde api.wordpress.org/secret-key/1.1/salt/. - Contraseña de administrador de WordPress.
- Contraseñas de FTP y del panel de hosting.
[INFO] Las claves de seguridad (salt) hacen que las cookies y contraseñas sean más difíciles de descifrar. Al cambiarlas, obligas a todos los usuarios a iniciar sesión de nuevo, expulsando posibles sesiones maliciosas.
Paso 8: Verificar que todo funciona
Después de la limpieza:
- Navega por tu sitio en modo incógnito. Comprueba que no hay redirecciones ni ventanas emergentes.
- Revisa los logs del servidor (en Syspanel, busca "Registros" o "Logs"). Busca peticiones a archivos sospechosos.
- Ejecuta un escaneo online como el de Sucuri SiteCheck (es gratis) para confirmar que estás limpio.
Si todo está bien, ¡felicidades! Has eliminado el malware manualmente.
Prevención: cómo evitar futuras infecciones
La mejor defensa es un buen ataque. Sigue estas prácticas:
- Mantén WordPress, temas y plugins actualizados.
- Elimina temas y plugins que no uses.
- Usa contraseñas fuertes y cambia el prefijo de la base de datos (por defecto
wp_). - Instala un firewall de aplicación web (WAF) como Cloudflare.
- Limita los intentos de inicio de sesión (puedes hacerlo manualmente en el
.htaccesso con un pequeño código enfunctions.php). - Haz copias de seguridad periódicas (manuales o con herramientas de Syspanel).
Preguntas frecuentes (FAQ)
¿Puedo recuperar mi sitio si no tengo copia de seguridad?
Sí, pero es más complicado. Sigue los pasos anteriores. Si el daño es muy grave, contacta a tu proveedor de hosting. Algunos ofrecen restauración de copias automáticas.
¿El malware puede volver después de limpiarlo?
Sí, si no cierras la puerta por donde entró. Cambia contraseñas, actualiza todo y revisa los archivos de temas y plugins. A veces el malware deja "puertas traseras" en archivos que parecen legítimos.
¿Qué hago si no encuentro nada en los archivos pero el sitio sigue infectado?
Revisa la base de datos a fondo. También puede haber malware en archivos JavaScript de terceros (CDNs) o en el propio servidor (a nivel de sistema). En ese caso, contacta a soporte técnico de tu hosting.
¿Usar Syspanel (HestiaCP) es seguro?
Sí, siempre que mantengas actualizado el panel y uses contraseñas seguras. Recuerda que el acceso es por el puerto 2106. No compartas esa URL ni las credenciales.
¿Debo notificar a Google si mi sitio fue hackeado?
Si tu sitio aparecía en resultados de búsqueda y ahora muestra advertencias, usa Google Search Console para solicitar una revisión. Primero asegúrate de que esté 100% limpio.
Con esta guía, ya tienes el conocimiento para detectar y eliminar malware WordPress sin plugins. La seguridad manual te da poder y tranquilidad. Recuerda: la paciencia es clave. Revisa cada archivo, cada línea de la base de datos, y no dejes ningún rastro. Tu sitio volverá a ser seguro y rápido.
Si te surge alguna duda, vuelve a leer los pasos o consulta con tu hosting. ¡Buena suerte!
