
CVE-2024-22515 beliebiger Datei-Upload und CVE-2024-22514 Remote-Code-Ausführung für AgentDVR 5.1.6.0 (Authentifiziert)
CVE-2024-22515 beliebiger Datei-Upload und CVE-2024-22514 Remote-Code-Ausführung für AgentDVR 5.1.6.0 (Authentifiziert)
(Ältere Versionen wahrscheinlich betroffen)
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
Getestet auf 4.7.3.0 und 5.1.6.0. Versionen dazwischen und ältere sind wahrscheinlich ebenfalls betroffen. Getestet auf Installationen für Windows x64, Linux x64 und Docker. Es ist erwähnenswert, dass der Ausführungspfad für Windows leicht variiert. Anstatt bash aufzurufen, kann man direkt eine EXE-Datei aufrufen, z. B. "/AgentDVR/sounds/payload.exe".
AgentDVR Version 5.1.6.0 enthält zwei Schwachstellen: eine Schwachstelle für beliebigen Datei-Upload und eine Schwachstelle für beliebige Dateiausführung. Diese greifen ineinander, um die Ausführung jeder hochgeladenen Datei, einschließlich bösartiger Payloads, zu ermöglichen. Dies führt zu möglicher RCE durch Personen mit gültigen Anmeldeinformationen für einen AgentDVR-Server.
Aufgrund der Natur des Programms, das größtenteils WebRTC verwendet, habe ich kein PoC-Skript erstellt. Der manuelle Prozess ist jedoch sehr einfach. Falls jemand ein PoC-Skript erstellt und mich kontaktiert, werde ich es hier verlinken.
Melden Sie sich zunächst im Dashboard an und fügen Sie ein neues Gerät hinzu. Erstellen Sie ein "Dummy"-Gerät mit Standardeinstellungen.

Fügen Sie auf dem Gerät eine Aktion hinzu, um eine Aufgabe auszulösen, wenn ein Foto aufgenommen wird. Fügen Sie dann eine Aufgabe hinzu und wählen Sie "Befehl ausführen" und wählen Sie im Dropdown-Menü für den auszulösenden Befehl eine beliebige "Datei".

Bereiten Sie nun Ihren Payload vor. Sie können die Datei "payload.sh" in diesem Repository ändern und verwenden. Es ist ein sehr einfaches Reverse-Shell-Skript.
Nachdem es fertig ist, gehen Sie zurück zum Servermenü und wählen Sie "Datei-Upload". Wählen Sie "Audio" und beginnen Sie mit der Suche nach der Datei, wechseln Sie jedoch das Dateiauswahl-Dropdown von "*.wav" zu "Alle Dateien".


Gehen Sie als nächstes zurück zum Servermenü und wählen Sie "Backup/Wiederherstellung". Wählen Sie "Herunterladen". Sie erhalten eine ZIP-Datei mit mehreren XML-Dateien.

Extrahieren Sie den Inhalt und öffnen Sie die "config.xml". In der Nähe des unteren Endes finden Sie eine Zeile ähnlich '<Directory Entry="/pfad/zu/medien/"'. Dies ist wichtig, da es die Ordnerstruktur für die AgentDVR-Installation ist, die je nach Installationstyp in verschiedenen Formen vorliegen kann.

Bearbeiten Sie als nächstes die Datei "objects.xml" und suchen Sie in der Nähe des unteren Endes eine Zeile ähnlich '<entry type="EXE" param1='. Bearbeiten Sie den Pfad, der eine Standard-Benachrichtigungs-BAT-Datei aufrufen sollte, und fügen Sie einen Pfad ein, der bash aufruft, um dann Ihr .sh-Skript auszuführen. Sie können den Pfad aus dem vorherigen Schritt als Modell verwenden, um zu wissen, was Sie einfügen müssen.

Danach können Sie Ihren Listener starten.

Gehen Sie nun zurück zum Servermenü und wählen Sie erneut "Backup/Wiederherstellung". Wählen Sie diesmal "Datei hochladen" und wählen Sie Ihre modifizierte "objects.xml"-Datei.

Das Dashboard sollte mit den Änderungen neu starten. Theoretisch sollten Sie nun eine Dummy-Kamera haben, die einen Alarm auslöst, um Ihr Reverse-Shell-Skript auszuführen, wenn ein Foto aufgenommen wird. Starten Sie Ihren Listener, klicken Sie mit der rechten Maustaste auf den Dummy-Kamera-Feed und wählen Sie "Foto aufnehmen".

Sie sollten nun eine Root-Shell haben.
