Motorola focus 73 обзор

Обновлено: 19.09.2024


В сегодняшнем обзоре мы рассмотрим многочисленные уязвимости в IP-камере Motorola Focus. Помимо дефолтных и слабых паролей, там еще много интересного. К тому же ее прошивка используется и другими производителями, что открывает новые пути исследования. Также разберем DoS-уязвимость и хакерское использование функции procedure analyse() в MySQL.

DoS в функции procedure analyse() из MySQL

CVSSv2

BRIEF

Дата релиза: 29 мая 2016 года
Автор: @OsandaMalith
CVE: 2015-4870

Автор эксплоита нашел возможность вызвать DoS в MySQL версий до 5.5.45 включительно. В функции procedure analyse() падение происходит при обработке подзапроса.

Пример вызова функции:

Соответственно, PoC будет таким:

Падение приложения MySQL

Падение приложения MySQL

Другой пример атаки — это запуск полезной нагрузки, которая была сохранена в файл и подана на вход mysql.exe (он показан на скриншоте ниже).

Перенаправление атаки на mysql.exe

Перенаправление атаки на mysql.exe

Лог вывода Event Viewer после падения mysqld

Лог вывода Event Viewer после падения mysqld

Если же мы подконнектимся к процессу с помощью IDA, то сможем увидеть, что падение происходит в структуре TABLE_LIST из-за поля, которое не было выделено.

Представление функции обработки таблиц в IDA

Представление функции обработки таблиц в IDA

EXPLOIT

В качестве тестового стенда автор использовал Damn Vulnerable Web Application (DVWA).

Если атакующий найдет веб-приложение, уязвимое к SQL-инъекции, то он сможет с легкостью провести DoS-атаку, MySQL-сервер перестанет отвечать и все используемые базы данных тоже перестанут быть доступными.

В Windows достаточно простого запроса для вызова падения и, скорее всего, понадобится ручная перезагрузка:

Пример атакующего запроса на тестовое приложение с MySQL

Пример атакующего запроса на тестовое приложение с MySQL

На *nix-системах mysqld автоматически восстанавливается, но если мы пошлем многочисленные GET-запросы с такой полезной нагрузкой, то база данных все равно упадет.

Пример такой атаки с помощью bash-скрипта, который использует cURL для GET-запросов:

Помимо небольшого bash-скрипта, автор написал версию эксплоита на Python:

Пример работы эксплоита для DoS-уязвимости в MySQL

Пример работы эксплоита для DoS-уязвимости в MySQL

Исходный код и оригинальную статью автора ты можешь найти в его блоге. Еще автор записал небольшое демонстрационное видео.

Также функция procedure analyse() может помочь при проведении атаки через SQL-инъекцию. Это позволяет легче определить число колонок. Результат выполнения представлен на скриншоте, где количество выводов равняется количеству колонок.

Определение количества колонок с помощью procedure analyse()

Определение количества колонок с помощью procedure analyse()

В примерах атаки, где место для инъекции находится после limit , ты можешь использовать procedure analyse() вместе с функциями updatexml и extractvalue в качестве подзапросов.

Пример инъекции после AFTER с использованием updatexml в качестве подзапроса Пример инъекции после AFTER с использованием extractvalue в качестве подзапроса

TARGETS

SOLUTION

Взлом IP-камеры Motorola Focus 73

CVSSv2

BRIEF

Дата релиза: 2 февраля 2016 года
Автор: неизвестен
CVE: N/A

IP-камера Motorola Focus 73 содержит в себе немало сюрпризов. Для начала — она произведена не Motorola. Это наружный вариант камер семейства Blink и Motorola IP, произведенных фирмой Binatone. В семейство также входят камеры для слежения за детьми. Эти продукты совместимы с сервисом Hubble, который построен на Amazon EC2, — он позволяет владельцам управлять камерами удаленно, а также получать уведомления о движении. Все это делается через мобильное приложение.

Приложение Hubble доступно во всех популярных магазинах. Для исследования была выбрана версия для Android из магазина Google Play. Приложение связывается с камерами по протоколу STUN.

В ходе первоначальной настройки приложение попросит подключить камеру к сети через кабель или нажать клавишу pair на самом устройстве. Нажатие переключит камеру в режим хоста и создаст открытую сеть Wi-Fi. Далее приложение будет искать сети с названиями типа CameraHD-(MAC адрес) и предлагать пользователю подключиться к ним.

Пример поиска сетей устройств через мобильное приложение

Пример поиска сетей устройств через мобильное приложение

В публичном доступе прошивки этого устройства нет, но, как нередко бывает, обновление доступно через некий приватный URL. Найти его не составило особого труда.

Автор обнаружил, что прошивка является упакованной файловой системой Linux с названием skyeye , созданной компанией Cvision. Внутри есть разделы /bin , /etc и /lib , но это не полноценный Linux, а лишь путь, который монтируется камерой в /mnt/skyeye . Некоторые основные бинарные файлы, такие как BusyBox, сюда не включены. Они принадлежат Nuvoton OS, которая не имеет механизма обновления и содержит в себе бинарные файлы десятилетней давности.

Также внутри были найдены ссылки на скрипты и файлы конфигурации для других моделей камер, что наводит на мысли об универсальности прошивки. Так что, по всей видимости, описанные дальше уязвимости можно будет найти и в них.

EXPLOIT

Вредоносное обновление прошивки

Обход директорий и инъекция команд

В описанном выше скрипте haserlupgrade также была найдена старая добрая уязвимость типа «обход директорий». Скрипт получает на вход упакованный образ с прошивкой и перемещает в спроектированное место вне веб-директории. При этом он даже не проверяет передаваемое имя, так что, к примеру, имена new_firmware.tgz и ../../../mnt/skyeye/etc/cron/root будут считаться правильными в обоих случаях. Но при проведении тестов автору не удалось оставить созданный файл в системе — он удалялся после окончания работы скрипта (видимо, так настроен процесс обновления). Хотя при этом можно переписать любой другой неудаляемый файл в системе. К примеру, удаление /bin/busybox сделает из камеры «кирпич».

После анализа в скрипте было найдено обращение к бинарному файлу с именем fwupgrade , который автор сразу же загрузил в IDA. Этот исполняемый файл использует имя файла прошивки и сохраняет в /mnt/cache/new_fwupgrade . Когда fwupgrade получает прерывания SIGUSR1 , он читает 128 байт из файла new_fwupgrade , использует их в имени прошивки и затем вызывает shell-скрипт для обновления ПО. После завершения скрипт удаляет файл.

Так как считывается 128 байт и проверок нет, можно сделать очень большое имя файла, чтобы процесс обновления упал. В результате загруженный файл не будет удален.

Дизассемблерный код функции из fwupgrade

Дизассемблерный код функции из fwupgrade

Чтобы превысить 128 байт, автор сделал имя файла с хождением туда и обратно по директориям и с переходом в cron в конце. Оттуда задания считываются и выполняются каждую минуту.

В качестве задания — открытие шелла каждую минуту:

Использование уязвимости типа «обход директорий» в Motorola Focus

Использование уязвимости типа «обход директорий» в Motorola Focus

После получения шелла были вытащены хеши из файла /etc/shadow , а после перебора с помощью John the ripper обнаружилось, что пароль root — 123456 . Еще был найден пароль от Wi-Fi, сохраненный открытым текстом в /tmp/wpa.conf , а также заводские настройки сетей Cvision (они используются для настройки после сброса памяти устройства).

Помимо этого, на устройстве запущено несколько интересных опенсорсных утилит, которые, если верить сайту Nuvoton, делают разработку более гибкой. Сервис на 80-м порту похож на MJPG, но имеет дополнительные функции для удаленного управления.

Список процессов в Motorola Focus

Список процессов в Motorola Focus

Если запустить команду ps , то мы увидим большое количество потоков для исполняемого файла msloader — он является чем-то вроде функционального центра устройства. И судя по тому, что cron запускает задания каждую минуту, такое количество потоков вызывает утечку памяти. Разработчики решили проблемы довольно бесхитростно: еще одной задачей в cron, которая перезапускает устройство ранним утром. Как пишет автор, он не хочет приводить это время, чтобы злоумышленники тоже спали :).

Интересные логи можно скачать через веб-интерфейс, но сначала они шифруются с использованием исполняемого файла /bin/crypto . Этот файл использует Linux crypto API с зашитым ключом AES: Cvision123459876 . Это означает, что любой может сдампить логи с устройства, используя скрипт host:8080/cgi-bin/logdownload.cgi

Смотрим за подсматривающими

Пример перехваченных файлов после появления движения на Motorola Focus

Пример перехваченных файлов после появления движения на Motorola Focus

Автор записал демонстрационное видео, которое опубликовал в своем блоге, где ты также можешь ознакомиться с оригинальной статьей и узнать об этих камерах более подробно.

Читайте также: