
CVE-2024-22515 carga arbitraria de archivos y CVE-2024-22514 ejecución remota de código para AgentDVR 5.1.6.0 (Autenticado)
CVE-2024-22515 carga arbitraria de archivos y CVE-2024-22514 ejecución remota de código para AgentDVR 5.1.6.0 (autenticado)
(Es probable que las versiones anteriores estén afectadas)
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
Probado en 4.7.3.0 y 5.1.6.0. Las versiones intermedias y anteriores también probablemente estén afectadas. Probado en instalaciones para Windows x64, Linux x64 y Docker. Vale la pena señalar que la ruta de explotación para Windows varía ligeramente. En lugar de llamar a bash, puedes llamar directamente a un archivo exe, como "/AgentDVR/sounds/payload.exe".
AgentDVR versión 5.1.6.0 contiene dos vulnerabilidades: una vulnerabilidad de carga arbitraria de archivos y una vulnerabilidad de ejecución arbitraria de archivos. Ambas se encadenan para lograr la ejecución de cualquier archivo arbitrario subido, incluidos payloads maliciosos. Esto resulta en una posible RCE para individuos con credenciales válidas de un servidor AgentDVR.
Debido a la naturaleza del programa, que utiliza principalmente WebRTC, no hice un script de PoC. Sin embargo, el proceso manual es de muy baja complejidad. Si alguien hace un script de PoC y me contacta, lo enlazaré aquí.
Primero, después de iniciar sesión en el panel, añade un nuevo dispositivo. Crea solo un dispositivo "Dummy" con la configuración predeterminada.

En el dispositivo, añade una acción para activar una tarea si se toma una foto. Luego, añade una tarea y selecciona "Execute Command" y elige cualquier "File" en el menú desplegable para el comando a activar.

Ahora, prepara tu payload. Puedes modificar y usar el archivo "payload.sh" de este repositorio. Es un script de reverse shell muy sencillo.
Cuando esté listo, vuelve al menú del servidor y selecciona "File Upload". Selecciona "Audio" y comienza a buscar el archivo, pero cambia el selector de archivos desplegable de "*.wav" a "All Files".


Luego, vuelve al menú del servidor y selecciona "Backup/Restore". Selecciona "Download". Recibirás un archivo zip que contiene varios archivos .XML.

Extrae el contenido y abre el archivo "config.xml". Cerca de la parte inferior encontrarás una línea similar a '<Directory Entry="/path/to/media/"'. Esto es importante, ya que es la estructura de carpetas de la instalación de AgentDVR, que puede presentarse en un par de formas diferentes, según el tipo de instalación.

A continuación, edita el archivo objects.xml y busca una línea cerca de la parte inferior similar a '<entry type="EXE" param1='. Edita la ruta, que debería estar llamando a un archivo bat de alerta predeterminado, e inserta una ruta que llame a bash para luego ejecutar tu script .sh. Puedes usar como modelo la ruta del paso anterior para saber qué insertar.



Después de esto, puedes iniciar tu listener.

Ahora, vuelve al menú del servidor y selecciona "Backup/Restore" de nuevo. Esta vez, elige subir un archivo y selecciona tu archivo "objects.xml" modificado.

El panel debería reiniciarse con los cambios. Ahora, en teoría, deberías tener una cámara dummy con una alerta para activar tu script de reverse shell cuando se tome una foto. Con tu listener iniciado, haz clic derecho en la transmisión de la cámara dummy y selecciona "Take Photo".

Ahora deberías tener una shell root.
