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

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

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

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2026-97798-exploit — CVE-2026-97798 Windows 错误报告 - 命令注入至 SYSTEM 权限 | Kitploit
工具/GitHubGitHub/g4sp4rcs/cve-2026-97798-exploit
权限提升漏洞分析漏洞利用后渗透利用红队Payload 开发
GitHubg4sp4rcs/cve-2026-97798-exploit

CVE-2026-97798-exploit

CVE-2026-97798 Windows 错误报告 - 命令注入至 SYSTEM 权限

查看仓库
4257天前Kitploit 审核通过

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-97798 — Windows 错误报告参数注入至 SYSTEM

[!WARNING] 本仓库用于经授权的漏洞研究与受控实验室验证。当无法准确识别出唯一一个兼容的 faultrep.dll!SpawnDataCollector 实现时,该概念验证程序会安全失败(fail closed)。

CVE-2026-97798 是 Windows 错误报告(WER)时间旅行调试路径中的一个本地权限提升漏洞。非特权调用者可以跨越 WER 权限边界保留攻击者控制的命令行语法。提权后的收集器随后将该输入拼接进 TTTracer.exe 命令行,而未保留参数边界。因此,注入的 -out 和 -launch 开关会被 TTD 记录器解释为记录器选项,从而允许以收集器的提权令牌启动攻击者选定的可执行文件。

随附的单文件 PoC 将该原语转化为交互式 NT AUTHORITY\SYSTEM shell。该 PoC 已在标准用户账户以及中等完整性、经 UAC 过滤的管理员账户下完成验证。

交互式 SYSTEM shell

视频

仓库内容

路径描述
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),而非传统的 shell 命令注入。在易受攻击的接收点不需要 cmd.exe /c:TTTracer 自身会解释注入的开关。

单文件 PoC 设计

正常使用仅需要 CVE-2026-97798.exe。同一个 PE 映像会以多种内部模式重新进入自身:

  1. 它解析已加载的 PE64 异常表,并从包含 WER 收集器操作码和协议不变量的唯一函数中动态解析 faultrep.dll!SpawnDataCollector。不嵌入任何特定于构建的 RVA。
  2. 它启动其集成的控制台客户端并创建其证明状态。
  3. 它获取 WER 提权收集器并提交精心构造的 TTD 请求。
  4. TTTracer 以载荷模式启动同一映像。
  5. 载荷通过命名管道暴露一个真实的 cmd.exe,允许可见的用户会话控制台与在会话 0 中创建的 shell 进行交互。

分发的产物仍然是一个 EXE。在运行时,它会暂存该同一映像的两个别名:一个用于集成控制台,一个用于提权载荷。载荷别名还用作 TTTracer 的 -onlaunch 目标,因此记录器会观察它实际启动的进程,并在该短暂载荷阶段结束时退出。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
PoC SHA-256C7B8FAFB132D69E9BD5A398AE183107155129C7080A87D56EFE55572450B4147

解析器遍历 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

构建是静态的,并抑制了 PE 链接器时间戳,因此相同的源代码和工具链输入会产生相同的可执行文件哈希。

清理

首先关闭 PoC 控制台。在提升权限的实验室控制台中,如果 TTD 状态仍然处于活动状态:

Stop-Process -Name TTTracer,TTDInject -Force -ErrorAction SilentlyContinue
C:\Windows\System32\TTTracer.exe -cleanup
Remove-Item -Recurse -Force C:\Users\Public\Documents\CVE97798

还原一次性 VM 快照是首选的最终清理方式。

检测与修复

有用的遥测数据包括:来自 WER 的意外 TTTracer.exe 执行、包含重复或异常 -onlaunch、-out 或 -launch 开关的命令行,以及从用户可写目录启动的记录器子进程。应将 WER 活动、TTTracer 命令行、创建者 PID、令牌提升和文件哈希关联起来分析,而不是仅对 TTTracer 单独告警。

安装包含 faultrep.dll 版本 10.0.26100.9711 或更高替代更新的 Microsoft 更新。修正后的实现会在不受信任的数据到达记录器之前禁用旧版 TTD 请求路径。

参考资料

  • Microsoft Security Response Center — CVE-2026-97798
  • Microsoft Learn — Time Travel Debugging command-line utility
  • MITRE CWE-88 — Argument Injection
下载工具