
CVE-2024-22515 任意ファイルアップロードおよび CVE-2024-22514 リモートコード実行 (AgentDVR 5.1.6.0、認証済み)
CVE-2024-22515 任意ファイルアップロードおよび CVE-2024-22514 リモートコード実行 (AgentDVR 5.1.6.0、認証済み)
(古いバージョンも影響を受ける可能性があります)
https://github.com/Orange-418/CVE-2024-22514-Remote-Code-Execution
https://github.com/Orange-418/CVE-2024-22515-File-Upload-Vulnerability
https://www.ispyconnect.com/docs/agent/about
https://www.youtube.com/watch?v=RXmoXERWVk8
4.7.3.0 および 5.1.6.0 でテスト済み。その間のバージョンや古いバージョンも影響を受ける可能性があります。Windows x64、Linux x64、Docker のインストールでテスト済み。Windows の場合は少し異なることに注意してください。bash を呼び出す代わりに、"/AgentDVR/sounds/payload.exe" のように exe ファイルを直接呼び出すことができます。
AgentDVR バージョン 5.1.6.0 には 2 つの脆弱性があります:任意ファイルアップロードの脆弱性と任意ファイル実行の脆弱性です。これらは連鎖して、アップロードされた任意のファイル(悪意のあるペイロードを含む)の実行を可能にします。これにより、AgentDVR サーバーの有効な認証情報を持つ個人が RCE を実行できる可能性があります。
このプログラムの性質上、大部分が WebRTC を使用しているため、PoC スクリプトは作成しませんでした。ただし、手動のプロセスは非常に簡単です。誰かが PoC スクリプトを作成して私に連絡してくれた場合、ここにリンクを貼ります。
まず、ダッシュボードにログインした後、新しいデバイスを追加します。デフォルト設定で「Dummy」(ダミー)デバイスを作成するだけです。

デバイスで、写真が撮影された場合にタスクをトリガーするアクションを追加します。次に、タスクを追加し、「コマンドを実行」を選択し、トリガーするコマンドのドロップダウンで任意の「ファイル」を選択します。

次に、ペイロードを準備します。このリポジトリにある "payload.sh" ファイルを変更して使用できます。これは非常にシンプルなリバースシェルスクリプトです。
準備ができたら、サーバーメニューに戻り、「ファイルアップロード」を選択します。「音声」を選択し、ファイルを参照し始めますが、ファイルセレクタのドロップダウンを "*.wav" から「すべてのファイル」に切り替えます。


次に、サーバーメニューに戻り、「バックアップ/復元」を選択します。「ダウンロード」を選択します。いくつかの異なる .XML ファイルを含む zip ファイルがダウンロードされます。

内容を展開し、"config.xml" を開きます。下部付近に '<Directory Entry="/path/to/media/"' のような行があります。これは AgentDVR インストールのフォルダ構造であり、インストールの種類によって異なる形式になる可能性があるため重要です。

次に、objects.xml ファイルを編集し、下部付近で '<entry type="EXE" param1=' のような行を見つけます。デフォルトのアラート bat ファイルを呼び出すパスを編集し、bash を呼び出して .sh スクリプトを実行するパスに置き換えます。前の手順のパスを参考にして、挿入するパスを決めることができます。

その後、リスナーを起動します。

次に、サーバーメニューに戻り、再度「バックアップ/復元」を選択します。今回はファイルをアップロードするオプションを選び、編集した "objects.xml" ファイルを選択します。

ダッシュボードが変更を反映して再起動します。理論的には、写真が撮影されたときにリバースシェルスクリプトをトリガーするアラートを備えたダミーカメラができたはずです。リスナーを起動した状態で、ダミーカメラのフィードを右クリックし、「写真を撮る」を選択します。

これでルートシェルが取得できているはずです。
