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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2022-24481-analysis — Глубокий анализ ошибки type confusion в Windows CLFS (CVE-2022-24481) с объяснением первопричины, схемой эксплуатации, деталями kernel-гаджетов и рабочим PoC для локального повышения привилегий. | Kitploit
Инструменты/GitHubGitHub/uname1able/cve-2022-24481-analysis
Повышение привилегийАнализ уязвимостейЭксплуатацияОбратная инженерияЭксплуатация Бинарных Файлов
GitHubuname1able/cve-2022-24481-analysis

CVE-2022-24481-analysis

Глубокий анализ ошибки type confusion в Windows CLFS (CVE-2022-24481) с объяснением первопричины, схемой эксплуатации, деталями kernel-гаджетов и рабочим PoC для локального повышения привилегий.

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
Репозиторий
4 дней назадЕщё не проверено

CVE-2022-24481 Путаница типов

Путаница типов

Уязвимый файл

clfs.sys

Корневая причина

Поскольку логика проверки для rgContainers[0] не является строгой, после подделки rgContainers[0] структура ClientContext перекрывается со структурой ContainerContext. Если поддельные данные принимаются, после CloseHandle функция CClfsLogFcbPhysical::FlushMetadata восстанавливает данные ClientContext.

Метод эксплуатации

После подделки rgContainers[0] структура ClientContext перекрывается со структурой ContainerContext. Если поддельные данные принимаются, после CloseHandle функция CClfsLogFcbPhysical::FlushMetadata восстанавливает данные ClientContext. Из-за перекрытия структур этот процесс изменяет ContainerContext->pContainer на поддельные данные. Наконец, при вызове CClfsBaseFilePersisted::RemoveContainer инициируется косвенный вызов функции-члена, который выполняет определённый гаджет и приводит к повышению привилегий.

Ход выполнения PoC

1. Подготовка статического файла

createlog создаёт новый файл журнала.

Добавьте запись Container.

Создайте символическую ссылку X:\, указывающую на текущий каталог.

Очистите диапазон cbSymbolName_start -> cbSymbolName_end.

Установите cbSymbolName_start в X:\N.

Скопируйте данные из ContainerContext_start -> New_cbSymbolName_end в ClientContext.

Обновите rgContainers[0], чтобы он указывал на новое расположение ContainerContext_start.

Обновите новое значение ContainerContext->pContainer.

Пересчитайте контрольную сумму.

2. Подготовка на этапе выполнения

Найдите адрес гаджета в памяти ядра.

Постройте поддельную виртуальную таблицу.

Выполните оставшуюся настройку памяти.

3. Открытие поддельного файла журнала

CClfsLogFcbPhysical::Initialize

00000001C0002EDB хранит данные ClientContext.

После CloseHandle выполняется CClfsRequest::Cleanup->CClfsLogFcbPhysical::FlushMetadata.

Он копирует поддельные данные обратно в ClientContext. Поскольку ClientContext перекрывается с ContainerContext, ContainerContext->pContainer перезаписывается поддельными данными.

Затем CClfsBaseFilePersisted::RemoveContainer выполняет наш гаджет, что приводит к 16-байтовой записи по произвольному адресу.

Ссылки

https://zhuanlan.zhihu.com/p/645490730

https://github.com/fr4nkxixi/CVE-2022-24481-POC

https://securelist.com/windows-clfs-exploits-ransomware-cve-2022-24521/111580/

https://starmap.dbappsecurity.com.cn/blog/articles/2022/05/10/cve-2022-24481/

https://www.4awl.net/9646.html

Список изменений данных

Ключевые точки потока функций

win10_21H2_19044.1620

CClfsLogFcbPhysical::Initialize(0x??7c) — процедура инициализации при открытии файла

bp clfs!CClfsLogFcbPhysical::Initialize + 0x45F

Этот код сохраняет память ClientContext.

После CloseHandle выполняется CClfsRequest::Cleanup->CClfsLogFcbPhysical::FlushMetadata.

bp clfs!CClfsLogFcbPhysical::FlushMetadata + 0x46

Это восстанавливает данные ClientContext.

CClfsBaseFilePersisted::RemoveContainer

bp clfs!CClfsBaseFilePersisted::RemoveContainer + 0x10F

Используйте указатель поддельной виртуальной таблицы, чтобы достичь гаджета.

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

Гаджет

CClfsBaseFilePersisted::RemoveContainer

CLFS!ClfsEarlierLsn

nt!SeSetAccessStateGenericMapping

nt!SeSetAccessStateGenericMapping

movdqu xmmword ptr [rax+8], xmm0 записывает 16 байт по адресу [rax+8] (XMMWORD, 128 бит).

После последовательного выполнения результат заключается в записи 16-байтовых данных из poi(rdx) 0xFFFFFFFF в poi(poi(rcx+0x48)+0x8).

rcx — это местонахождение указателя виртуальной таблицы, и это место находится под нашим контролем.

Реализованный PoC

https://github.com/uname1able/CVE-2022-24481.git

Win10 PoC

winver

win10_21H2_19044.1620

bp clfs!CClfsBaseFilePersisted::RemoveContainer + 0x10F

Win11 PoC

winver

win11_21H2_22000.593

bp clfs!CClfsBaseFilePersisted::RemoveContainer + 0x183

Скачать инструмент