В современных версиях Microsoft Office документы по умолчанию сохраняются в формате, основанном на Office Open XML, однако Microsoft не во всем следует открытому стандарту. Вариант Microsoft часто называют MOX, Microsoft Open XML. Он содержит некоторые вольности, создающие угрозы безопасности. Сегодня мы подробно разберем одну из них — так и не закрытую на момент написания статьи.
Почти сразу после публикации чернового варианта OOXML началась битва за его стандартизацию. Вот краткая хронология версий.
В 2016 году появились дополнения к пятой версии: ISO/IEC 29500-1:2016 и ISO/IEC 29500-4:2016. Работа над стандартом продолжается, а Microsoft допускает все больше проприетарных особенностей его реализации в новых версиях Office. Хуже того: компания не признает старые уязвимости, оставляя их в новых продуктах. Описываемая в статье дыра появилась в Microsoft Office 2013 и сохранилась вплоть до Office 2019.
ECMA-376 включает в себя три различные спецификации для каждого из трех основных типов документов Office — WordprocessingML для текстовых документов, SpreadsheetML для электронных таблиц и PresentationML для презентаций. Мы будем использовать WordprocessingML.
Я возьму на себя смелость указать на два критичных с точки зрения безопасности недостатка MOX, унаследованных от OOXML:
По сути, MOX и OOXML — это XML в ZIP. Это отличный hacker-friendly-формат, поскольку найти и заменить свойства объектов в нем исключительно просто даже без использования HEX-редакторов и прочих специфических утилит. Достаточно встроенной в Windows поддержки ZIP и «Блокнота». Весь код легко читается глазами и правится, как текст. Ни сверки контрольных сумм, ни каких-то иных специфических проверок при этом не выполняется. Word лишь проверяет целостность документа, которая не нарушается при подменах с соблюдением правил синтаксиса.
Если в документ вставлен объект, загружаемый с внешнего ресурса (например, ссылка на видео), то в соответствующей секции создается легко читаемая (и так же просто изменяемая) гиперссылка. Это прямая дорога к фишингу или запуску троянов в один клик.
Статья предназначена для профессиональных пентестеров и сотрудников служб информационной безопасности. Ни автор, ни редакция не несут ответственности за любой возможный вред, причиненный с применением приведенной информации.
В базе уязвимостей MITRE есть много однотипных записей вида: «Microsoft Office… do not properly validate record information during parsing of (Excel spreadsheets / Word documents, Power Point presentations)… which allows remote attackers to execute arbitrary code or cause a denial of service (memory corruption) via a crafted file)». Проще говоря, проблемы парсинга XML в MS Office неисчерпаемы, как атом.
Я уже рассматривал одну из них в статье «Pass the Hash через Open XML». Сейчас мы реализуем другую атаку, также слегка поковыряв недра файла Word.
Начиная с Office 2013 в OOXML стал доступен класс WebVideoProperty. Он появляется в разметке при вставке в документ онлайн-видео и описывает параметры его воспроизведения через набор атрибутов.
Нас будет интересовать атрибут embeddedHtml
. Он нужен для вставки внешних объектов и содержит ссылку на них (например, на видеоролик YouTube). Из-за того что этот параметр «знает», из какого закоулка интернета тянуть картинку видеозаписи, его нельзя опустить при парсинге.
Давай выполним простую атаку подмены и пощупаем уязвимость своими руками. Запускаем Word (требуется версия 2013 или выше, так как нам нужна полная поддержка ISO/IEC 29500 Strict) и идем в меню «Вставка».
Материалы из последних выпусков можно покупать отдельно только через два месяца после публикации. Чтобы продолжить чтение, необходимо купить подписку.
Подписка позволит тебе в течение указанного срока читать ВСЕ платные материалы сайта. Мы принимаем оплату банковскими картами, электронными деньгами и переводами со счетов мобильных операторов. Подробнее о подписке
1 год7190 р. Экономия 1400 рублей! |
1 месяц720 р. 25-30 статей в месяц |
Уже подписан?
Читайте также
Последние новости