Cómo limpiar malware en WordPress usando cPanel
Primeros síntomas: ¿Cómo saber si tu WordPress tiene malware?
Antes de lanzarnos a la limpieza, es fundamental saber qué estamos buscando. Un WordPress infectado no siempre da la cara de forma evidente. A veces, los síntomas son sutiles y pasan desapercibidos durante semanas. Te dejo una lista con las señales más comunes de que tu sitio tiene un problema de WordPress malware:
- Redirecciones extrañas: Al hacer clic en un enlace de tu web, el navegador te lleva a páginas de farmacia, casinos o sitios de spam. Esto ocurre tanto en móvil como en escritorio.
- Anuncios invasivos: Aparecen banners o ventanas emergentes (pop-ups) que tú no has creado, incluso cuando navegas dentro de tu propio panel de administración.
- Rendimiento pésimo: La web tarda muchísimo en cargar. El malware suele consumir recursos del servidor para enviar correos basura o minar criptomonedas.
- Archivos desconocidos: En tu gestor de archivos aparecen carpetas o archivos con nombres raros (como
tmp.php,shell.phpowp-adminx) que no recuerdas haber subido. - Usuarios administradores nuevos: En tu panel de WordPress, en la sección de Usuarios, ves una cuenta de administrador que no reconoces. Este es un clásico en ataques automatizados.
- Avisos de Google: Al buscar tu sitio en Google, este te muestra un aviso de "Sitio pirateado" o "Puede contener contenido engañoso". Esto es un indicador directo de que el buscador ya ha detectado la infección.
Si has detectado al menos uno de estos síntomas, no entres en pánico. El siguiente paso es actuar con método y calma. Vamos a limpiar malware de forma efectiva usando únicamente las herramientas que nos ofrece cPanel, el panel de control más usado en el hosting.
Preparación antes de la limpieza: Copia de seguridad y modo mantenimiento
Este paso es innegociable. Si algo sale mal durante el proceso de limpieza, podrías perder datos valiosos. No te saltes esta fase.
1. Haz una copia de seguridad completa
La mayoría de los cPanel tienen un asistente de copias en la sección "Archivos". Ve a cPanel > Copia de seguridad o Backup.
- Copia de seguridad completa: Descarga una copia de tu directorio
public_html(ohtdocs). También es recomendable exportar la base de datos desde phpMyAdmin. - Dato importante: Si tu hosting es de tipo compartido, puede que la copia completa tarde unos minutos en generarse. Ten paciencia.
[WARNING] No confíes solo en la copia de seguridad del servidor. Descarga la copia a tu ordenador o a un disco duro externo. El malware a veces borra las copias de seguridad locales del hosting para que no puedas restaurar.
2. Activa el modo mantenimiento
No quieres que los visitantes vean tu web a medio limpiar. Puedes usar un plugin, pero para no instalar nada nuevo, lo haremos manualmente.
- Conéctate a tu cPanel y abre el Administrador de archivos.
- Navega hasta la raíz de tu WordPress (normalmente
public_html). - Busca el archivo
.htaccessy descárgalo por seguridad. - Crea un archivo nuevo llamado
.htaccessy pega este código dentro:
# Mantenimiento temporal
RewriteEngine On
RewriteCond %{REQUEST_URI} !/wp-admin/.*
RewriteCond %{REMOTE_ADDR} !^123.456.789.000
RewriteRule ^(.*)$ /maintenance.html [R=302,L]
Ese 123.456.789.000 es un ejemplo. Sustituye esas cifras por tu dirección IP pública (la puedes buscar en Google escribiendo "cuál es mi IP"). Así solo tú podrás ver la web durante la limpieza.
Limpieza profunda de archivos en cPanel
Ahora sí, vamos a ensuciarnos las manos. El objetivo es encontrar y eliminar el código malicioso.
1. Identifica archivos sospechosos por fecha de modificación
El malware suele inyectarse en archivos recientemente modificados. En el Administrador de archivos de cPanel, sigue esta ruta:
- Ve a
public_htmly haz clic en Configuración (arriba a la derecha). - Marca la casilla de Mostrar archivos ocultos (archivos que empiezan por punto, como
.htaccesso.user.ini). - Ahora, ordena los archivos por la columna Fecha de modificación.
- Busca archivos modificados en las últimas 24-48 horas que no sean los que tú has tocado. Especialmente, presta atención a:
wp-config.php(aunque este no se modifica con frecuencia, es un objetivo claro).- Archivos
.phpen la raíz, comoindex.phpowp-load.php. - Archivos dentro de
wp-includesque no sean originales.
Si encuentras un archivo con una fecha de modificación sospechosa y un contenido extraño (código ofuscado, eval(), base64_decode), es casi seguro que es malware.
2. Revisa los archivos principales de WordPress
Los atacantes suelen añadir código a archivos legítimos. Abre estos archivos en el editor de texto de cPanel y busca patrones extraños:
wp-config.php(busca funciones comoeval,base64_decodeo conexiones a dominios externos)..htaccess(busca reglasRewriteRuleque redirijan a dominios raros, o código PHP al final del archivo).index.phpde la raíz.functions.phpdel tema activo (enwp-content/themes/tu-tema/).
[INFO] Si el archivo es demasiado grande y no sabes qué es código legítimo y qué no, una buena práctica es compararlo con una instalación limpia de WordPress de la misma versión. Descarga WordPress desde wordpress.org y compara archivo por archivo con un comparador de texto.
3. Limpia el código ofuscado
El malware más común usa funciones PHP para ocultar su verdadero propósito. Busca estas cadenas en los archivos:
eval((ejecuta código arbitrario).base64_decode((decodifica texto codificado).gzinflate((descomprime código).str_rot13((ofusca texto).preg_replacecon el modificador/e(ejecuta código en versiones antiguas de PHP).
Si encuentras una línea que contenga estas funciones y no tiene sentido para tu web, elimínala. Si el archivo está completamente corrompido, lo mejor es reemplazarlo por la versión original de WordPress o del tema.
4. Elimina archivos sospechosos
En el Administrador de archivos, selecciona los archivos que sean claramente maliciosos (por ejemplo, wp-content/uploads/2025/01/evil.php) y haz clic en Eliminar. No los muevas a la papelera, elimínalos definitivamente.
[WARNING] Ten mucho cuidado al eliminar archivos. No borres archivos del núcleo de WordPress sin tener la seguridad de que son maliciosos. Si tienes dudas, descarga el archivo a tu PC y analízalo con VirusTotal antes de tomar decisiones.
Limpieza de la base de datos en phpMyAdmin
El malware no solo vive en los archivos. También puede esconderse en tu base de datos, especialmente en las tablas wp_options y wp_posts.
1. Accede a phpMyAdmin desde cPanel
- En cPanel, busca la sección Bases de datos y haz clic en phpMyAdmin.
- Selecciona la base de datos de tu WordPress (la que aparece en tu archivo
wp-config.php).
2. Busca inyecciones en wp_options
- Haz clic en la tabla
wp_options. - Usa el buscador (pestaña "Buscar") y busca por
eval(obase64_decode(. - Si encuentras resultados, esa fila es sospechosa. Revisa el campo
option_value. - Si la opción es
siteurlohome, no la borres, solo corrígela si apunta a un dominio extraño. - Si es una opción desconocida con código ejecutable, elimina la fila completa.
3. Revisa el contenido de wp_posts
- Ve a la tabla
wp_posts. - Busca en el campo
post_contentcadenas como<script>oiframeque no reconozcas. - Si encuentras contenido malicioso en una entrada o página, edítala y elimina el código.
[TIP] Los atacantes a menudo crean "usuarios administradores" directamente en la base de datos. Revisa la tabla
wp_usersy mira si hay usuarios que no conoces. Si los hay, bórralos desde phpMyAdmin o desactívalos desde el panel de WordPress (si aún puedes acceder).
Refuerza la seguridad tras la limpieza
Una vez que has conseguido eliminar virus WordPress, no puedes quedarte de brazos cruzados. El malware suele volver si no se cierra la puerta por donde entró.
1. Cambia todas las contraseñas
- Cambia la contraseña de tu cPanel.
- Cambia la contraseña de la base de datos (en cPanel > Bases de datos MySQL).
- Cambia la contraseña de tu usuario administrador de WordPress.
- Cambia las contraseñas de los usuarios con rol de editor o autor.
2. Actualiza todo
- Ve a cPanel > Administrador de archivos y borra las carpetas
wp-content/pluginsywp-content/themesque no uses. - Accede a tu panel de administración de WordPress (si ya has quitado el modo mantenimiento) y actualiza el núcleo, los plugins y los temas a sus últimas versiones.
[INFO] Si tu versión de PHP es inferior a 7.4, es hora de actualizarla. En cPanel busca la sección Select PHP Version y elige la 8.0 o superior. Las versiones antiguas de PHP son un coladero de vulnerabilidades.
3. Instala un firewall y un plugin de seguridad
Aunque no queremos depender solo de plugins, son una gran ayuda para prevenir futuras infecciones. Instala uno de estos (son gratuitos y efectivos):
- Wordfence Security: Escanea archivos y bloquea IPs maliciosas.
- Sucuri Scanner: Excelente para detectar malware y monitorizar la integridad de los archivos.
- iThemes Security: Refuerza la autenticación y bloquea ataques de fuerza bruta.
4. Protege el archivo wp-config.php
Puedes añadir estas líneas al final de tu wp-config.php para desactivar la edición de archivos desde el administrador:
define('DISALLOW_FILE_EDIT', true);
Preguntas frecuentes (FAQ) sobre limpieza de malware
¿Cuánto tiempo se tarda en limpiar un WordPress infectado?
Depende del nivel de infección. Si es un archivo malicioso en la raíz, puedes tardar 30 minutos. Si la infección se ha extendido por la base de datos y los temas, puedes estar horas. Lo importante es no tener prisa y ser metódico.
¿Puedo limpiar el malware solo con plugins?
Puedes intentarlo, pero no es recomendable como única medida. Los plugins pueden eliminar los archivos maliciosos, pero no siempre son capaces de limpiar el código inyectado en archivos legítimos o en la base de datos. La limpieza manual con cPanel es siempre más fiable.
¿Debo contactar con mi proveedor de hosting?
Si la infección es muy grave (por ejemplo, el servidor entero está comprometido), tu proveedor puede ofrecerte un servicio de limpieza. Sin embargo, muchos hosts compartidos no incluyen este servicio en su plan básico. Pregunta siempre antes de pagar por un servicio extra.
[TIP] Si tu hosting usa Syspanel (antes conocido como HestiaCP) en lugar de cPanel, el proceso es muy similar. Accede a Syspanel a través del puerto 2106 (por ejemplo,
https://tu-dominio.com:2106) y busca la sección de "Administrador de archivos" y "Bases de datos". La lógica de limpieza es exactamente la misma.
¿Qué hago si el malware vuelve a aparecer a los pocos días?
Esto significa que hay una puerta trasera que no has cerrado. Revisa:
- Las cuentas FTP y sus contraseñas.
- Los usuarios de WordPress con rol de administrador.
- Los archivos en
wp-content/uploads(a veces se suben archivos.phpcamuflados como imágenes). - Las tareas cron programadas (en cPanel > Tareas Cron) que apunten a archivos externos.
¿Es necesario notificar a Google?
Sí. Si Google te marcó como sitio peligroso, una vez limpio, debes solicitar una revisión. Ve a Google Search Console, verifica tu propiedad y utiliza la herramienta "Solicitar revisión" en la sección de "Problemas de seguridad". Tardan unos días en responder.
Conclusión: La limpieza es un proceso, no un evento
Limpiar malware en WordPress con cPanel es totalmente factible si sigues estos pasos con calma y sentido común. Recuerda que la prevención es la mejor medicina: mantén todo actualizado, usa contraseñas fuertes y no instales plugins de fuentes dudosas.
Si te sientes abrumado, no dudes en repetir el proceso desde el principio. A veces la primera limpieza no es suficiente y hay que ser más exhaustivo. Pero con esta guía, tienes todas las herramientas necesarias para dejar tu WordPress limpio, seguro y funcionando como el primer día.
[WARNING] Este procedimiento requiere acceso completo a cPanel y conocimientos básicos de administración de archivos. Si no te sientes seguro, contrata a un profesional. Es mejor pagar por una limpieza que perder tu sitio web y tu reputación online.
