
CVE-2024-22515 téléchargement arbitraire de fichier et CVE-2024-22514 exécution de code à distance pour AgentDVR 5.1.6.0 (Authentifié)
CVE-2024-22515 téléversement arbitraire de fichier et CVE-2024-22514 exécution de code à distance pour AgentDVR 5.1.6.0 (Authentifié)
(Les versions antérieures sont probablement affectées)
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
Testé sur 4.7.3.0 et 5.1.6.0. Les versions intermédiaires et antérieures sont également probablement impactées. Testé sur des installations Windows x64, Linux x64 et Docker. Il est à noter que le chemin d’exploitation pour Windows varie légèrement. Au lieu d’appeler bash, vous pouvez simplement appeler directement un fichier exe, par exemple "/AgentDVR/sounds/payload.exe".
La version 5.1.6.0 d’AgentDVR contient deux vulnérabilités : une vulnérabilité de téléversement arbitraire de fichier, et une vulnérabilité d’exécution arbitraire de fichier. Celles-ci s’enchaînent pour permettre l’exécution de tout fichier arbitraire téléversé, y compris des charges utiles malveillantes. Cela permet une prise de contrôle à distance (RCE) possible par des personnes disposant d’identifiants valides pour un serveur AgentDVR.
En raison de la nature du programme, qui utilise principalement WebRTC, je n’ai pas créé de script PoC. Cependant, le processus manuel est de très faible complexité. Si quelqu’un crée un script PoC et me contacte, je le lierai ici.
Tout d’abord, après vous être connecté au tableau de bord, ajoutez un nouveau périphérique. Créez simplement un périphérique « Dummy » avec les paramètres par défaut.

Sur le périphérique, ajoutez une action pour déclencher une tâche si une photo est prise. Ensuite, ajoutez une tâche et sélectionnez « Execute Command » et choisissez un « File » dans la liste déroulante pour la commande à déclencher.

Maintenant, préparez votre charge utile. Vous pouvez modifier et utiliser le fichier « payload.sh » dans ce dépôt. C’est un script de reverse shell très simple.
Une fois qu’elle est prête, retournez dans le menu du serveur et sélectionnez « File Upload ». Choisissez « Audio », et commencez à naviguer pour le fichier, mais changez le sélecteur de fichiers de « *.wav » à « All Files ».


Ensuite, retournez dans le menu du serveur et sélectionnez « Backup/Restore ». Choisissez « Download ». Vous recevrez un fichier zip contenant plusieurs fichiers .XML différents.

Extrayez le contenu et ouvrez le fichier « config.xml ». Près du bas, vous trouverez une ligne similaire à '<Directory Entry="/path/to/media/"'. C’est important car c’est la structure de dossiers de l’installation d’AgentDVR, qui peut se présenter sous différentes formes selon le type d’installation.

Ensuite, modifiez le fichier objects.xml et trouvez une ligne près du bas similaire à '<entry type="EXE" param1='. Modifiez le chemin, qui doit appeler un fichier bat d’alerte par défaut, et insérez un chemin appelant bash pour ensuite appeler votre script .sh. Vous pouvez vous baser sur le chemin de l’étape précédente pour savoir quoi insérer.

Après cela, vous pouvez lancer votre écouteur.

Maintenant, retournez dans le menu du serveur et sélectionnez à nouveau « Backup/Restore ». Cette fois, choisissez de téléverser un fichier, et sélectionnez votre fichier « objects.xml » modifié.

Le tableau de bord devrait redémarrer avec les modifications. Maintenant, en théorie, vous devriez avoir une caméra factice avec une alerte pour déclencher votre script de reverse shell lorsqu’une photo est prise. Avec votre écouteur lancé, faites un clic droit sur le flux de la caméra factice, et sélectionnez « Take Photo ».

Vous devriez maintenant avoir un shell root.
