🎨 Sysprovider Code
Sysprovider LogoWiki
🇪🇸Hosting español para ecommerce

Cómo limpiar un sitio PrestaShop infectado (malware)

Actualizado el 5 de enero de 2026

¡Hola! Si has llegado hasta aquí, seguramente estás pasando por un momento de estrés: has visto comportamientos raros en tu tienda, tus clientes te avisan de enlaces sospechosos o, directamente, Google te ha bloqueado el sitio. No te preocupes, respira. Tener un sitio PrestaShop infectado es más común de lo que parece, y aunque la palabra "malware" asusta, en la mayoría de los casos tiene solución.

En esta guía extensa y paso a paso, vamos a explicarte cómo limpiar malware PrestaShop desde cero, con un lenguaje claro y sin tecnicismos innecesarios. Olvídate de soluciones mágicas; aquí aprenderás a hacer una limpieza profunda y a blindar tu tienda para que no vuelva a ocurrir. Vamos a ello.


Primeros pasos: Diagnóstico y Preparación (No toques nada todavía)

Antes de lanzarnos a borrar archivos a lo loco, necesitamos un plan. Actuar sin método puede romper tu tienda o, peor aún, dejar el malware escondido. Sigue este orden.

1. Confirma la infección (¿De verdad estás infectado?)

A veces, un rendimiento lento o un error de base de datos no significa un hackeo. Busca señales inequívocas:

  • Avisos de Google o del navegador: Si Chrome o Firefox muestran un aviso de "Sitio engañoso" o "Contenido malicioso".
  • Redirecciones extrañas: Al entrar a tu web, te lleva a páginas de farmacias, casinos o descargas raras.
  • Código desconocido en el código fuente: Pulsa clic derecho > "Ver código fuente" y busca líneas con <script> que apunten a dominios raros (no a tu dominio ni a los de PrestaShop).
  • Usuarios admin nuevos: Revisa en tu panel de administración (Back Office) si hay empleados o administradores que no creaste tú.
  • Spam en tu base de datos: Aparición de tablas con prefijos extraños como db_ o tmp_.

[WARNING] Si tu web está bloqueada por Google, NO la descargues completa desde el hosting y la subas a otro sitio sin limpiarla. Estarías propagando el virus.

2. Haz una copia de seguridad (Sí o sí)

Este paso es innegociable. Necesitas un respaldo del estado actual (aunque esté infectado) y uno de un estado limpio si tienes uno antiguo.

  • Copia de seguridad de archivos: Entra a tu panel de control (cPanel, Plesk o el que uses) y comprime la carpeta public_html (o donde esté tu tienda) en un archivo ZIP.
  • Copia de seguridad de la base de datos: Ve a phpMyAdmin, selecciona tu base de datos de PrestaShop y haz clic en "Exportar". Elige el método "Rápido" y descarga el archivo .sql.

[TIP] Guarda estas copias en tu ordenador local y en un servicio externo (Google Drive, Dropbox). Nunca las dejes en el mismo servidor, porque si el hacker tiene acceso al panel, puede borrarlas.

3. Identifica el vector de entrada (¿Cómo entraron?)

La mayoría de las infecciones en PrestaShop vienen por:

  • Módulos o temas piratas (nulled): Es la causa número uno. Esos módulos de pago descargados gratis en foros suelen tener puertas traseras.
  • Versiones desactualizadas: Tanto el núcleo de PrestaShop como los módulos y el PHP del servidor.
  • Contraseñas débiles: Tanto del Back Office como del FTP o del panel de control.
  • Vulnerabilidades en módulos de terceros: No todos los desarrolladores son igual de cuidadosos.

Fase 1: Limpieza manual de archivos (El trabajo sucio)

Ahora sí, vamos a mancharnos las manos. Este proceso requiere paciencia. Lo haremos en dos frentes: archivos y base de datos.

4. Accede a tu servidor por FTP o administrador de archivos

Conecta con tu hosting usando un cliente FTP (como FileZilla) o el administrador de archivos de tu panel. Necesitas ver todos los archivos, incluidos los ocultos.

5. Busca archivos recientemente modificados

El malware suele modificar archivos existentes o crear nuevos justo antes de la detección. Ordena los archivos por "Fecha de modificación" y busca los que se hayan cambiado en las últimas 24-48 horas (cuando empezó el problema).

  • Archivos principales a revisar: index.php, .htaccess, config/settings.inc.php, config/config.inc.php, app/config/parameters.php.
  • Carpetas típicas de ataque: /modules, /themes, /var/cache, /img, /upload, /download.

Abre esos archivos sospechosos en un editor de texto (como Notepad++). Busca bloques de código codificados con base64_decode, eval, gzinflate, str_rot13 o funciones extrañas como create_function. Si ves una línea larguísima y críptica, es un archivo infectado.

6. Limpia el código ofensivo (Procedimiento manual)

Si encuentras un archivo con código malicioso, tienes dos opciones:

  1. Restaurar desde una copia limpia: Si tienes un backup de antes de la infección, simplemente reemplaza el archivo infectado por el bueno.
  2. Eliminar el código a mano: Si no tienes backup, edita el archivo y borra SOLO la línea o el bloque de código malicioso. No borres todo el archivo si el resto es legítimo.

[WARNING] No ejecutes nunca el archivo infectado en tu navegador para "ver qué hace". Podrías activar el payload y empeorar las cosas.

7. Elimina archivos .php extraños en carpetas de imágenes

Un truco muy común es subir un archivo llamado image.php o wp-load.php (sí, de WordPress) dentro de /img o /upload. Estos archivos no deberían estar ahí. Si ves un .php en una carpeta que solo debería contener imágenes o archivos de configuración, bórralo sin piedad.

8. Revisa el archivo .htaccess

El .htaccess es un archivo de configuración que puede redirigir a tus usuarios a sitios maliciosos. Descárgalo y revísalo.

  • Busca reglas de RewriteRule que apunten a dominios extraños.
  • Busca líneas que empiecen con Redirect o RedirectMatch.
  • Si ves algo raro y no tienes copia limpia, puedes descargar el .htaccess original de la versión de PrestaShop que uses y adaptarlo (aunque perderás las reglas personalizadas de SEO o seguridad, es preferible a estar infectado).

Fase 2: Limpieza de la base de datos (El escondite perfecto)

El malware no solo vive en archivos; a menudo se inyecta en la base de datos. Aquí es donde los hackers esconden scripts que se cargan en cada página.

9. Conéctate a phpMyAdmin y analiza las tablas

Entra a tu base de datos y busca tablas que no reconozcas. PrestaShop usa un prefijo (normalmente ps_). Cualquier tabla con un prefijo diferente (como information_schema, sys, o nombres aleatorios) es sospechosa.

  • Tablas temporales: Busca tablas llamadas tmp_ o backup_. Si hay muchas, puede ser señal de un ataque de fuerza bruta.
  • Tablas de caché: Las tablas ps_cache o similares pueden contener payloads codificados.

10. Busca código malicioso en las tablas de contenido

El malware suele inyectarse en campos que se muestran en pantalla, como:

  • ps_product (campo description)
  • ps_category (campo description)
  • ps_cms (campo content)
  • ps_configuration (campo value)

Pero buscar a mano es tedioso. Usa la pestaña "Buscar" en phpMyAdmin:

  • Selecciona tu base de datos.
  • Haz clic en la pestaña "Buscar".
  • En "Buscar texto", escribe: base64_decode o <script.
  • Marca la opción "Reemplazar también" si te atreves, o mejor, anota los resultados y límpialos uno a uno.

[INFO] Si el campo ps_shop_url o ps_configuration tiene URLs que no reconoces (apuntando a Rusia, China o sitios de apuestas), es un claro indicativo de infección. Cambia esas URLs por las tuyas propias.


Fase 3: Limpieza del caché y sesiones (El reinicio necesario)

Una vez limpiados archivos y base de datos, hay que "reiniciar" la tienda para que no queden restos en memoria.

11. Borra la carpeta /var/cache

PrestaShop guarda archivos compilados y caché en /var/cache (en versiones modernas) o /cache (en versiones antiguas). Borra el contenido de esas carpetas, pero NO borres las carpetas en sí, ni el archivo .htaccess que pueda haber dentro.

  • Conéctate por FTP.
  • Entra en /var/cache.
  • Selecciona todos los archivos y carpetas dentro (dev, prod, etc.) y bórralos.
  • Vacía la papelera.

12. Limpia las sesiones activas

En phpMyAdmin, ejecuta esta consulta SQL para eliminar todas las sesiones de usuario, forzando a que todos (incluido el hacker) tengan que volver a iniciar sesión:

DELETE FROM ps_connections;
DELETE FROM ps_connections_page;
DELETE FROM ps_guest;
DELETE FROM ps_sessions;

(Reemplaza ps_ por tu prefijo real si es diferente).


Fase 4: Blindaje post-limpieza (Seguridad PrestaShop)

Limpiar es solo la mitad del trabajo. Si no cierras la puerta por donde entraron, volverán en una semana. Aquí tienes las medidas de seguridad PrestaShop imprescindibles.

13. Cambia TODAS las contraseñas

Esto incluye:

  • Back Office de PrestaShop: Ve a tus datos de administrador y cambia la contraseña por una robusta (mínimo 12 caracteres, con mayúsculas, números y símbolos).
  • Base de datos (MySQL): Cambia la contraseña del usuario de la base de datos desde tu panel de hosting y actualiza el archivo app/config/parameters.php.
  • FTP y Panel de Control: Cambia la contraseña de acceso a tu hosting y al FTP.
  • Correo electrónico: Si usas el mismo correo para el hosting, cámbialo también.

14. Actualiza TODO

  • Núcleo de PrestaShop: Ve a Parámetros Avanzados > Información y actualiza a la última versión estable.
  • Módulos: Actualiza todos los módulos desde el administrador de módulos.
  • Tema: Si usas un tema de terceros, asegúrate de que esté actualizado.

[WARNING] Si usas módulos piratas, este es el momento de eliminarlos y comprar las licencias originales. Son la principal causa de reinfección. Un módulo "gratis" puede costarte la tienda entera.

15. Refuerza el acceso al Back Office

  • Cambia la URL de administración: Ve a Parámetros Avanzados > Administración y cambia la URL de acceso a tu panel (de /admin123 a algo como /gestion-2024-segura).
  • Activa la autenticación de dos factores (2FA): En Parámetros Avanzados > Seguridad, activa la verificación en dos pasos para tu cuenta de administrador.
  • Limita los intentos de conexión: Activa la opción de bloquear después de varios intentos fallidos.

16. Instala un módulo de seguridad (Opcional pero recomendado)

Existen módulos de pago y gratuitos que escanean tu tienda en busca de vulnerabilidades. Algunos ejemplos conocidos son:

  • PrestaShop Security Advisor (gratuito y oficial).
  • Advanced Security (de pago, con firewall y bloqueo de IPs).

Estos módulos te avisarán de archivos modificados o intentos de intrusión.


Preguntas Frecuentes (FAQ) sobre limpieza de malware

Aquí resolvemos las dudas más comunes que surgen durante este proceso.

¿Cuánto tiempo tarda en irse el aviso de malware de Google?

Puede tardar desde 24 horas hasta varias semanas. Una vez limpio, debes solicitar una revisión en Google Search Console (Herramienta "Problemas de seguridad"). Google revisará tu sitio manualmente. Si está limpio, retirará el aviso.

¿Qué pasa si no tengo una copia de seguridad limpia?

Es más difícil, pero no imposible. Tienes que limpiar archivo por archivo manualmente. Si el código está muy enredado, puedes intentar descargar la última versión de PrestaShop que usabas y reemplazar los archivos del núcleo (carpetas app, src, vendor, bin, etc.) sin tocar /modules, /themes ni /img. Luego, ejecuta la limpieza de base de datos como se indicó.

¿Puedo limpiar el malware yo mismo o debo contratar a un profesional?

Si te sientes cómodo con FTP y phpMyAdmin, sí puedes hacerlo siguiendo esta guía. Pero si al abrir un archivo no entiendes nada de código, es mejor contratar a un servicio especializado en limpiar malware PrestaShop. Ellos usan herramientas avanzadas y suelen ofrecer garantía de limpieza.

¿El malware puede afectar a mis clientes?

Sí. Algunos malware inyectan código que roba tarjetas de crédito en el momento del pago (skimming). Esto es muy grave, ya que podrías enfrentarte a demandas y a la pérdida total de confianza de tus clientes. Por eso es vital actuar rápido.

¿Cómo sé si mi hosting está comprometido?

Si después de limpiar todo, el malware reaparece en 24-48 horas, es probable que el servidor (el vecino en el hosting compartido) esté infectado o que el hacker tenga acceso a nivel de root. En ese caso, contacta con tu proveedor de hosting inmediatamente y considera migrar a un servidor dedicado o VPS.


Conclusión y Mantenimiento Preventivo

Limpiar un sitio PrestaShop infectado es un proceso meticuloso, pero con esta guía tienes el camino marcado. Recuerda la máxima: la prevención es mejor que la cura.

Establece una rutina:

  • Semanal: Haz una copia de seguridad automática de archivos y base de datos.
  • Mensual: Actualiza módulos y núcleo de PrestaShop.
  • Trimestral: Revisa los logs de acceso de tu servidor en busca de IPs sospechosas.

Y un último consejo: si tu hosting tiene integrado un firewall o un sistema de detección de intrusiones (IDS), actívalo. Muchos proveedores ofrecen servicios de limpieza gratuitos si el malware se detecta a tiempo.

[TIP] Si tu panel de control es Syspanel, recuerda que el acceso se realiza a través del puerto 2106 (ejemplo: https://tu-dominio.com:2106). Allí podrás gestionar tus copias de seguridad y acceder al administrador de archivos para realizar la limpieza de forma más cómoda.

Esperamos que esta guía te haya sido de gran ayuda. Con paciencia y siguiendo estos pasos, tu tienda volverá a estar sana y salva. ¡Mucho ánimo y a vender!

¿Necesitas ayuda?Son dos de nuestros técnicos, Agustín y Mikel, y están disponibles para resolver cualquier problema.

Hablar con ellos ahora
Agustín y Mikel