
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 можно напрямую вызвать exe-файл, например /AgentDVR/sounds/payload.exe.
AgentDVR версии 5.1.6.0 содержит две уязвимости: произвольную загрузку файлов и произвольное выполнение файлов. Вместе они позволяют выполнить любой загруженный произвольный файл, включая вредоносные полезные нагрузки. Это приводит к возможному удаленному выполнению кода для пользователей с действующими учетными данными сервера AgentDVR.
Из-за особенностей программы, которая в значительной степени использует WebRTC, я не создавал PoC-скрипт. Однако ручной процесс очень низкой сложности. Если кто-то создаст PoC-скрипт и свяжется со мной, я размещу ссылку здесь.
Сначала после входа в панель управления добавьте новое устройство. Создайте просто устройство «Dummy» с настройками по умолчанию.

На устройстве добавьте действие для запуска задачи при создании фотографии. Затем добавьте задачу, выберите «Execute Command» и в раскрывающемся списке выберите любой «File» для команды, которую нужно запустить.

Теперь подготовьте полезную нагрузку. Вы можете изменить и использовать файл payload.sh из этого репозитория. Это очень простой скрипт обратной оболочки.
Когда она готова, вернитесь в меню сервера и выберите «File Upload». Выберите «Audio» и начните поиск файла, но переключите раскрывающийся список выбора файлов с *.wav на All Files.


Затем вернитесь в меню сервера и выберите «Backup/Restore». Выберите «Download». Вы получите zip-файл, содержащий несколько различных .XML-файлов.

Извлеките содержимое и откройте config.xml. В нижней части вы найдете строку, похожую на '<Directory Entry="/path/to/media/"'. Это важно, так как это структура папок установки AgentDVR, которая может иметь несколько разных форм в зависимости от типа установки.

Затем отредактируйте файл objects.xml и найдите в нижней части строку, похожую на '<entry type="EXE" param1='. Измените путь, который должен вызывать стандартный bat-файл оповещения, и вставьте путь, вызывающий bash для запуска вашего .sh-скрипта. Вы можете взять за образец путь из предыдущего шага, чтобы понять, что вставлять.

После этого можете запустить свой слушатель (listener).

Теперь снова вернитесь в меню сервера и выберите «Backup/Restore». На этот раз выберите загрузку файла и укажите измененный файл objects.xml.

Панель управления должна перезапуститься с изменениями. Теперь в теории у вас должна быть фиктивная камера с оповещением, запускающим скрипт обратной оболочки при создании фотографии. При запущенном слушателе щелкните правой кнопкой мыши по видеопотоку фиктивной камеры и выберите «Take Photo».

Теперь у вас должна быть root-оболочка.
