
脆弱性のタイトル: コマンドインジェクション
作成者: Erick Duarte
対象バージョン: < 3.2.5-2
この脆弱性は、Task Manager モジュールを Cron Profile と組み合わせて使用する際に発生します。この脆弱性を悪用するには、OS 内の特定のフォルダにスクリプトを配置する必要があります。そのフォルダは "/var/lib/vitalpbx/scripts" です。
そこで、興味本位で Burp を使って何がサーバーに送信されているかを分析し始めました。そのために、毎分実行される Cron Profile を作成しました。

次に、Task Manager の作成に進みました。

スクリプトフィールドで、ファイル名が渡されていることに気づきました。そこで、特殊文字によるエラーを避けるために、base64 でエンコードしたリバースシェルのペイロードを挿入することにし、送信しました。

その後、設定を適用するためだけに POST リクエストを送信しました。

そして、これでシェルを取得できました。

比較的高い権限レベルが必要であり、さらに特定のディレクトリにスクリプトを配置することが条件となることは理解しています。VitalPBX では、複数のユーザーを作成し、さまざまな種類の権限を付与することが可能です。もしこれらの権限が誤って設定されていたら、どうなるでしょうか? さらに、テナントを作成するオプションもあります。これらのテナントのいずれかがこの脆弱性を悪用できた場合、サーバー全体、他のテナントも含めて完全なアクセス権を取得する可能性があります。
私の調査結果がセキュリティコミュニティに貢献することを願っており、VitalPBX が必要な修正を行うことを信じています。