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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-97798-exploit — CVE-2026-97798 Windows Error Reporting — внедрение команд с повышением до SYSTEM | Kitploit
Инструменты/GitHubGitHub/g4sp4rcs/cve-2026-97798-exploit
Повышение привилегийАнализ уязвимостейЭксплуатацияПост-эксплуатацияRed TeamingРазработка Полезной Нагрузки
GitHubg4sp4rcs/cve-2026-97798-exploit

CVE-2026-97798-exploit

CVE-2026-97798 Windows Error Reporting — внедрение команд с повышением до SYSTEM

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

Популярное

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

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

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

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

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

CVE-2026-97798 — инъекция аргументов в Windows Error Reporting с повышением до SYSTEM

[!WARNING] Этот репозиторий предназначен для авторизованных исследований уязвимостей и контролируемой проверки в лабораторных условиях. Proof of concept безопасно завершается с ошибкой, если не удаётся однозначно определить ровно одну совместимую реализацию faultrep.dll!SpawnDataCollector.

CVE-2026-97798 — это локальная уязвимость повышения привилегий в пути Time Travel Debugging службы Windows Error Reporting (WER). Непривилегированный вызывающий процесс может сохранить контролируемый атакующим синтаксис командной строки при пересечении границы привилегий WER. Повышенный сборщик впоследствии объединяет эти входные данные в командную строку TTTracer.exe, не сохраняя границы аргументов. Поэтому внедрённые ключи -out и -launch интерпретируются записывающим устройством TTD как параметры записывающего устройства, что позволяет запустить выбранный атакующим исполняемый файл с повышенным токеном сборщика.

Входящий в комплект однофайловый PoC превращает этот примитив в интерактивную оболочку NT AUTHORITY\SYSTEM. Он был проверен как из учётной записи обычного пользователя, так и из учётной записи администратора со средним уровнем целостности, отфильтрованной UAC.

Интерактивная оболочка SYSTEM

Видео

Содержимое репозитория

ПутьОписание
src/CVE-2026-97798.cppПолный исходный код эксплойта в виде одного файла
bin/CVE-2026-97798.exeВоспроизводимая лабораторная сборка x64
build.ps1Детерминированный скрипт сборки LLVM-MinGW
assets/system-shell.pngЗафиксированное доказательство выполнения whoami из изолированной виртуальной машины

PDF-отчёты пока не включены; полная статья всё ещё редактируется.

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

Уязвимый поток затрагивает несколько компонентов:

low/medium-integrity process
  -> faultrep.dll!CElevatedDataCollection::ControlTimeTravelDebugging
  -> faultrep.dll!SpawnDataCollector
  -> Windows Error Reporting service (elevated collector)
  -> CDataCollection::ControlTimeTravelDebugging
  -> TtdControl::LaunchRecordingProcess
  -> TTTracer.exe / TTDRecord.dll command-line parser
  -> attacker-controlled -launch target

Запрос содержит значение Process, которое начинается с легитимного исполняемого файла, но добавляет дополнительные ключи TTD. Уязвимая реализация применяет слабый блоклист точных имён, а затем напрямую форматирует строку процесса в командную строку привилегированного рекордера. Поскольку значение процесса не сериализуется как один аргумент, его пробелы становятся разделителями аргументов при разборе результата TTTracer.

Концептуально внедрённая часть выглядит так:

Process=CVE-2026-97798-payload.exe
  -out ..\..\Users\Public\Documents\CVE97798\trace
  -launch ..\..\Users\Public\Documents\CVE97798\CVE-2026-97798-payload.exe
  --payload;

Относительные пути выбраны намеренно. WER также включает эти данные в имя пути .ttdconfig; абсолютный префикс диска вносит двоеточие и приводит к ошибке ERROR_INVALID_NAME. Путь в стиле обхода каталогов позволяет избежать этого конфликта парсера, при этом нормализуясь в контролируемый публичный каталог.

Это проблема инъекции аргументов (CWE-88), а не обычная инъекция команд оболочки. На уязвимой точке входа не требуется cmd.exe /c: сам TTTracer интерпретирует внедрённые ключи.

Дизайн однофайлового PoC

Для обычного использования требуется только CVE-2026-97798.exe. Один и тот же PE-образ повторно запускает себя в нескольких внутренних режимах:

  1. Он разбирает загруженную таблицу исключений PE64 и динамически разрешает faultrep.dll!SpawnDataCollector по уникальной функции, которая содержит опкод коллектора WER и инварианты протокола. RVA, зависящий от сборки, не встраивается.
  2. Он запускает свой встроенный консольный клиент и создаёт своё состояние доказательства.
  3. Он получает привилегированный коллектор WER и отправляет сформированный запрос TTD.
  4. TTTracer запускает тот же образ в режиме полезной нагрузки.
  5. Полезная нагрузка предоставляет реальный cmd.exe через именованные каналы, позволяя видимой консоли пользовательской сессии взаимодействовать с оболочкой, созданной в сессии 0.

Распространяемый артефакт остаётся одним EXE. Во время выполнения он размещает два псевдонима этого же образа: один для встроенной консоли и один для привилегированной полезной нагрузки. Псевдоним полезной нагрузки также используется как цель -onlaunch для TTTracer, поэтому записывающее устройство наблюдает за процессом, который оно фактически запускает, и завершается, когда эта короткая стадия полезной нагрузки заканчивается. PoC сбрасывает устаревшее состояние TTD перед каждым запуском и снова после успешной полезной нагрузки, предотвращая сбой следующего выполнения с HRESULT 0x80070032 из-за прерванного запуска.

Для стандартного пользователя путь привилегированного коллектора напрямую достигает SYSTEM. Для администратора, отфильтрованного UAC, WER сначала запускает полезную нагрузку со связанным высокопривилегированным токеном администратора — имя учётной записи остаётся неизменным, но TokenIsElevated=true. Затем PoC повторно входит в тот же образ как SYSTEM. Он сначала пытается напрямую создать процесс с токеном SYSTEM и использует кратковременную запись в планировщике задач как запасной вариант; резервная задача удаляется сразу после запуска.

Проверенная среда

КомпонентПроверенное значение
ОСWindows 11 24H2 x64, сборка 26100.9550
Уязвимая faultrep.dll10.0.26100.9549
Исправленная для сравненияfaultrep.dll 10.0.26100.9711
TTTracer / TTDRecord1.11.580.0
Проверка динамического резолвера9549: RVA 0x4CEB0; 9711: RVA 0x4E40C
SHA-256 PoCC7B8FAFB132D69E9BD5A398AE183107155129C7080A87D56EFE55572450B4147

Резолвер обходит таблицу исключений x64 и требует одну функцию с настройкой большого кадра коллектора, опкодом запроса 0xD0000002, размером сообщения 0x578, тайм-аутом ожидания 10000 и тремя ожидаемыми сопоставлениями ошибок ожидания/обслуживания. Он был проверен на обеих предоставленных сборках faultrep.dll и негативно протестирован на несвязанных PE-образах. Номер сборки или RVA не сохраняется. Если будущая сборка изменит эту реализацию настолько, что совпадение станет неоднозначным или неполным, PoC остановится до выполнения косвенного вызова.

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

Используйте одноразовый снимок уязвимой сборки. Из неэлевированного PowerShell или командной строки:

.\bin\CVE-2026-97798.exe

При успехе встроенная консоль выводит:

[CVE-2026-97798] Exploit shell token:
nt authority\system

Машиночитаемое доказательство записано ниже:

C:\Users\Public\Documents\CVE97798\system-proof.txt

Также можно протестировать резолвер на офлайн x64 DLL, не вызывая уязвимость:

.\bin\CVE-2026-97798.exe --resolve C:\path\to\faultrep.dll

Чтобы выполнить предварительную проверку установленной системной DLL, также не активируя уязвимый путь:

.\bin\CVE-2026-97798.exe --preflight

Успешная проверка отфильтрованного администратора дала:

cve=CVE-2026-97798
user=NT AUTHORITY\SYSTEM
is_system=true
is_elevated=true
payload_session=0
shell_session=0
spawn_error=0

Сборка

Установите x64-инструментарий LLVM-MinGW и поместите x86_64-w64-mingw32-clang++.exe в PATH или укажите его абсолютный путь явно:

.\build.ps1

# or
.\build.ps1 -Compiler C:\toolchains\llvm-mingw\bin\x86_64-w64-mingw32-clang++.exe
Скачать инструмент