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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2021-40444 — CVE-2021-40444 - Полностью боевой эксплойт RCE для Microsoft Office Word | Kitploit
Инструменты/GitHubGitHub/klezvirus/cve-2021-40444
Генерация полезной нагрузкиАнализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийАнализ вредоносных программКомандование и УправлениеОбучение и Образование
GitHubklezvirus/cve-2021-40444

CVE-2021-40444

CVE-2021-40444 - Полностью боевой эксплойт RCE для Microsoft Office Word

Репозиторий
832164222 лет назадПроверено Kitploit

Популярное

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

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

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

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

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

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

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

Обновление от 31.05.2022 - CVE-2022-30190 - Follina

Теперь генератор умеет создавать документы, необходимые для эксплуатации также атаки «Follina» (с использованием ms-msdt).

Предыстория

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

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

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

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

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

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

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

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

    HTML-файл

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

    CAB-файл

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

    • filename.inf должен стать ../filename.inf
    • filename.inf должно быть именно <12 символов>.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: Так как есть только 1 файл, должна быть только 1 CFDATA; не совсем уверен, почему это нужно установить в 2 Действительно, можно оставить 1
    • cbFile: Интересно, что если извлечение CAB завершается без ошибок, INF-файл будет помечен на удаление WORD, что портит эксплуатацию. Единственный способ предотвратить это — заставить WORD думать, что извлечение не удалось. Если значение cbFile определено как большее, чем сам CAB-файл, экстрактор достигнет EOF до того, как прочитает все байты, определённые в cbFile, вызывая ошибку извлечения.
    • [ОПЦИОНАЛЬНО] Похоже, это значение не проверяется MS Word. В любом случае, для корректного CAB значение csum должно быть пересчитано. К счастью, как отметил j00sean и согласно документации MS, это значение может быть 0

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

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

    Атака через DLL

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

    JScript, VBScript, Javaw, MSIexec, ...

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

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

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

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

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

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

    Этот метод был впервые раскрыт Эдуардо Брауном в 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 (j00sean)cab-orig-j00sanIEHTMLCAB + DLLДА
    Моя версия без DLLcab-uri-*WORDDOCXCAB + JS/VBSНЕТ1
    Атака без CAB Эдуардо Б. с RARcabless-rar-*WORDRARWSFДА
    Модифицированная атака j00sean + контрабанда HTMLcabless-smuggling-*IEHTMLJS/VBSДА2
    Атака Follinacabless-msdt-*WORDDOCX/RTFMSDT + PSДА3

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

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

    3Не совсем работает на всех версиях Windows/MS Word

    Парсер 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, эксплойт генерируется на основе расширения файла полезной нагрузки

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

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

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