
Exploit de preuve de concept pour une vulnérabilité d'injection de commandes dans le module VitalPBX Task Manager, démontrant la livraison de payload de shell inversé via la manipulation de profils cron.
Titre de la vulnérabilité : Injection de commandes
Auteur : Erick Duarte
Version : < 3.2.5-2
La vulnérabilité survient lors de l'utilisation du module Task Manager conjointement avec le profil Cron. Pour exploiter cette vulnérabilité, nous devons placer un script dans un dossier spécifique du système d'exploitation. Ce dossier est "/var/lib/vitalpbx/scripts".
Donc, par curiosité, j'ai commencé à analyser ce qui était envoyé au serveur à l'aide de Burp. Pour ce faire, j'ai créé un profil Cron pour qu'il s'exécute toutes les minutes.

Ensuite, j'ai procédé à la création du Task Manager.

Dans le champ script, j'ai remarqué qu'il transmettait le nom du fichier. J'ai donc décidé d'insérer une charge utile de reverse shell encodée en base64 (juste pour éviter les erreurs avec les caractères spéciaux) et de l'envoyer.

Ensuite, j'ai envoyé la requête POST simplement pour appliquer les paramètres.

Et voilà, nous avons obtenu le shell.

Je comprends qu'un niveau de privilège relativement élevé est nécessaire, et que cela dépend aussi de la présence d'un script dans le répertoire spécifique. Dans VitalPBX, il est possible de créer plusieurs utilisateurs et d'accorder différents types de permissions. Que se passerait-il si ces permissions étaient mal configurées ? De plus, il existe l'option de créer un Tenant. Si l'un de ces Tenants parvient à exploiter cette vulnérabilité, il pourrait potentiellement obtenir un accès complet au serveur, y compris aux autres Tenants.
J'espère que mes découvertes contribueront à la communauté de la sécurité, et je fais confiance à VitalPBX pour apporter les corrections nécessaires.