# Vulnerabilidad de Inyección de Comandos en CyberPanel CVE-2024-51378: Análisis y Explotación
Se ha descubierto una vulnerabilidad de inyección de comandos (CVE-2024-51378) en las versiones de CyberPanel hasta la 2.3.7 inclusive. Permite a los atacantes eludir la autenticación y ejecutar comandos arbitrarios a través de los endpoints /dns/getresetstatus y /ftp/getresetstatus. El problema se localiza en los archivos dns/views.py y ftp/views.py. Esto otorga al atacante control total sobre el servidor sin necesidad de autorización.
CyberPanel: Propósito y Arquitectura
CyberPanel es un panel de control de alojamiento web de código abierto construido sobre OpenLiteSpeed. Gestiona dominios, bases de datos, FTP, correo electrónico y DNS mediante una interfaz web en el puerto 8090. Es popular entre proveedores de alojamiento y desarrolladores por su integración fluida con pilas tecnológicas modernas.
La vulnerabilidad afecta a servidores Ubuntu/Debian con el panel instalado. Un atacante puede obtener acceso root, comprometiendo todos los servicios alojados.
Configuración de un Entorno de Prueba
Para verificar la vulnerabilidad, levanta un VPS con Ubuntu e instala una versión vulnerable de CyberPanel:
- Actualiza paquetes:
apt-get update
- Instala wget y descarga el instalador:
apt install wget
cd /opt
wget -O installer.sh https://cyberpanel.net/install.sh
- Ejecuta la instalación:
chmod +x installer.sh
sh installer.sh
Tras reiniciar, abre https://<IP>:8090 para la configuración. Esto crea un entorno de prueba con endpoints vulnerables.
Análisis Técnico de la Vulnerabilidad
La RCE proviene de una validación inadecuada de entrada en los manejadores de /dns/getresetstatus y /ftp/getresetstatus. Los parámetros de consulta se pasan directamente a comandos de shell sin un escape adecuado, lo que permite la inyección.
Ejemplo de explotación usando el PoC público:
git clone https://github.com/refr4g/CVE-2024-51378.git
cd CVE-2024-51378
python3 CVE-2024-51378.py http://target.com:8090 /ftp/getresetstatus
El script envía una solicitud diseñada que ejecuta el payload en el servidor. El resultado es una shell inversa o ejecución de comandos a nivel root. En un entorno de prueba, esto permite la extracción de flags o la persistencia.
Vectores de Ataque Principales:
- Elusión de autenticación sin credenciales.
- Ejecución de
os.system()con entrada controlada por el usuario. - Escalada de privilegios a root debido al contexto del panel.
Métricas de Impacto y Detección
La vulnerabilidad obtiene una puntuación CVSS 9.8 (Crítica) y afecta a todas las instalaciones anteriores al parche de la 2.3.7. Para detectarla, revisa los registros en /home/cyberpanel/logs/ en busca de solicitudes sospechosas a /getresetstatus o monitorea el tráfico en el puerto 8090.
Pasos de Verificación:
- Verifica la versión:
cyberpanel version. - Prueba los endpoints con curl:
curl 'http://target:8090/ftp/getresetstatus?param=;id'. Si devuelveuid=0(root), la vulnerabilidad existe. - Usa escáneres como Nuclei con la plantilla CVE-2024-51378.
Medidas de Remediación
- Actualiza a 2.3.7 o superior con el parche: sigue las instrucciones del panel o CLI.
- Restringe el acceso: configura firewall en el puerto 8090 (p. ej.,
ufw allow from IP-range), o usa VPN. - Despliega un WAF como ModSecurity para bloquear inyecciones.
- Auditoría:
grep -r 'getresetstatus' /usr/local/CyberCP/para modificaciones personalizadas.
Las actualizaciones regulares y los principios de menor privilegio ayudan a minimizar riesgos.
Lecciones Clave
- La vulnerabilidad permite RCE sin autenticación a través de
/dns/getresetstatusy/ftp/getresetstatusen versiones ≤2.3.7. - Parche disponible; las actualizaciones inmediatas son críticas para producción.
- Prueba tu entorno con el PoC antes de aplicar parches para evitar falsos positivos.
- Monitorea el puerto 8090 y los registros en busca de patrones de inyección de comandos.
- Limita el acceso externo al panel mediante firewall/VPN.
— Editorial Team
Aún no hay comentarios.