Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Фишинговые кампании — классическое начало многих хакерских атак. Они направлены на доставку вредоносного файла потенциальной жертве и обычно ведутся по электронной почте. Чаще всего оболочкой для боевой нагрузки служит офисный документ, при открытии которого выполняются нестандартные действия. Мы рассмотрим, как выполнить произвольный код с помощью модифицированного файла OpenDocument Text.
Большинство фишинговых приемов направлены на эксплуатацию уязвимостей в Microsoft Office, так как это самый популярный офисный пакет. Однако сейчас многие фирмы переходят на LibreOffice и OpenOffice, в том числе ошибочно считая их неуязвимыми.
С ростом популярности этих программных пакетов они тоже стали привлекать внимание хакеров и независимых исследователей. Просто, в отличие от набивших оскомину багов MS Office, информации об уязвимостях в опенсорсных пакетах пока накопилось не так уж много. Целью моего исследования будет не столько рассмотреть уязвимость какой-то конкретной версии программы, сколько разобрать формат ODT и особенности его обработки.
Найденная уязвимость позволяет выполнить несанкционированный доступ к файловой системе, используя атаку обхода пути
(path traversal attack). Это одна из самых часто встречающихся уязвимостей и канонический тип атаки. В данном случае злонамеренно модифицированный файл ODT может загрузить за пределами родительского каталога скрипт на Python, который получит доступ к файловой системе и выполнит любые указанные действия с правами текущего пользователя.
Первым данную уязвимость обнаружил старший пентестер немецкой фирмы Cure53 Алекс Инфур (Alex Infuhr). Он предал свою находку огласке, и LibreOffice пропатчили, однако все версии до 6.0.7 (крайне популярные сейчас) по-прежнему уязвимы.
Немного размытой остается ситуация с Apache OpenOffice. Отдельного патча нет, и текущая версия 4.1.6 уязвима до сих пор. Сторонняя компания ACROS Security включила в свой агент 0patch заплатку для данной уязвимости, но только в версиях OpenOffice и LibreOffice для Windows. Более подробно см. на их сайте.
Данный агент распознает и блокирует известные уязвимости, препятствуя их эксплуатации. Для его запуска надо будет пройти несложную регистрацию. Во время работы агента при запуске уязвимого файла всплывает небольшое уведомление, а при наведении курсора на гиперссылку он заблокирует запуск неоригинального скрипта. Я связался с разработчиками агента, пытаясь пролить свет на работу данной функции. Их ответ приведен на скриншоте.
Ответ разработчиков агента
Интересно, что некоторые антивирусы также ищут признаки эксплоита по всему документу, включая его текстовые поля и игнорируя формат. Например, «Антивирус Касперского» ругается даже на эту статью, если попытаться открыть ее черновик в OpenOffice как .odt или в MS Office как .docx.
Ложноположительный детект
Разберем суть уязвимости. Во время инсталляции LibreOffice в Windows также устанавливается интерпретатор Python 3. Он находится по известному адресу C:Program FilesLibreOfficeprogrampython-core-3.5.5bin
. Офисный пакет может исполнить Python-скрипт, если указать ссылку на него внутри документа и правильно сослаться на него.
Документы .odt основаны на XML (как и .docx), поэтому их внутреннюю структуру легко изучать и модифицировать. Здесь открывается большой простор для разных вариантов атак, но в общем случае нам необходимо создать в документе какую-либо задачу, которая запустит скрипт на Python.
Вот тут и наступает самое интересное. Если подменить путь к исполняемому коду и он будет соответствовать правилам исполнения, то LibreOffice выполнит его, не проверяя путь к скрипту. Например, мы можем выйти за рамки рабочей директории, и ничего нам за это не будет… а вот жертве — будет!
Все описанное выше справедливо и для OpenOffice, просто в нем используется Python 2, поэтому местоположение некоторых скриптов будет другое. Это нужно учесть, если ты захочешь написать универсальный файл, эксплуатирующий уязвимость в обоих офисных пакетах.
Источник: xakep.ru