PrestaShop: cómo detectar y eliminar malware de tu tienda online
Imagina que llegas un lunes por la mañana, te tomas tu café y abres tu tienda online. Pero en lugar de ver tus productos, aparece una pantalla en blanco, un mensaje de error o, peor aún, un cartel de tu banco informando que se han detectado transacciones sospechosas. Ese escalofrío en la espalda es el peor enemigo de cualquier emprendedor digital.
Si estás aquí, es porque sospechas que algo no va bien o quieres blindarte antes de que sea demasiado tarde. Vamos a ponernos manos a la obra. En esta guía extensa y muy práctica, te explicaré paso a paso cómo detectar y eliminar el malware de tu tienda PrestaShop, usando herramientas que ya tienes a mano, como tu cPanel o Syspanel (antes conocido como HestiaCP).
No necesitas ser un hacker ni un programador experto. Solo necesitas paciencia, seguir el orden correcto y, sobre todo, no entrar en pánico. Vamos allá.
Señales de que tu tienda PrestaShop tiene malware
Antes de lanzarte a borrar archivos a lo loco, debes confirmar que realmente hay una infección. El malware PrestaShop suele esconderse muy bien, pero deja huellas. Estas son las pistas más comunes que te harán sospechar:
Comportamiento extraño de la tienda
- Redirecciones misteriosas: Al hacer clic en un producto, te lleva a una web de apuestas, farmacias o contenido adulto.
- Páginas en blanco o errores 500: Aparecen sin motivo aparente, sobre todo en la parte pública.
- Rendimiento lentísimo: La tienda tarda una eternidad en cargar, incluso con poco tráfico.
- Código extraño en el pie de página: Ves scripts o enlaces ocultos que no pusiste tú.
- Aparición de usuarios administradores desconocidos: En el panel de PrestaShop ves cuentas de empleado o superadmin que no reconoces.
Alertas de terceros
- Google Safe Browsing: Recibes un aviso en Search Console o al intentar acceder desde Chrome ves un cartel rojo de "Sitio engañoso".
- Tu banco o pasarela de pago te bloquea: Te llaman porque detectan patrones de fraude o transacciones de prueba.
- Tu proveedor de hosting suspende la cuenta: Te escriben diciendo que han detectado scripts maliciosos.
[WARNING] Si ves alguna de estas señales, no accedas a tu tienda desde el navegador hasta que hayas limpiado el entorno. Podrías estar exponiendo tus credenciales a un keylogger.
Preparación antes de limpiar el malware
No empieces a borrar archivos sin un plan. Esto es como una cirugía: necesitas el quirófano limpio y las herramientas preparadas.
1. Haz una copia de seguridad completa
Sí, aunque esté infectada. La necesitas por si algo sale mal y también para analizar el malware después.
- Desde cPanel: Ve a la sección "Backup" o "Copias de seguridad". Descarga el backup completo de archivos y la base de datos.
- Desde Syspanel (HestiaCP): Accede por
https://tu-dominio.com:2106(ese es el puerto correcto). Ve a "Backup" y genera un backup completo. Descárgalo a tu ordenador. - Alternativa manual: Si no tienes acceso, usa FTP (FileZilla) para descargar toda la carpeta
public_htmly phpMyAdmin para exportar la base de datos.
2. Cambia todas tus contraseñas AHORA
- Contraseña del cPanel/Syspanel.
- Contraseña de la base de datos de PrestaShop.
- Contraseña del administrador de PrestaShop.
- Contraseñas de FTP y SSH.
- Contraseñas de tu pasarela de pago y servicios externos.
Usa contraseñas largas (más de 16 caracteres) con mayúsculas, minúsculas, números y símbolos. Un gestor de contraseñas es tu mejor amigo aquí.
3. Actualiza todo lo que puedas (pero con cuidado)
Si tu versión de PrestaShop es muy antigua (1.6 o inferior), el malware puede haber explotado vulnerabilidades conocidas. Pero no actualices aún si el sitio está caído o muy dañado. Primero limpia, luego actualiza.
Cómo detectar malware PrestaShop paso a paso
Vamos a buscar al enemigo. Usaremos tres frentes: desde el panel de control, desde los archivos y desde la base de datos.
1. Escanea con herramientas gratuitas desde cPanel/Syspanel
Desde cPanel (la mayoría de hosts lo tienen)
- Busca la herramienta "Virus Scanner" o "ClamAV Scanner". Muchos hosts la incluyen.
- Ejecuta un escaneo completo de la carpeta
public_html. Te marcará archivos sospechosos.
Desde Syspanel (HestiaCP)
- Syspanel no trae un antivirus integrado, pero puedes usar un script.
- Conéctate por SSH (necesitas permisos de root o sudo). Si no sabes, pide a tu hosting que ejecute:
clamscan -r /home/usuario/web/tudominio/public_html --remove=no > /tmp/scan.txt - Luego revisa el archivo
/tmp/scan.txtpara ver los hallazgos.
[TIP] Si no tienes acceso SSH, usa la herramienta online gratuita de Sucuri SiteCheck (https://sitecheck.sucuri.net). Solo pega tu URL y te dirá si hay malware, redirecciones o scripts maliciosos. No es 100% fiable, pero es un buen primer filtro.
2. Busca archivos sospechosos manualmente (sin ser experto)
Conéctate por FTP (FileZilla) a tu servidor. Navega a la carpeta raíz de PrestaShop (normalmente public_html o www). Céntrate en estas ubicaciones:
- Carpeta /modules/: El malware suele esconderse en módulos falsos. Busca carpetas con nombres raros como
zzz_security,backup_auto,tmp_upload, o módulos que no hayas instalado tú. - Carpeta /override/: Los hackers añaden aquí archivos PHP que modifican el comportamiento de clases core.
- Carpeta /img/: A veces suben imágenes con código PHP incrustado (los archivos .php dentro de /img/ son sospechosos).
- Carpeta /upload/: Otra zona habitual para subir shells.
- Archivos en la raíz: Fíjate en archivos como
shell.php,cmd.php,eval.php,info.php,adminer.phpo cualquier archivo con nombre genérico y extensión .php que no esté en las carpetas oficiales.
¿Cómo detectar un archivo malicioso? Abre el archivo con un editor de texto (Notepad++ o Sublime). Busca estas cadenas:
base64_decodeeval(gzinflatestr_rot13preg_replacecon el modificador/e- Código ofuscado (parece basura, con muchas funciones raras y variables sin sentido).
Si ves alguna de estas, lo más probable es que sea malware. No lo ejecutes, solo anota la ruta.
3. Revisa la base de datos de PrestaShop
El malware también se incrusta en la base de datos, sobre todo en las tablas de configuración, contenido de páginas (CMS) y enganches (hooks).
- Entra a phpMyAdmin desde cPanel (o desde Syspanel en la sección "Bases de datos").
- Selecciona la base de datos de tu PrestaShop.
- Ejecuta esta consulta SQL (pégala en la pestaña "SQL"):
SELECT * FROM ps_configuration WHERE name LIKE '%malware%' OR value LIKE '%base64%' OR value LIKE '%eval%' OR value LIKE '%http://%' OR value LIKE '%https://%' AND name NOT LIKE '%PS_SHOP_DOMAIN%' AND name NOT LIKE '%PS_SHOP_EMAIL%';
- También revisa la tabla
ps_hookyps_module. Busca módulos con nombres extraños o enlaces a IPs raras. - Otra tabla crítica:
ps_connectionsops_guest. Si ves muchas conexiones desde IPs de países que no son tus clientes (Rusia, China, Ucrania), puede ser un botnet.
[INFO] Si no te sientes cómodo con SQL, puedes instalar el módulo gratuito "PrestaShop Security Scanner" desde el marketplace oficial. Escanea la base de datos y los archivos en busca de firmas de malware.
Cómo eliminar el malware de tu tienda online
Ya tienes la lista de archivos y registros infectados. Ahora toca limpiar. Sigue este orden estricto:
Paso 1: Desactiva la tienda (modo mantenimiento)
Desde el back office de PrestaShop: Preferencias > Mantenimiento > Activar modo mantenimiento. Así evitas que los clientes vean el caos y que el malware siga propagándose.
Paso 2: Elimina los archivos maliciosos
- Con FTP, borra todos los archivos que identificaste como maliciosos. No los renombres, elimínalos definitivamente.
- Atención: No borres carpetas enteras de módulos si no estás seguro. Mejor desinstala el módulo desde el back office (si aún puedes acceder) y luego elimina la carpeta.
Paso 3: Limpia la base de datos
- En phpMyAdmin, elimina los registros sospechosos que encontraste en la consulta SQL anterior.
- Vacía la tabla
ps_cachesi existe. - Ejecuta una reparación de todas las tablas: en phpMyAdmin, selecciona todas las tablas, elige "Reparar tabla" en el menú desplegable.
Paso 4: Restaura archivos del core de PrestaShop
El malware suele modificar archivos del núcleo (como index.php, config/defines.inc.php, classes/, controllers/). La mejor opción es reemplazar esos archivos por los originales de tu versión.
- Descarga la misma versión de PrestaShop desde el repositorio oficial (prestashop.com).
- Descomprime en tu ordenador.
- Sube por FTP solo las carpetas
classes/,controllers/,config/,override/(sin tus modificaciones de terceros),themes/(solo el tema por defecto) y los archivos raíz (index.php,autoload.php, etc.). - No subas la carpeta
/modules/ni/themes/que no sean tuyos, porque podrías sobrescribir módulos personalizados.
[WARNING] Si tienes un tema personalizado o módulos de pago, no los sobrescribas con los archivos oficiales o podrías perder funcionalidades. En ese caso, contacta al desarrollador de tu tema para que te ayude a verificar que no esté infectado.
Paso 5: Cambia las claves secretas de PrestaShop
Dentro del archivo config/settings.inc.php (o app/config/parameters.php en versiones 1.7+), hay una línea con _COOKIE_KEY_ y _COOKIE_IV_. Cámbialas por valores aleatorios. Puedes generarlos en: https://www.random.org/strings/
Esto invalida las sesiones de los atacantes.
Paso 6: Actualiza PrestaShop a la última versión
Una vez limpio, actualiza a la versión más reciente. Las versiones 8.x tienen parches de seguridad importantes. Si tu versión es muy antigua, considera una migración a una versión moderna (aunque sea con ayuda profesional).
Medidas preventivas: cómo evitar que vuelva a pasar
Limpiar es agotador, pero prevenir es más barato y menos estresante. Implementa estas barreras:
1. Mantén todo actualizado
- PrestaShop core.
- Todos los módulos y temas.
- PHP (tu hosting debe tener PHP 8.0 o superior).
2. Usa contraseñas fuertes y autenticación en dos pasos (2FA)
- Activa el 2FA en el back office de PrestaShop (módulo oficial de Google Authenticator).
- No uses "admin" como nombre de usuario.
3. Limita los intentos de inicio de sesión
- Instala el módulo "Login as Customer" o "Brute Force Protection" para bloquear IPs tras varios intentos fallidos.
4. Revisa los módulos periódicamente
- Desinstala y elimina cualquier módulo que no uses.
- No instales módulos de fuentes no oficiales (nulled, piratas, foros dudosos).
5. Protege el archivo de configuración
- En el archivo
.htaccessde la raíz, añade:
<FilesMatch "config/settings.inc.php|app/config/parameters.php">
Order allow,deny
Deny from all
</FilesMatch>
6. Escanea tu tienda regularmente
- Una vez al mes, usa Sucuri SiteCheck o el módulo de seguridad de PrestaShop.
- Revisa los logs de acceso (cPanel > Visor de errores) para detectar patrones raros.
7. Contrata un firewall de aplicación web (WAF)
- Servicios como Cloudflare (plan Pro) o Sucuri ofrecen protección contra inyecciones SQL y XSS.
Preguntas frecuentes (FAQ)
¿Puedo recuperar mi tienda si no tengo backup?
Sí, pero es más difícil. Puedes intentar usar herramientas de recuperación de archivos desde el servidor (si tu hosting lo permite) o restaurar una copia de seguridad que tenga el hosting (muchos proveedores guardan snapshots de los últimos 7 días). Pregunta a tu soporte técnico.
¿El malware puede robar los datos de mis clientes?
Sí, especialmente si es un skimmer de tarjetas o un keylogger. Por eso, después de limpiar, debes informar a tus clientes (si hay sospecha de fuga de datos) y cambiar todas las contraseñas de tus servicios de pago.
¿Debo pagar a un profesional para limpiar el malware?
Si el ataque es muy complejo (backdoors múltiples, rootkits en el servidor) o si no te sientes seguro, sí. Un servicio especializado como Sucuri o un desarrollador PrestaShop con experiencia en seguridad puede hacerlo en horas. El coste suele ser menor que el daño reputacional.
¿El malware puede estar en mi ordenador y no en el servidor?
Posible. Si el atacante accedió a tu FTP o cPanel porque tienes un malware en tu PC (troyano), primero limpia tu ordenador con un antivirus (Malwarebytes, Windows Defender) y cambia las contraseñas desde un dispositivo limpio.
¿Y si después de limpiar vuelve a aparecer el malware?
Significa que el atacante dejó una puerta trasera que no encontraste (backdoor). Repite el proceso, pero esta vez revisa los logs de acceso del servidor (cPanel > Raw Access Logs) para ver qué IPs han accedido a archivos sospechosos. Bloquea esas IPs en el firewall.
Conclusión: No bajes la guardia
Detectar y eliminar el malware PrestaShop no es un proceso divertido, pero es completamente manejable si sigues los pasos con calma y método. La clave está en la rapidez: cuanto antes actúes, menos daño sufrirá tu negocio y tu reputación.
Recuerda que la seguridad ecommerce no es un destino, es un hábito. Programa revisiones periódicas, mantén tus sistemas actualizados y nunca confíes en módulos de origen dudoso. Tu tienda online es tu patrimonio digital; protégela como tal.
Si te has sentido abrumado en algún punto, respira hondo. Siempre puedes pedir ayuda a tu proveedor de hosting o a un profesional. Lo importante es que no te rindas. Tu tienda puede volver a estar limpia, segura y funcionando como el primer día.
Ahora, ve y pon en práctica todo lo que has aprendido. ¡Tu negocio te lo agradecerá!
