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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2025-47981 — PowerShell-скрипт для оценки, который проверяет системы Windows на наличие CVE-2025-47981 (переполнение кучи SPNEGO NEGOEX) путем проверки версии ядра, ключа реестра PKU2U и открытых портов SPNEGO. Предоставляет шаги по устранению уязвимости и рекомендации по обнаружению. | Kitploit
Инструменты/GitHubGitHub/hkenzokimura/cve-2025-47981
Сканеры уязвимостейАудит конфигурацииСетевая безопасностьОбучение и ОбразованиеРеагирование на Инциденты
GitHubhkenzokimura/cve-2025-47981

CVE-2025-47981

PowerShell-скрипт для оценки, который проверяет системы Windows на наличие CVE-2025-47981 (переполнение кучи SPNEGO NEGOEX) путем проверки версии ядра, ключа реестра PKU2U и открытых портов SPNEGO. Предоставляет шаги по устранению уязвимости и рекомендации по обнаружению.

Репозиторий
261 месяц назадЕщё не проверено

Популярное

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

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

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

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

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

🔵 CVE-2025-47981 — Скрипт оценки уязвимости Windows SPNEGO NEGOEX

Тип: Оценка уязвимости — Обнаружение / Проверка соответствия CVE: CVE-2025-47981 CVSS: 9.8 Critical (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) CWE: CWE-122 — Переполнение буфера в куче Псевдоним: "SPNEGO Nightmare" / "Windows Authentication Wormable RCE" Патч: KB5062560 | July 2025 Patch Tuesday

Скрипт PowerShell для оценки, который проверяет, уязвима ли система Windows к CVE-2025-47981 — переполнение буфера в куче в механизме SPNEGO Extended Negotiation (NEGOEX), которое позволяет выполнить RCE без аутентификации. Не выполняет эксплойт — только оценивает подверженность и состояние патча.

Разработано: HKK


$ cat ./vulnerability_summary.txt

CVE-2025-47981 — это переполнение буфера в куче в протоколе NEGOEX — внутреннем слое расширения механизма аутентификации SPNEGO в Windows. Уязвимость позволяет неаутентифицированным злоумышленникам выполнять произвольный удаленный код, потенциально получая полный контроль над системой.

Аналитики уже описали CVE как имеющую "несчастливые характеристики превращения в значительную проблему", с потенциалом wormable — способностью автоматически распространяться между уязвимыми системами без взаимодействия с пользователем.

Уязвимость затрагивает Windows 10 (начиная с версии 1607) и все Windows Server с 2008 R2 до Server 2025, включая варианты Server Core — более 33 различных конфигураций Windows и Server подтверждены как уязвимые на архитектурах x64, x86 и ARM64.


$ cat ./technical_background.txt

Что такое SPNEGO и почему он в ядре?

SPNEGO (Simple and Protected GSSAPI Negotiation Mechanism) — это слой рукопожатия аутентификации, который Windows использует перед каждой аутентифицированной сессией. Приложениям часто требуется аутентификация без фиксации протокола — Windows может использовать Kerberos в одном окружении, NTLM в другом или расширенный механизм аутентификации в иной модели доверия. SPNEGO — это механизм согласования, который решает, какой протокол аутентификации использовать.

Клиент                           Сервер
  │                                │
  │──── SPNEGO Negotiation ────────►│
  │     MechTypeList:               │
  │     [Kerberos, NTLM, NEGOEX]    │
  │                                │
  │◄─── Selected Mechanism ─────────│
  │                                │
  │──── Auth Exchange ─────────────►│  ← переполнение здесь в NEGOEX

NEGOEX — это механизм расширения внутри SPNEGO — позволяет согласовывать аутентификации PKU2U (peer-to-peer) и другие настраиваемые механизмы. Уязвимость находится в функции ntoskrnl!SpnegoHandleExtended, которая обрабатывает структуры SPNEGO_TOKEN увеличенного размера, отправляемые несколькими фрагментами, вызывая переполнение в куче ядра.

Почему PKU2U усиливает риск?

Риск повышен в системах, где групповая политика "Network security: Allow PKU2U authentication requests to this computer to use online identities" включена. Эта конфигурация, включенная по умолчанию во многих развертываниях Windows, расширяет поверхность атаки NEGOEX, позволяя одноранговую аутентификацию, которая активирует уязвимый путь кода NEGOEX на конечных точках, которые в противном случае не подвергали бы его воздействию.


$ cat ./architecture.txt

┌─────────────────────────────────────────────────────────────────────────┐
│            CVE-2025-47981 ASSESSMENT SCRIPT — FLOW                      │
│                                                                         │
│  ┌──────────────────────────────────────────────────────────────────┐  │
│  │  CHECK 1: Windows Version                                        │  │
│  │  Get-CimInstance Win32_OperatingSystem → .Version               │  │
│  │  Контекст: определяет точную сборку для корреляции с патчем     │  │
│  └──────────────────────────────────────────────────────────────────┘  │
│                              │                                          │
│  ┌──────────────────────────────────────────────────────────────────┐  │
│  │  CHECK 2: ntoskrnl.exe Version                                   │  │
│  │  Get-Item C:\Windows\System32\ntoskrnl.exe                      │  │
│  │  Сравнение: установлено < 10.0.14393.8246 → УЯЗВИМО             │  │
│  │  Сравнение: установлено ≥ 10.0.14393.8246 → KB5062560 применен  │  │
│  └──────────────────────────────────────────────────────────────────┘  │
│                              │                                          │
│  ┌──────────────────────────────────────────────────────────────────┐  │
│  │  CHECK 3: PKU2U Registry Key                                     │  │
│  │  HKLM:\SYSTEM\...\Lsa\pku2u\AllowOnlineID                      │  │
│  │  1 → PKU2U включен → расширенная поверхность атаки             │  │
│  │  0 → PKU2U отключен → вектор PKU2U смягчен                     │  │
│  │  Не существует → конфигурация по умолчанию (оценить через GPO) │  │
│  └──────────────────────────────────────────────────────────────────┘  │
│                              │                                          │
│  ┌──────────────────────────────────────────────────────────────────┐  │
│  │  CHECK 4: Открытые порты SPNEGO                                  │  │
│  │  Get-NetTCPConnection → 135, 445, 5985, 3389, 80, 443, 25      │  │
│  │  Каждый открытый порт = вектор доставки эксплойта               │  │
│  └──────────────────────────────────────────────────────────────────┘  │
│                              │                                          │
│                    Format-Table -AutoSize                               │
│                    (читаемый вывод для отчета по пентесту)             │
└─────────────────────────────────────────────────────────────────────────┘

$ cat ./design_decisions.md

1. Проверка версии через ntoskrnl.exe

$kernelPath = [System.IO.Path]::Combine($env:SystemRoot, "System32\ntoskrnl.exe")
$requiredVersion = "10.0.14393.8246"

$installedVersion = (Get-Item $kernelPath).VersionInfo.FileVersion

if ([version]$installedVersion -lt [version]$requiredVersion) {
    "Уязвим - Патч отсутствует ($missingKB)"
}

Почему ntoskrnl.exe, а не Get-HotFix?

Get-HotFix перечисляет установленные KB, но имеет известные ограничения:

  • Не обнаруживает KB, примененные через DISM или Windows Update в тихом режиме
  • Может показывать удаленные KB как присутствующие в некоторых сценариях
  • Не отражает реальное состояние исполняемого бинарного файла

Проверка версии ntoskrnl.exe напрямую более надежна — файл получает пропатченную версию только когда KB был фактически применен и система перезагружена. Система с KB, ожидающим перезагрузки, все еще будет иметь старую версию ядра в памяти.

Приведение [version]: PowerShell по умолчанию сравнивает строки лексикографически — "10.0.14393.8246" -lt "10.0.14393.800" было бы $false (неправильно). Приведение к [version] гарантирует корректное числовое сравнение по октетам.

[System.IO.Path]::Combine($env:SystemRoot, ...): использует SystemRoot вместо жестко заданного C:\Windows — переносимо для систем с Windows, установленной на других дисках.


2. Эталонная версия 10.0.14393.8246

10.0.14393.xxxx  →  Windows 10 version 1607 / Windows Server 2016
         │
         └─ 8246 = сборка с примененным KB5062560

Почему именно эта сборка?

Windows Server 2016 (базовая сборка 14393) — одна из наиболее критичных сред для патчинга — широко используется в DC, файловых серверах и внутренних корпоративных сервисах. Версия 8246 соответствует сборке ядра после применения KB5062560 (июль 2025).

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