Has montado Mautic en un servidor limpio, lo has probado y funciona todo. Estás configurando el correo electrónico, haces la comprobación de conexión, todo va bien. Pero es llegar al envío de prueba del correo, y se queda eternamente pensando, hasta llegar a un error 503 del servidor.
Este error, unido a los mensajes que devuelve el archivo de log del servidor, pueden llevarte a dar vueltas inútilmente.
Por otro lado, el log del propio Mautic (en app/logs), tampoco te va a ayudar mucho:
[2020-09-21 12:00:03] mautic.NOTICE: Symfony\Component\Debug\Exception\FatalThrowableError: Call to undefined
function Mautic\EmailBundle\MonitoredEmail\imap_search() (uncaught exception) at
/ruta/absoluta/a/mautic/app/bundles/EmailBundle/MonitoredEmail/Mailbox.php line 570
while running console command `mautic:email:fetch` [] []
Realmente este problema lo que está indicando es que muy probablemente tengas que instalar el paquete PHP-Imap. Dependiendo de si usas CentOS o Ubuntu, la instalación puede variar un poco, esto mejor lo buscas según sea tu distro. Y al terminar de instalarlo, recuerda reiniciar Apache (o Nginx) y PHP-FPM si lo estás utilizando.
El ataque a plataformas de WordPress por este tipo de malware ha saltado de forma masiva a principios de septiembre de 2.020. se caracteriza por insertar un código en JavaScript al principio de ciertos archivos de la web y artículos en la base de datos, de manera que la web hackeada redirecciona el tráfico que le llega y lo lleva a una serie de webs ajenas a la web hackeada.
¿Cómo logra penetrar en el sistema?
En principio parece que aprovecha una vulnerabilidad de un plugin, File Manager, aunque esa vulnerabilidad puede estar presente en otros plugins.
¿Cómo lo quito del sistema?
Si tiene una copia de seguridad de antes del ataque, restáurela, instale todas las actualizaciones que necesite el sistema y desinstale aquellos plugins discontinuados y los que sirvan para administrar los archivos de WordPress (sus nombres pueden ser File Manager o similar).
Si no tiene copia, o ésta está infectada también, o la copia no es lo suficientemente actualizada, entonces puede hacer una de estas dos cosas:
1.- Armarse de paciencia y empezar a limpiar código malicioso de la siguiente forma:
Localizar los archivos insertados en el sistema para infectarlo
En el directorio de wp-content/uploads/ habrá probablemente un archivo llamado _lte o lte_ o similar. Y algún archivo que aparentemente sea de WordPress, porque su nombre comenzará por wp- y tendrá extensión .php. Hay que borrarlos. También habría que localizar en el directorio raíz algún archivo añadido a los propios de WordPress.
Limpiar el código
Lo más cómodo es sustituir los directorios w-admin y wp-include de una versión limpia de WordPress que se localice en la web oficial de WordPress. Después se localizarán los archivos modificados recientemente (una técnica fiable para saber cuándo se produjo el ataque es mirar la fecha y hora de index.php, y a partir de ahí, buscar los archivos .js y .php modificados en esa fecha y hora).
Archivos PHP
Una vez localizados los archivos .php modificados, se sustituirá la cadena insertada antes del primer ««. La cadena que encontramos nosotros inicialmente era
aunque la URL puede cambiar.
Archivos JS
En este caso, puede ser que la cadena a insertar sea parecida a esta cadena:
Limpiar la base de datos
Hay que descargar un backup de la tabla de posts y buscar la cadena que hemos visto anteriormente en los archivos .php insertadas, y borrarlas. Después se vuelcan estas líneas modificadas de nuevo con un replace, de forma que todas las líneas quedan sin el script insertado.
2.- O hacer las cosas un poco más rápidas.
Esto sólo puede hacerse sólo si no se han modificado ni plugins ni plantilla, o bien se tienen los códigos originales de lo modificado:
Localizar la cadena insertada mirando el index.php en el directorio raíz.
Limpiar la tabla de posts la base de datos
, como se explica en el apartado anterior y extraer un backup completo.
Realizar una lista de los plugins y la plantilla que tiene instalada
Y si hay un tema hijo, se deberá tener o bien un backup válido o bien, habrá que limpiar el código del tema hijo, como se explica en el punto anterior «Limpiar código»
Limpiar el directorio de imágenes
Haremos un backup de wp-content/uploads y se buscará el archivo _lte o similar para borrarlo, junto con el archivo que comience por wp- en ese directorio, y que no sea propio de WordPress
Borrar la web
Excepto wp-config.php, wp-content/uploads/* y volver a instalar WordPress y los plugins
Si tiene una web hackeada y no sabe recuperarla, podemos ayudarle.
El comando sed de Linux es una poderosa y polivalente herramienta que nos saca de más de un apuro, aunque no la lleguemos a utilizar en todo su potencial. Resulta especialmente útil para realizar sustituciones masivas, del tipo cambiar «bar» por «foo» en un centenar de archivos.
La sintaxis básica del comando es sencilla:
sed ´s/bar/foo/g´ miarchivo.txt
Los problemas empiezan cuando la cadena a sustituir no es una simple palabra sino una línea de código HTML, por ejemplo:
Como cabe imaginar, hay caracteres en esta cadena (comillas, barra, etc) que interfieren con la sintaxis de sed y dificultan la identificación de la cadena, cuando no devuelven un error. Obviamente se puede intentar «escapar» los caracteres molestos precediéndolos de una barra invertida (\), pero en cadenas largas esto se puede complicar. El número de barras puede ser elevado y es fácil dejarse alguna por el camino, legibilidad aparte. Además, el «escapado» de las comillas simples puede acabar siendo una pesadilla que deriva en comportamientos no esperados (y hablamos por experiencia).
Para hacer el camino más suave, aquí van un par de consejos que no siempre se tienen en cuenta:
En sed, el delimitador por defecto es la barra (/), pero se puede utilizar cualquier otro carácter. El carácter inmediatamente siguiente a la s inicial se tomará como delimitador.
El argumento de sed irá entrecomillado a menos que la sustitución sea del tipo palabra por palabra. En la inmensa mayoría de los ejemplos veremos que se emplean comillas simples, puesto que si se usan comillas dobles se interpretarán los posibles caracteres especiales que contenga el argumento. Pero en casos como el que nos ocupa, nos puede salvar del apuro.
Por tanto, en nuestro caso, el comando de sustitución quedaría así:
sed -i "s||nuevo_texto|g" miarchivo.txt
Utilizamos el argumento -i para que los cambios se apliquen, puesto que si lo quitamos, estaríamos haciendo un «dry run» que simplemente volcaría el resultado por pantalla, dejando el archivo intacto.
Aunque todo se puede mejorar y los más avezados tirarán de complejas expresiones regulares, a veces un par de cambios sencillos como estos nos pueden ahorrar bastante tiempo.