|

¿Qué es www.roxoenos.xyz?

Escenario

Desde hace años tengo una aplicación web apoyada en Laravel, que mantengo con frecuencia. En el servidor corren dos instancias del framework, una para la aplicación principal con Laravel 6, y otra para un API que desplegué hace poco con Laravel 7.

Problema

Llevo unos días notando que las páginas tardan más en cargarse, problema que achaco a la saturación de la base de datos y no doy mayor importancia. Hace unos días un amigo me mostró como al intentar entrar en la página fue dirigido a otra, pero lo achaqué a un problema de su teléfono. Decido acceder al servidor para echar un vistazo a sus recursos. No noto nada raro hasta que me da por comprobar si el fichero de entrada de la aplicación, index.php, ha sido modificado. Como está bajo control de versiones basta con hacer un git diff HEAD public/index.php: Por lo visto «alguien» ha incrustado un bloque de código con una instrucción que ejecuta el siguiente código codificado en base64: Por lo que entiendo el script verifica si alguna de las cookies contienen las cadenas de texto «aeNee8pi» o «wordpress_logged_in», en cuyo caso no hace nada. De lo contrario redirecciona a la página https://www.roxoenos.xyz, que desconozco que hace. Pero me figuro que nada bueno.

Solución

Lo primero que hago es borrar el bloque de código incrustado. Pero al cabo de unos segundos vuelve a aparecer. No veo ningún proceso sospechoso corriendo en el servidor así que imagino que el causante de la regeneración del código debe de ser una tarea cron. La aplicación web usa el usuario www-data, y es el primero cuyo crontab compruebo con sudo nano /var/spool/cron/crontabs/www-data. Éste el contenido:

Así que cada dos por tres la tarea programada descarga y ejecuta un script misterioso. Pruebo a descargar el script pero wget devuelve un error ( failed: Connection refused). De haber tener tiempo investigaría un poco más, pero ahora quiero deshacerme del servidor. Ya no me fío. Hace tiempo que quiero probar LightSail de AWS, ésta puede ser una buena ocasión. Dos horas después lo tengo todo funcionando en la nueva máquina. Y un poco más tarde vuelvo a notar que la aplicación va muy lenta. ¿Cómo puede ser? No traje nada del antiguo servidor, solo el código fuente que está bajo control de versiones en GitHub. No puede ser que haya un trojano en el código…

Cuando accedo al servidor por SSH, un htop informa que el 100% de los recursos de las CPUs está siendo acaparado por dos procesos: kdevtmpfsi y kinsing. Ambos ejecutables están situados en /tmp. ¿Cómo han llegado ahí? Gracias a una búsqueda rápida en Google descubro que se trata de dos miners malvados. De nuevo ha aparecido una tarea cron que descarga y ejecuta un script de una dirección IP. La borro, mato los procesos del malware, borro los ejecutables y a continuación creo dos ficheros con el mismo nombre, pero de solo lectura:

Estos dos por lo menos no volverán a instalarse. Todavía me queda por averiguar cómo el atacante consigue crear tareas programadas. Tras una inspección minuciosa de los logs de nginx y otra búsqueda en Google. doy con la puerta trasera. En modo DEBUG, Laravel <= v8.4.2 permite la ejecución remota de código (CVE-2021-3129). Y, como no, sin saberlo una de las dos aplicaciones tenía el modo DEBUG igual a TRUE…

Publicaciones Similares

  • Instalación certificado SSL de un vendedor

    Escenario Tienes una web con un certificado de un vendedor que va a expirar, o no tienes certificado y, por la razón que sea, quieres uno de pago. Objetivo Necesitas instalar o renovar un certificado SSL proporcionado por uno de los vendedores tradiciones, Comodo, Symantec, Geotrust, etc… Usaremos a modo de ejemplo el subdominio ssl.technoage.net….

  • |

    ssh: connect to host: Connection refused

    Escenario Esta mañana ha ocurrido algo inexplicable, por lo menos, como suele pasar en este dominio, hasta que hemos dado con la solución; luego parecía obvio. Nos avisan que una de las máquinas de nuestra red negaba el acceso por SSH provocando el siguiente error:

    Lo primero que pensamos es podía estar relacionado con…

  • |

    Cómo ampliar el espacio en disco en 1and1

    Escenario Hemos contratado un servidor dedicado en 1and1 (ubuntu 14.04) y al acceder por ssh constatamos que no disponemos de todo el espacio en disco disponible: $ df -hFilesystem Size Used Avail Use% Mounted onudev 3.9G 4.0K 3.9G 1% /devtmpfs 798M 592K 797M 1% /run/dev/md1 4.0G 990M 3.0G 25% /none 4.0K 0 4.0K 0% /sys/fs/cgroupnone 5.0M 0 5.0M 0% /run/locknone 3.9G 0 3.9G 0% /run/shmnone 100M 0 100M 0% /run/user/dev/mapper/vg00-usr 4.8G 1.3G 3.3G 28% /usr/dev/mapper/vg00-var 4.8G 812M 3.8G 18% /var/dev/mapper/vg00-home 4.8G 10M 4.6G 1% /home Objetivo Aumentar el espacio disponible para dar cabida a nuestros recursos. Solución Nota: sólo aplicable a sistemas linux Primer paso Comprobamos el espacio en disco real: ~$ sudo fdisk -lDisk /dev/sda: 240.1 GB, 240057409536 bytes255 heads, 63 sectors/track, 29185 cylinders, total 468862128 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 4096 bytesI/O size (minimum/optimal): 4096 bytes / 4096 bytesDisk identifier: 0x24e3fc12   Device Boot      Start         End      Blocks   Id  System/dev/sda1            2048     8390655     4194304   fd  Linux raid autodetect/dev/sda2         8390656    12584959     2097152   82  Linux swap / Solaris/dev/sda3        12584960   468862127   228138584   fd  Linux raid autodetect Segundo…

  • Instalación certificado raíz Comodo

    Escenario Hemos migrado nuestro repositorio de git a un nuevo servidor y tenemos que actualizar las URLs de los orígenes de nuestros repositorios locales. Problema Cambiamos la url remota del repositorio local de git con el comando git remote set-url y, tras hacer un pull git nos devuelve el siguiente error: fatal: unable to access 'https://git.technoage.es/acme.git/': server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none Solución Por lo visto nuestra…

  • |

    Gestión de imágenes corruptas

    Escenario Nos encontramos ante una biblioteca de decenas de miles de archivos fotográficos, de los cuales un porcentaje considerable está corrupto. Objetivo Depurar las imágenes corruptas a fin de organizar como es debido nuestra biblioteca. Solución Nota: sólo aplicable a sistemas linux Vamos a necesitar la aplicación ImageMagick: $sudo apt-get install imagemagick y rsync, que debería venir instalado…

  • Actualización de MySQL: de la versión 5.7 a 8.0

    Atención no probar esta solución en sistemas en producción. Es solo una demostración de prueba. Escenario Por la razón que fuera queremos actualizar la versión de MySQL de 5.7 a 8.0 en ubuntu 16.04. En mi caso quería probar si con la actualización mejoraba cierto problemillas que estaba teniendo con la codificación de caracteres. Problema…

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *