Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2021-40444 — Генератор вредоносных DOCX, использующий CVE-2021-40444 (Microsoft Office Word RCE) с загрузкой DLL на основе CAB и цепочками атак RAR/WSF без CAB для тестирования на проникновение. | Kitploit
Инструменты/GitHubGitHub/tiagob0b/cve-2021-40444
Генерация полезной нагрузкиЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеГенерация ШеллкодаЭксплуатация Бинарных Файлов
GitHubtiagob0b/cve-2021-40444

CVE-2021-40444

Генератор вредоносных DOCX, использующий CVE-2021-40444 (Microsoft Office Word RCE) с загрузкой DLL на основе CAB и цепочками атак RAR/WSF без CAB для тестирования на проникновение.

Репозиторий
54 лет назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Полностью вооружённый CVE-2021-40444

Вредоносный генератор docx для эксплуатации CVE-2021-40444 (удаленное выполнение кода в Microsoft Office Word), работает с произвольными DLL-файлами.

Предыстория

Хотя в интернете уже есть много PoC, я решил попробовать вооружить эту уязвимость, так как найденные мной материалы не содержали ценной информации, которую стоило бы распространять, учитывая также, что Microsoft уже выпустила патч для этой уязвимости.

На данный момент единственными ценными ресурсами для создания полностью рабочего генератора я считаю:

  • Блог Ret2Pwn
  • Твит j00sean

Вышеуказанные ресурсы описывают многие требования, необходимые для создания полной цепочки. Чтобы не повторять слишком много ненужной информации, я просто резюмирую relevant детали.

Цепочка эксплуатации

  1. Открывается Docx
  2. Связь, хранящаяся в document.xml.rels, указывает на вредоносный HTML
  3. Запускается предпросмотр IE для открытия HTML-ссылки
  4. JScript внутри HTML содержит объект, указывающий на CAB-файл, и iframe, указывающий на INF-файл с префиксом директивы ".cpl:"
  5. CAB-файл открывается, INF-файл сохраняется в каталог %TEMP%\Low
  6. Из-за уязвимости Path traversal (ZipSlip) в CAB-файле можно сохранить INF в %TEMP%
  7. Затем INF-файл открывается с директивой ".cpl:", что вызывает side-loading INF-файла через rundll32 (если это DLL)

Упущенные требования

Существует довольно много упущенных требований для работы этой эксплуатации, из-за чего даже хорошие PoC, например этот от lockedbyte, не работали должным образом.

Возможно, никто явно не «выпускал» их, чтобы избежать более широкой эксплуатации уязвимости. Но теперь она заплатчена, поэтому разглашение деталей не должно вызывать больших проблем.

HTML-файл

Согласно этому твиту от Will Dormann, HTML должен быть размером не менее 4096 байт, чтобы вызвать «Предпросмотр» в MS Word.

CAB-файл

CAB-файл должен быть пропатчен на уровне байтов, чтобы избежать ошибок извлечения и добиться ZipSlip:

  • filename.inf должен стать ../filename.inf
  • filename.inf должно быть ровно <12-char>.inf На самом деле нет, важнее изменить coffCabStart
  • CFFOLDER.typeCompress должен быть 0 (без сжатия)
  • CFFOLDER.coffCabStart должен быть увеличен на 3 (из-за добавленного '../')
  • CFFOLDER.cCfData должен быть 2
  • CFFILE.cbFile должен быть больше, чем весь CFHEADER.cbCabinet
  • CFDATA.csum должен быть пересчитан (или обнулен) [НЕОБЯЗАТЕЛЬНО]

Причин для этих ограничений много, и я не потратил достаточно времени, чтобы глубоко понять их все, но давайте рассмотрим самые важные:

  • TypeCompress: Если CAB сжат, трюк с открытием его внутри объекта для запуска записи INF не сработает Неверно, мне удалось добиться того же результата с образцом, сжатым MSZIP
  • CoffCabStart: CoffCabStart задает абсолютную позицию первой структуры CFDATA; так как мы добавили '../', нам нужно увеличить это значение на 3, чтобы указать на файл (это скорее догадка)
  • cCfData: Так как файл только один, у нас должна быть только одна CFDATA; я не совсем уверен, почему это нужно устанавливать в 2 Действительно, можно оставить 1
  • cbFile: Интересно, что если извлечение CAB завершается без ошибок, INF-файл будет помечен на удаление WORD, что разрушает эксплуатацию. Единственный способ предотвратить это — заставить WORD считать, что извлечение не удалось. Если значение cbFile задано больше, чем сам CAB-файл, экстрактор достигнет EOF до того, как прочитает все байты, указанные в cbFile, что вызовет ошибку извлечения.
  • [НЕОБЯЗАТЕЛЬНО] Похоже, что это значение не проверяется MS Word. В любом случае, для корректного CAB значение csum должно быть пересчитано. К счастью, как отметил j00sean и согласно документации Microsoft, это значение может быть 0

ПРИМЕЧАНИЕ1: Defender теперь обнаруживает, содержит ли CAB-файл PE, используя значение _IMAGE_DOS_HEADER.e_magic в качестве сигнатуры, что потенциально предотвращает встраивание PE-файлов в CAB. Можно ли обойти эту сигнатуру? Я не уверен, но, как уже отмечалось, это заплаченная уязвимость, поэтому я не планирую тратить на это много времени. Любопытный читатель может развить эту тему дальше.

ПРИМЕЧАНИЕ2: Патч Microsoft блокирует произвольные URI-схемы, по-видимому, используя подход чёрного списка (это всего лишь предположение)

DLL-атака

Основная цепочка атак, связанная с CVE-2021-40444, — это DLL-атака, загружаемая через URI-схему .cpl. Чтобы её использовать, злоумышленнику нужно создать специально crafted DLL. Если хотите протестировать, попробуйте мой скрипт evildll-gen.

JScript, VBScript, Javaw, MSIexec, ...

Как отметил Max Maluin, можно взаимодействовать с различными типами файлов, используя IE и связанные с расширениями файлов URI. Хотя это может быть хорошим способом эксплуатации IE, у него есть ограничения.

Действительно, следует отметить, что метод, используемый в эксплуатации для загрузки файлов, основан на обновлениях элементов управления ActiveX и не может использоваться для загрузки произвольных файлов. Согласно документации Microsoft, тег codebase может указывать только на несколько типов файлов: OCX, INF и CAB.

Даже если мы можем напрямую загрузить OCX или INF-файл, мы всё равно не можем быть уверены, что файл будет загружен в нужное место в системе. С помощью CAB-эксплойта можно переместить .inf-файл в известный путь, используя path traversal, но в любом другом случае файл будет сохранён в случайном каталоге, что делает его практически невозможным для ссылки.

На сегодняшний день я не нашёл способа объединить загрузку и выполнение БЕЗ CAB-файла.

Примечание: Говоря только об IE, HTML-смаглинг мог бы быть возможным сценарием для эксплуатации уязвимости.

Атака без CAB с использованием гибридного RAR-файла

Эта техника была впервые раскрыта Eduardo Braun в Twitter и подробно объяснена в этой статье.

Обратите внимание, что при использовании этой техники цепочка атак немного отличается. Эта атака требует, чтобы пользователь загрузил специально созданный RAR-файл, полученный путем объединения валидного WSF-скрипта и валидного RAR-файла. После открытия RAR будет содержать DOCX со ссылкой на HTML, который, в свою очередь, попытается загрузить RAR-файл как WSF-скрипт.

Вкратце:

  1. Загружается специально созданный RAR-файл (скорее всего, в папку Загрузки)
  2. DOCX извлекается и открывается
  3. Связь, хранящаяся в document.xml.rels, указывает на вредоносный HTML
  4. Запускается предпросмотр IE для открытия HTML-ссылки
  5. JScript внутри HTML содержит скрипт/iframe, указывающий на RAR-файл с префиксом URI-схемы ".wsf:"
  6. Поскольку RAR был спроектирован так, чтобы одновременно быть валидным RAR и валидным WSF-скриптом, скрипт выполняется

Какие эксплойты PoC реализованы в инструменте

Утилита генератора в настоящее время может воспроизводить следующие атаки:

АтакаHTML-шаблоныЦельМетод доставкиМетод выполненияРаботает
Оригинальная версия атакиcab-orig-*WORDDOCXCAB + DLLДА
Атака только через IE от j00seancab-orig-j00sanIEHTMLCAB + DLLДА
Моя версия без DLLcab-uri-*WORDDOCXCAB + JS/VBSНЕТ1
Атака «CABless» от Eduardo B. с RARcabless-rar-*WORDRARWSFДА
Модифицированная атака j00sean + HTML-смаглингcabless-smuggling-*IEHTMLJS/VBSДА2

1CAB не загружается должным образом в некоторых средах

2Пользователю нужно нажать «Сохранить», чтобы загрузить файл в IE

Парсер CAB-файлов

Утилита cab_parser.py может использоваться для просмотра заголовков файла эксплойта, но не считайте её полноценным парсером. Это очень быстрый и грязный просмотрщик заголовков CAB, который я разработал, чтобы понять, что происходит.

Установка

Генератор разработан для работы в Windows, так как использует утилиту makecab. Перед использованием убедитесь, что установлены необходимые зависимости:

  • С Virtualenv
root@kitploit:~
git clone https://github.com/klezVirus/CVE-2021-40444
cd CVE-2021-40444
pip install virtualenv
python -m virtualenv venv
venv\Scripts\activate.bat 
pip install -r requirements
  • Без Virtualenv
root@kitploit:~
git clone https://github.com/klezVirus/CVE-2021-40444
cd CVE-2021-40444
pip install -r requirements

Использование

Генератор тривиален в использовании, и хотя он был протестирован с различными полезными нагрузками и версиями Windows, он не является безотказным. Я сталкиваюсь с разным поведением на разных сборках Windows. Как только у меня будет больше деталей для обсуждения, я опубликую их здесь.

root@kitploit:~
usage: generator.py [-h] -P PAYLOAD -u URL [-o OUTPUT] [--host] [-c COPY_TO] [-nc] [-t]

[%] CVE-2021-40444 - MS Office Word RCE Exploit [%]

optional arguments:
  -h, --help            show this help message and exit
  -P PAYLOAD, --payload PAYLOAD
                        DLL payload to use for the exploit
  -u URL, --url URL     Server URL for malicious references (CAB->INF)
  -o OUTPUT, --output OUTPUT
                        Output files basename (no extension)
  --host                If set, will host the payload after creation
  -c COPY_TO, --copy-to COPY_TO
                        Copy payload to an alternate path
  -nc, --no-cab         Use the CAB-less version of the exploit
  -t, --test            Open IExplorer to test the final HTML file

Пример

  • Создать оригинальный эксплойт и протестировать его локально
root@kitploit:~
python generator.py -u http://127.0.0.1 -P test\calc.dll --host 

Примечание: порт выбирается на основе URL, а эксплойт создается в зависимости от расширения файла полезной нагрузки

  • Создать CABless эксплойт с RAR и протестировать его локально через IE
root@kitploit:~
python generator.py -u http://127.0.0.1 -P test\job-jscript.wsf --no-cab --host -t 
  • Создать CABless эксплойт (только IE) с HTML-смаглингом и протестировать его локально через IE
root@kitploit:~
python generator.py -u http://127.0.0.1 -P test\calc.js --no-cab --host -t 

Благодарности

  • RET2_pwn за отличный блог
  • j00sean за хорошие подсказки
  • lockedbyte за первый приличный PoC
  • Max_Mal за подсказку об альтернативных URI-схемах
  • wdormann за подсказку об ограничениях размера HTML-файла
  • Edu_Braun_0day за крутую версию эксплойта без CAB
Скачать инструмент