PrestaShop 9 no envía correos por SMTP: el fallo del puerto 587
Los pedidos entran y no sale ni un correo. Es un fallo de PrestaShop 9 con el puerto 587: la 9.2 lo corrige y hoy se…
Un cliente te escribe: al entrar en tu tienda le ha salido un «verifica que eres humano» que le pedía pulsar dos teclas, pegar algo y darle a Intro. Tú entras y no ves nada raro. Si te ha pasado, tu tienda PrestaShop tiene ClickFix: alguien ha metido en ella un código que enseña ese falso captcha a tus visitantes para que instalen ellos mismos un programa malicioso, normalmente uno que roba contraseñas.
No se va solo: alguien entró en tu tienda y lo dejó ahí. Se limpia, pero lo importante es cerrar la puerta por la que entró. Y no eres el único: el 3 de septiembre Netskope contó más de 5.400 webs infectadas por esta campaña, casi todas de pequeños negocios. Las que revisaron una a una eran sobre todo WordPress y, a veces, PrestaShop.
La página se emborrona detrás de un captcha falso que pide pulsar la tecla de Windows y la R, pegar y pulsar Intro. Lo que se pega es un comando que la página ya ha copiado sin avisar, y al ejecutarlo se instala el programa del atacante. Un captcha de verdad nunca te pide abrir nada en tu ordenador.
Que tú no lo veas no quiere decir que no esté. El código de tu tienda va a buscar el engaño fuera cada vez que alguien abre una página, y el atacante decide qué se enseña y a quién sin volver a tocarla. Está pensado para ordenadores con Windows, y la variante que The Hacker News describió el 6 de octubre deja el programa escondido en el navegador del visitante antes de pedirle nada.
Con la captura del cliente basta para ponerte en marcha.
En la base de datos, en un campo que la tienda pinta en todas las páginas, o en los archivos: Netskope lo encontró pegado a archivos JavaScript legítimos y en carpetas que imitan a un complemento real. Al comerciante francés que lo contó el 5 de octubre en el foro de PrestaShop, con una tienda 1.7.8, la base de datos le salió limpia y las puertas traseras estaban en archivos de varias carpetas.
index.php. Uno más, o uno cuyo nombre empieza por punto y que tu programa de FTP esconde, es una puerta trasera.La comprobación de Parámetros Avanzados → Información → Listado de archivos modificados solo mira si han cambiado los archivos del núcleo: no revisa el tema, ni los módulos, ni las imágenes, ni ve los archivos nuevos. Que salga vacía no quiere decir que estés limpio.
Netskope aún no sabe cómo entraron en esas webs. En PrestaShop, las puertas habituales son un módulo con un fallo conocido sin actualizar, una contraseña del panel robada o fácil, y los módulos «nulled», los de pago descargados gratis de webs piratas, que a menudo ya traen la puerta trasera puesta.
ps_facetedsearch, el módulo de los filtros del catálogo, que viene de serie con PrestaShop: dejaba a cualquiera, sin cuenta, ejecutar código en tu servidor. Está corregido en la 4.0.4; si tuviste una anterior, cuenta con que pudo ser la entrada. Y borra los módulos que no uses./admin. El segundo paso con un código en el móvil no viene de serie, pero se añade con un módulo.Consultas de solo lectura; cambia ps_ por el prefijo de la tienda. Warehouse guarda sus campos de código escapados, así que hay que buscar también <script.
SELECT name, LEFT(value, 120)
FROM ps_configuration
WHERE value LIKE '%<script%'
OR value LIKE '%<script%'
OR value LIKE '%eth_call%'
OR name LIKE '%codes_js';
SELECT id_cms, id_lang
FROM ps_cms_lang
WHERE content LIKE '%<script%';
SELECT id_employee, email,
id_profile, active,
last_connection_date
FROM ps_employee
ORDER BY id_employee DESC;
En los archivos, desde la raíz de la tienda:
find img upload download \
-name '*.php' ! -name index.php
find . -name '.*.php'
find . -type f -mtime -30 \
\( -name '*.php' -o -name '*.js' \) \
-not -path './var/cache/*'
grep -rl -e eth_call -e prebsc \
-e bsc-testnet -e claritydelivr \
--include=*.js --include=*.php \
--include=*.tpl .
Los indicadores de la campaña están en la lista de Netskope. Mejor reponer el núcleo y los módulos desde paquetes limpios de la misma versión que borrar archivo a archivo; después, vaciar var/cache y themes/*/assets/cache. PrestaShop 9 trae un .htaccess que impide ejecutar PHP en img, upload, download, js, vendor y modules: que sigan en su sitio y, con Nginx, que no los lee, llevar esas reglas a la configuración del servidor.
Si has encontrado algo y no tienes quien lo limpie, si ha vuelto después de limpiarlo o si no sabes por dónde empezar. Es parte de nuestro servicio de soporte y mantenimiento: limpiamos la tienda, buscamos por dónde entraron y cerramos la puerta. Mándanos la captura de tu cliente y tu versión de PrestaShop, y lo miramos el mismo día o el siguiente.
Los pedidos entran y no sale ni un correo. Es un fallo de PrestaShop 9 con el puerto 587: la 9.2 lo corrige y hoy se…
Va perfecta desde fuera de España y aquí da timeout justo los días de partido. No es tu servidor: es una IP de…
Un módulo, una app, un servidor que da guerra o solo una opinión. La primera consulta no cuesta nada, y de ahí sale un presupuesto cerrado con precio y fecha.