
Exploit de prova de conceito para uma vulnerabilidade de injeção de comandos no módulo Task Manager do VitalPBX, demonstrando a entrega de payload de reverse shell via manipulação de perfil do cron.
Título da Vulnerabilidade: Injeção de Comandos
Autor: Erick Duarte
Versão: < 3.2.5-2
A vulnerabilidade ocorre ao usar o módulo Task Manager em conjunto com o Cron Profile. Para explorar esta vulnerabilidade, precisamos colocar um script em uma pasta específica dentro do sistema operacional. A pasta é "/var/lib/vitalpbx/scripts".
Então, por curiosidade, comecei a analisar o que estava sendo enviado ao servidor usando o Burp. Para isso, criei um Cron Profile para executar a cada minuto.

Em seguida, proceedi para criar o Task Manager.

No campo do script, percebi que ele passava o nome do arquivo. Então, decidi inserir um payload de reverse shell codificado em base64 (apenas para evitar erros com caracteres especiais) e o enviei.

Em seguida, enviei a requisição POST apenas para aplicar as configurações.

E aí está, conseguimos o shell.

Eu entendo que um nível relativamente alto de privilégio é necessário, e também depende de se ter um script no diretório específico. No VitalPBX, é possível criar vários usuários e conceder vários tipos de permissões. O que aconteceria se essas permissões estivessem mal configuradas? Além disso, existe a opção de criar um Tenant. Se um desses Tenants conseguir explorar essa vulnerabilidade, ele poderia potencialmente obter acesso total ao servidor, incluindo outros Tenants.
Espero que minhas descobertas contribuam para a comunidade de segurança, e confio que a VitalPBX fará as correções necessárias.