
Exploit de prueba de concepto para una vulnerabilidad de inyección de comandos en el módulo Task Manager de VitalPBX, que demuestra la entrega de un payload de reverse shell mediante la manipulación del perfil de cron.
Título de la vulnerabilidad: Inyección de comandos
Autor: Erick Duarte
Versión: < 3.2.5-2
La vulnerabilidad ocurre al usar el módulo Task Manager junto con Cron Profile. Para explotar esta vulnerabilidad, necesitamos colocar un script en una carpeta específica dentro del SO. La carpeta es "/var/lib/vitalpbx/scripts".
Entonces, por curiosidad, comencé a analizar lo que se estaba enviando al servidor usando Burp. Para ello, creé un Cron Profile para que se ejecutara cada minuto.

A continuación, procedí a crear el Task Manager.

En el campo de script, noté que pasaba el nombre del archivo. Así que decidí insertar un payload de reverse shell codificado en base64 (solo para evitar errores con caracteres especiales) y lo envié.

Luego, envié la solicitud POST solo para aplicar la configuración.

Y ahí está, obtuvimos la shell.

Entiendo que se necesita un nivel de privilegio relativamente alto, y también depende de tener un script en el directorio específico. En VitalPBX, es posible crear múltiples usuarios y otorgar varios tipos de permisos. ¿Qué sucedería si estos permisos estuvieran mal configurados? Además, existe la opción de crear un Tenant. Si uno de estos Tenants logra explotar esta vulnerabilidad, podría potencialmente obtener acceso completo al servidor, incluidos otros Tenants.
Espero que mis hallazgos contribuyan a la comunidad de seguridad, y confío en que VitalPBX realizará las correcciones necesarias.