
Exploit de prueba de concepto para CVE-2025-56015, un escape de la sandbox y RCE en GenieACS. Automatiza la creación de aprovisionamiento malicioso, el mapeo de presets y la entrega de reverse shell mediante la simulación de CWMP.
Prueba de concepto del exploit para CVE-2025-56015, una vulnerabilidad crítica de escape de la sandbox e inyección de código en GenieACS que permite la ejecución arbitraria de JavaScript en el contexto de aprovisionamiento. Al aprovechar la cadena de prototipos declare.constructor.constructor, un atacante puede escapar del entorno JavaScript restringido, acceder a los módulos subyacentes child_process y net de Node.js y lograr la ejecución remota de código (RCE) completa.
Tipo de exploit: Remoto
Autenticación: Requiere acceso de red a la NBI de GenieACS (puerto 7557) y a la ACS (puerto 7547)
Impacto: Compromiso total del servidor, ejecución de shell inversa, pivoteo en la red
El endpoint NBI en el puerto 7557 permite acceso sin autenticación para recuperar datos sensibles. Ejemplos de endpoints API incluyen:
Obtener datos de usuarios:
$ curl 'http://myhost:7557/users/'
La respuesta incluye información sensible como hashes de contraseñas y sales.
Obtener lista de archivos:
$ curl 'http://myhost:7557/files/'
Obtener detalles de aprovisionamientos:
$ curl 'http://myhost:7557/provisions/'
Además, los archivos se pueden descargar directamente del servidor de archivos (puerto 7567) sin autenticación:
wget 'http://myhost:7567/SCR-20250623-qjoi.png'
Un endpoint de depuración dentro de una sandbox restringe el acceso directo al objeto process de Node.js. Sin embargo, es posible eludir esta restricción mediante el recorrido de objetos, específicamente usando la cadena de constructores (por ejemplo, constructor.constructor).
Al invocar esto sobre objetos disponibles (como declare), los atacantes pueden escapar del contexto de la sandbox y obtener acceso al objeto global process. Esto otorga la capacidad de leer variables de entorno y ejecutar comandos arbitrarios.
RCE post-autenticación:
Los scripts de aprovisionamiento pueden ejecutarse directamente a través del endpoint API /api/devices/{device_id}/tasks para obtener una shell. Las solicitudes enviadas solo a través de la NBI se ponen en cola pero no se ejecutan de inmediato.
RCE pre-autenticación (RCE sin autenticación): Utilizando la API NBI, un atacante puede crear aprovisionamientos y presets sin autenticación. El preset sirve para ejecutar scripts de aprovisionamiento automáticamente cuando un dispositivo envía un evento a través de la interfaz CWMP.
Pasos para explotar:
PUT /provisions/{provision_name}.PUT /presets/{preset_name} (vinculándolo a un evento como "Periodic").declare.constructor.constructorAntes de ejecutar el exploit, actualice las configuraciones ACS_URL, NBI_URL, LHOST y LPORT directamente dentro de exploit.py para que coincidan con su entorno y la configuración de la máquina atacante.
# Iniciar el listener en la máquina atacante
nc -lvnp 4444
# Ejecutar el exploit
python3 exploit.py

requests (pip install requests)Este código se proporciona únicamente con fines educativos y de pruebas de seguridad autorizadas.
El uso no autorizado contra sistemas que no posea o para los que no tenga permiso explícito es ilegal y no ético.
Vulnerabilidades descubiertas y exploit desarrollado por:
De Datafarm Co., Ltd.
Desarrollado por DF Pentest Team • Tailandia