Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2025-47981 — PowerShell 评估脚本,通过验证内核版本、PKU2U 注册表项和暴露的 SPNEGO 端口,检查 Windows 系统是否存在 CVE-2025-47981(SPNEGO NEGOEX 堆溢出)漏洞。提供修复步骤和检测指南。 | Kitploit
工具/GitHubGitHub/hkenzokimura/cve-2025-47981
漏洞扫描器配置审计网络安全学习与教育事件响应
GitHubhkenzokimura/cve-2025-47981

CVE-2025-47981

PowerShell 评估脚本,通过验证内核版本、PKU2U 注册表项和暴露的 SPNEGO 端口,检查 Windows 系统是否存在 CVE-2025-47981(SPNEGO NEGOEX 堆溢出)漏洞。提供修复步骤和检测指南。

查看仓库
261个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

🔵 CVE-2025-47981 — Script de Avaliação de Vulnerabilidade SPNEGO NEGOEX do Windows

Tipo: Avaliação de Vulnerabilidade — Verificação de Detecção / Conformidade CVE: CVE-2025-47981 CVSS: 9.8 Crítico (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) CWE: CWE-122 — Estouro de Buffer Baseado em Heap Alias: "Pesadelo SPNEGO" / "RCE Wormable de Autenticação do Windows" Patch: KB5062560 | Patch Tuesday de Julho de 2025

Script PowerShell de avaliação que verifica se um sistema Windows está vulnerável ao CVE-2025-47981 — estouro de buffer baseado em heap no mecanismo SPNEGO Extended Negotiation (NEGOEX) que permite RCE sem autenticação. Não executa exploit — apenas avalia exposição e estado do patch.

Desenvolvido por: HKK


$ cat ./vulnerability_summary.txt

CVE-2025-47981 é um estouro de buffer baseado em heap no protocolo NEGOEX — a camada de extensão interna do mecanismo de autenticação SPNEGO do Windows. A vulnerabilidade permite que atacantes não autenticados executem código remoto arbitrário, potencialmente obtendo controle total do sistema.

Analistas já descreveram a CVE como tendo "as características infelizes de se tornar um problema significativo", com potencial wormable — capaz de se propagar automaticamente entre sistemas vulneráveis sem interação do usuário.

A vulnerabilidade afeta Windows 10 (versão 1607 em diante) e todos os Windows Server de 2008 R2 até Server 2025, incluindo variantes Server Core — mais de 33 configurações distintas de Windows e Server confirmadas vulneráveis em arquiteturas x64, x86 e ARM64.


$ cat ./technical_background.txt

O que é SPNEGO e por que está no kernel?

SPNEGO (Simple and Protected GSSAPI Negotiation Mechanism) é a camada de handshake de autenticação que o Windows usa antes de cada sessão autenticada. Aplicações frequentemente precisam de autenticação sem fixar um protocolo — o Windows pode usar Kerberos em um ambiente, NTLM em outro, ou um mecanismo de autenticação estendido em um modelo de confiança diferente. SPNEGO é o mecanismo de negociação que decide qual protocolo de autenticação usar.

Cliente                          Servidor
  │                                │
  │──── SPNEGO Negotiation ────────►│
  │     MechTypeList:               │
  │     [Kerberos, NTLM, NEGOEX]    │
  │                                │
  │◄─── Selected Mechanism ─────────│
  │                                │
  │──── Auth Exchange ─────────────►│  ← overflow aqui no NEGOEX

NEGOEX é o mecanismo de extensão dentro do SPNEGO — permite que autenticações PKU2U (peer-to-peer) e outros mecanismos customizados sejam negociados. A vulnerabilidade está na função ntoskrnl!SpnegoHandleExtended, que processa estruturas SPNEGO_TOKEN oversized enviadas em múltiplos fragmentos, causando overflow no heap do kernel.

Por que PKU2U amplifica o risco?

O risco é elevado em sistemas onde a Group Policy "Network security: Allow PKU2U authentication requests to this computer to use online identities" está habilitada. Essa configuração, habilitada por padrão em muitos deployments do Windows, amplia a superfície de ataque do NEGOEX ao permitir autenticação peer-to-peer que ativa o código path vulnerável do NEGOEX em endpoints que de outra forma não o exporiam.


$ cat ./architecture.txt

┌─────────────────────────────────────────────────────────────────────────┐
│            CVE-2025-47981 ASSESSMENT SCRIPT — FLOW                      │
│                                                                         │
│  ┌──────────────────────────────────────────────────────────────────┐  │
│  │  CHECK 1: Windows Version                                        │  │
│  │  Get-CimInstance Win32_OperatingSystem → .Version               │  │
│  │  Contexto: identifica o build exato para correlação com patch   │  │
│  └──────────────────────────────────────────────────────────────────┘  │
│                              │                                          │
│  ┌──────────────────────────────────────────────────────────────────┐  │
│  │  CHECK 2: ntoskrnl.exe Version                                   │  │
│  │  Get-Item C:\Windows\System32\ntoskrnl.exe                      │  │
│  │  Compare: installed < 10.0.14393.8246 → VULNERÁVEL              │  │
│  │  Compare: installed ≥ 10.0.14393.8246 → KB5062560 aplicado      │  │
│  └──────────────────────────────────────────────────────────────────┘  │
│                              │                                          │
│  ┌──────────────────────────────────────────────────────────────────┐  │
│  │  CHECK 3: PKU2U Registry Key                                     │  │
│  │  HKLM:\SYSTEM\...\Lsa\pku2u\AllowOnlineID                      │  │
│  │  1 → PKU2U habilitado → superfície de ataque ampliada          │  │
│  │  0 → PKU2U desabilitado → vetor PKU2U mitigado                 │  │
│  │  Não existe → configuração padrão (avaliar via GPO)            │  │
│  └──────────────────────────────────────────────────────────────────┘  │
│                              │                                          │
│  ┌──────────────────────────────────────────────────────────────────┐  │
│  │  CHECK 4: Portas SPNEGO Expostas                                 │  │
│  │  Get-NetTCPConnection → 135, 445, 5985, 3389, 80, 443, 25      │  │
│  │  Cada porta aberta = um vetor de entrega do exploit             │  │
│  └──────────────────────────────────────────────────────────────────┘  │
│                              │                                          │
│                    Format-Table -AutoSize                               │
│                    (output legível para relatório de pentest)           │
└─────────────────────────────────────────────────────────────────────────┘

$ cat ./design_decisions.md

1. Verificação de Versão via 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) {
    "Vulnerável - Patch ausente ($missingKB)"
}

Por que ntoskrnl.exe e não Get-HotFix?

Get-HotFix lista KBs instalados, mas tem limitações conhecidas:

  • Não detecta KBs aplicados via DISM ou Windows Update em modo silencioso
  • Pode mostrar KBs desinstalados como presentes em alguns cenários
  • Não reflete o estado real do binário em execução

Verificar a versão do ntoskrnl.exe diretamente é mais confiável — o arquivo só recebe a versão patchada quando o KB foi efetivamente aplicado e o sistema reiniciado. Um sistema com KB pendente de reboot ainda terá a versão antiga do kernel em memória.

[version] cast: PowerShell compara strings lexicograficamente por padrão — "10.0.14393.8246" -lt "10.0.14393.800" seria $false (errado). O cast para [version] garante comparação numérica correta por octeto.

[System.IO.Path]::Combine($env:SystemRoot, ...): usa SystemRoot em vez de C:\Windows hardcoded — portável para sistemas com Windows instalado em drives diferentes.


2. Versão de Referência 10.0.14393.8246

10.0.14393.xxxx  →  Windows 10 version 1607 / Windows Server 2016
         │
         └─ 8246 = build com KB5062560 aplicado

Por que esse build específico?

Windows Server 2016 (build base 14393) é um dos ambientes mais críticos para patch — amplamente usado em DCs, file servers e serviços internos corporativos. A versão 8246 corresponde à build do kernel após a aplicação do KB5062560 (Julho 2025).

下载工具