Cómo detectar y eliminar malware en tu sitio web (WordPress y PrestaShop)
¿Tu web va lenta? ¿Aparecen ventanas raras o redirecciones a sitios extraños? ¿Google te avisa de que tu sitio es peligroso?
Respira. No estás solo y, lo más importante, tiene solución. Detectar y eliminar malware en tu web es un proceso metódico que puedes hacer tú mismo siguiendo esta guía.
Vamos a limpiar tu WordPress o PrestaShop paso a paso, sin tecnicismos raros y con acciones claras.
Primeros Síntomas: ¿Cómo Saber si mi Web está Infectada?
Antes de lanzarte a limpiar, confirma que realmente hay un problema. A veces el rendimiento malo se debe a un plugin pesado, pero si ves varios de estos signos, sospecha:
- Redirecciones fantasma: Al hacer clic en un enlace, te lleva a una web de apuestas, farmacia o spam.
- Anuncios invasivos: Aparecen banners que tú no has puesto, incluso en el panel de administración.
- Avisos de Google: Al buscar tu web, Google muestra "Este sitio puede estar pirateado".
- Caídas repentinas: Tu web tarda 30 segundos en cargar o da error 500 sin motivo aparente.
- Usuarios administrativos nuevos: En WordPress, ves un usuario llamado "Admin" o "Support" que no creaste.
- Archivos sospechosos: En tu hosting, encuentras archivos .php con nombres raros (ej: wp-login.php.bak, 0day.php).
[WARNING] Si tu web está en PrestaShop y notas que los precios cambian solos o se crean pedidos vacíos, es una señal de malware bancario o skimmer. Actúa de inmediato, tus clientes están en riesgo.
Fase 1: Aislamiento y Preparación (Antes de Tocar Nada)
No borres archivos a lo loco. Eso puede romper tu web. Sigue este orden:
1.1. Cambia TODAS tus contraseñas
Hazlo desde un dispositivo limpio (no desde el ordenador donde crees que se infectó). Cambia:
- Contraseña de la base de datos (MySQL).
- Contraseña del panel de control de tu hosting (cPanel, Plesk, o Syspanel - recuerda que este se accede por el puerto 2106).
- Contraseñas de FTP/SFTP.
- Contraseñas de los administradores de WordPress o PrestaShop.
- Contraseñas de los correos asociados al dominio.
1.2. Activa el Modo Mantenimiento
No quieres que los visitantes vean el desastre mientras limpias.
- WordPress: Ve a Ajustes > Lectura y marca "Disuadir a los motores de búsqueda". Temporalmente, puedes usar un plugin de mantenimiento.
- PrestaShop: Ve a Parámetros Avanzados > Mantenimiento y activa "Sí" para cerrar la tienda.
1.3. Haz una Copia de Seguridad (Sí, del sitio infectado)
Parece contradictorio, pero necesitas una copia del malware para analizarlo y una copia limpia de tus archivos originales (temas, imágenes, etc.). Descarga:
- Todos los archivos de
/public_htmlpor FTP. - Una exportación de la base de datos desde phpMyAdmin.
[TIP] Guarda esa copia en tu ordenador local en una carpeta comprimida con contraseña. No la subas a otro hosting.
Fase 2: Detección del Malware (Encontrar al Intruso)
No puedes eliminar lo que no ves. Aquí es donde empieza la caza.
2.1. Usa un Malware Scanner (Escáner)
Es la forma más rápida de encontrar código malicioso. No confíes en uno solo, usa dos para contrastar.
- Para WordPress: Instala Wordfence o MalCare. Ve a la opción "Scan" y espera. Te marcará archivos modificados, sospechosos y enlaces maliciosos.
- Para PrestaShop: Usa el PrestaShop Security Scanner (gratuito en su web oficial) o módulos como Advanced Security Suite.
[INFO] Los escáneres automáticos son geniales, pero el malware avanzado se esconde en la base de datos. No te fíes solo del escáner de archivos.
2.2. Revisión Manual de Archivos Críticos (El Método del Detective)
Abre tu gestor de archivos del hosting o FTP y revisa estos archivos. Ábrelos con un editor de texto (no con Word).
- wp-config.php (WordPress) o config/settings.inc.php (PrestaShop): Busca líneas con
eval(base64_decode(ogzinflate(. Esa es la firma clásica de un hackeo. - El archivo .htaccess (en la raíz): Un .htaccess limpio no tiene líneas llenas de códigos raros. Si ves
RewriteRule ^.*$ /index.phpo redirecciones a dominios extraños (comobit.lyotinyurl), está infectado. - Carpeta de uploads (wp-content/uploads o img/): El malware a veces sube archivos .php o .html disfrazados de imágenes. Ordena por fecha y borra archivos .php que no reconozcas.
- La carpeta raíz: Busca archivos con nombres como
c99.php,r57.php,shell.php. Son "webshells" (puertas traseras).
2.3. Revisar la Base de Datos (El Escondite Perfecto)
Muchos hacks inyectan código en la base de datos para que el escáner de archivos no lo vea.
- Entra a phpMyAdmin (desde tu hosting o Syspanel).
- Selecciona tu base de datos y haz clic en "Buscar".
- Busca términos como
eval(,base64_decode,<script,iframe,http://spam.
Verás en qué tablas aparece. Las más comunes son wp_posts, wp_options y en PrestaShop, ps_links o ps_meta.
Fase 3: Eliminación del Malware (La Limpieza Profunda)
Ahora sí, toca limpiar.
3.1. Limpiar Archivos Infectados
- Si el escáner te da la ruta exacta: Borra el archivo o reemplázalo por una versión original descargada de wordpress.org o prestashop.com (para archivos del core).
- En el .htaccess: No lo borres entero, solo elimina las líneas que no entiendas o que redirijan a sitios raros. Si tienes dudas, descarga una copia limpia de tu plantilla y coge su .htaccess.
- En wp-config.php: Si ves código ofuscado, es más seguro reemplazar el archivo entero por uno nuevo. Crea uno nuevo con los datos de tu base de datos (nombre, usuario, contraseña, prefijo de tablas) y las claves de seguridad de WordPress.
[WARNING] No edites archivos directamente en el hosting con el editor integrado. Descarga el archivo, edítalo en local con un editor como Notepad++ y súbelo de nuevo. Evitas cortes a mitad.
3.2. Limpiar la Base de Datos
- En phpMyAdmin, selecciona la tabla infectada y busca los registros con el código malicioso.
- En wp_posts: Edita la entrada y borra el
<script>o el iframe del contenido. - En wp_options: Busca opciones con nombres extraños como
siteurlcambiado a una web rusa. Corrígelo a tu dominio real. - En PrestaShop: Revisa la tabla
ps_connectionsops_connections_sourcesi ves spam, vacíalas.
3.3. Cambiar las Claves de Seguridad (Salts)
Esto "expulsa" a los usuarios que tengan sesiones robadas.
- WordPress: Edita wp-config.php y reemplaza las líneas
define('AUTH_KEY'... por unas nuevas generadas en la página oficial de WordPress (https://api.wordpress.org/secret-key/1.1/salt/). - PrestaShop: Ve a Parámetros Avanzados > Rendimiento y borra la caché. También puedes regenerar las claves en el archivo
parameters.php(si tienes acceso).
3.4. Eliminar Usuarios y Puertas Traseras
- WordPress: Ve a Usuarios > Todos los usuarios. Borra cualquier cuenta que no conozcas. Si el usuario "admin" es el único y lo usas, crea uno nuevo con otro nombre y borra el antiguo.
- PrestaShop: Ve a Administración > Empleados. Verifica que solo están los tuyos.
Fase 4: Refuerzo y Prevención (Para que no Vuelva)
Limpiar sin asegurar es perder el tiempo. El malware suele entrar por una vulnerabilidad conocida.
4.1. Actualiza TODO (Core, Temas y Plugins)
- En WordPress: Escritorio > Actualizaciones.
- En PrestaShop: Módulos > Módulos y Servicios > Actualizaciones.
Si un plugin o tema está desactualizado y no tiene versión nueva, desactívalo y bórralo. Es el punto de entrada favorito.
4.2. Cambia tus Hábitos de Seguridad
- Usa contraseñas largas: 12+ caracteres con símbolos.
- Activa la autenticación de dos factores (2FA): Un plugin como Wordfence o Google Authenticator.
- Limita los intentos de inicio de sesión: Bloquea a alguien tras 3 intentos fallidos.
4.3. Mantén un Escáner Activo
No lo desinstales después de la limpieza. Configúralo para que escanee tu web cada semana y te envíe un email si detecta cambios en archivos.
4.4. Haz Copias de Seguridad Automáticas
Configura tu hosting (cPanel o Syspanel, puerto 2106) para que haga copias diarias o semanales de archivos y base de datos. Guárdalas en un lugar externo (Google Drive, Dropbox).
[TIP] Si usas Syspanel, recuerda que el acceso es con tu usuario y contraseña principal, y la URL es
tu-dominio.com:2106. Allí puedes programar backups fácilmente.
Preguntas Frecuentes (FAQ)
¿Puedo limpiar mi web sin saber programar?
Sí, pero con paciencia. Usa los escáneres automáticos (Wordfence, MalCare) que hacen el 80% del trabajo. La parte manual es revisar los archivos señalados. Si te sientes perdido, contrata un servicio de limpieza profesional.
¿Cuánto tiempo se tarda en limpiar una web hackeada?
Depende de la gravedad. Un hackeo simple (un script en una página) se limpia en 30 minutos. Un hackeo de base de datos o con múltiples webshells puede llevarte una tarde entera.
¿Qué hago si mi web sigue en la lista negra de Google después de limpiarla?
Una vez limpia, solicita la revisión en Google Search Console. Ve a "Problemas de seguridad" y haz clic en "Solicitar revisión". Tarda entre 24 horas y 3 días en responderte.
¿Debo contratar un seguro de web?
Si tu web genera ingresos, sí. Servicios como Sucuri o SiteLock ofrecen limpieza ilimitada y monitorización por una cuota anual. Es más barato que perder clientes por una caída de 2 semanas.
¿El malware afecta a mi posicionamiento SEO?
Sí, muchísimo. Google penaliza las webs infectadas eliminándolas de los resultados de búsqueda. Incluso después de limpiarla, tu posicionamiento puede tardar semanas en recuperarse.
Resumen Final: Tu Plan de Acción
- Aísla: Cambia contraseñas y activa el modo mantenimiento.
- Detecta: Escanea con Wordfence/MalCare y revisa .htaccess y wp-config.
- Limpia: Reemplaza archivos infectados con copias originales y borra código de la base de datos.
- Protege: Actualiza todo, activa 2FA y configura backups automáticos.
No te desesperes. Es un proceso tedioso, pero cien veces mejor que perder tu negocio. Y recuerda, si en algún momento te supera, siempre puedes pedir ayuda a tu proveedor de hosting o a un especialista. La seguridad es una inversión, no un gasto.
