
Proof-of-Concept-Exploit für eine Befehlseinschleusungsschwachstelle im VitalPBX Task Manager Modul, das die Zustellung einer Reverse-Shell-Nutzlast über die Manipulation von Cron-Profilen demonstriert.
Sicherheitslücke: Command Injection
Autor: Erick Duarte
Version: < 3.2.5-2
Die Sicherheitslücke tritt auf, wenn das Task-Manager-Modul in Verbindung mit dem Cron-Profil verwendet wird. Um diese Sicherheitslücke auszunutzen, müssen wir ein Skript in einem bestimmten Verzeichnis des Betriebssystems platzieren. Das Verzeichnis ist "/var/lib/vitalpbx/scripts".
Aus Neugier begann ich also damit zu analysieren, was mit Burp an den Server gesendet wurde. Dazu erstellte ich ein Cron-Profil, das jede Minute ausgeführt wird.

Als nächstes erstellte ich den Task-Manager.

Im Skriptfeld fiel mir auf, dass der Dateiname übergeben wurde. Also entschied ich mich, einen base64-codierten Reverse-Shell-Payload einzufügen (nur um Fehler mit Sonderzeichen zu vermeiden) und sendete ihn ab.

Dann sendete ich die POST-Anfrage, um die Einstellungen zu übernehmen.

Und da haben wir sie – die Shell.

Mir ist bewusst, dass relativ hohe Privilegien erforderlich sind und es auch davon abhängt, dass ein Skript im entsprechenden Verzeichnis vorhanden ist. In VitalPBX ist es möglich, mehrere Benutzer zu erstellen und verschiedene Arten von Berechtigungen zu vergeben. Was würde passieren, wenn diese Berechtigungen falsch konfiguriert wären? Zudem gibt es die Möglichkeit, einen Tenant zu erstellen. Wenn einer dieser Tenants diese Sicherheitslücke ausnutzen könnte, hätte er potenziell vollen Zugriff auf den Server, einschließlich anderer Tenants.
Ich hoffe, dass meine Erkenntnisse zur Sicherheits-Community beitragen, und vertraue darauf, dass VitalPBX die notwendigen Korrekturen vornehmen wird.