Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

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

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

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
PrintSpoofer-ReflectiveDLL — Windows Print Spooler 权限提升漏洞(CVE-2019-1040/CVE-2019-1019)已被实现为用于渗透测试的反射 DLL。 | Kitploit
工具/GitHubGitHub/jonyfilc/printspoofer-reflectivedll
权限提升漏洞利用横向移动后渗透利用渗透测试红队Payload 开发
GitHubjonyfilc/printspoofer-reflectivedll

PrintSpoofer-ReflectiveDLL

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Windows Print Spooler 权限提升漏洞(CVE-2019-1040/CVE-2019-1019)已被实现为用于渗透测试的反射 DLL。

查看仓库
23526天前尚未审核

PrintSpoofer 详情

License Platform C++

PrintSpoofer 是一款通过利用 Windows 打印后台处理程序服务(CVE-2019-1040 / CVE-2019-1019)中的漏洞实现本地权限提升的工具。本项目以 Reflective DLL 格式实现了 PrintSpoofer 漏洞利用,使其适用于 Cobalt Strike 等渗透测试框架。

目录

  • 概述
  • 工作原理
  • 技术细节
  • 要求
  • 构建
  • 使用方法
  • 项目结构
  • 安全免责声明
  • 参考资料

概述

PrintSpoofer 利用 Windows 打印后台处理程序服务中的一个漏洞,该漏洞允许低权限用户获取 SYSTEM 级权限。该漏洞利用滥用了打印后台处理程序服务处理命名管道的方式。

功能特性

  • Reflective DLL 格式:可完全在内存中加载,无需接触磁盘
  • 支持 SE_IMPERSONATE_NAME 特权
  • 使用 RPC 协议与打印后台处理程序服务进行通信
  • 使用 命名管道 机制执行令牌模拟

工作原理

PrintSpoofer 通过执行以下步骤来工作:

1. 权限检查

该漏洞利用首先检查当前令牌是否具有 SE_IMPERSONATE_NAME 特权。这是模拟其他用户令牌所必需的。

2. 创建命名管道

使用随机 UUID 创建一个命名管道。管道路径为:

root@kitploit:~
\\.\pipe\<UUID>\pipe\spoolss

3. 等待管道连接

在已创建的命名管道上等待异步连接。创建一个事件,并将管道准备好以接受传入连接。

4. 触发打印后台处理程序连接

在单独的线程中,向打印后台处理程序服务发起 RPC 调用。通过调用 RpcRemoteFindFirstPrinterChangeNotificationEx,该服务会尝试连接到我们创建的管道。

5. 令牌模拟

当打印后台处理程序服务(以 SYSTEM 身份运行)连接到命名管道时,该漏洞利用会使用 ImpersonateNamedPipeClient 模拟服务的令牌,从而获得 SYSTEM 权限。

6. 特权操作

获得 SYSTEM 令牌后,即可执行高权限操作。

技术细节

打印后台处理程序漏洞

Windows 打印后台处理程序服务通过命名管道处理打印机通知。由于该服务没有正确验证管道连接,攻击者可以强制其连接到恶意管道,进而模拟 SYSTEM 令牌。

RPC 通信

本项目使用 MS-RPRN(打印系统远程协议)与打印后台处理程序服务进行通信。该协议通过 IDL(接口定义语言)文件定义,并支持 RPC 调用。

Reflective DLL 注入

Reflective DLL 的行为与标准 DLL 不同:

  • 可直接加载到内存中,无需接触磁盘
  • 无需 LoadLibrary API
  • 手动解析并加载 PE(可移植可执行文件)格式

要求

构建要求

  • Visual Studio 2022(C++ 桌面开发工作负载)
  • Windows 10/11

运行要求

  • Windows 10/11
  • 打印后台处理程序服务正在运行
  • 具备 SE_IMPERSONATE_NAME 特权(默认大多数标准用户都拥有)
  • Cobalt Strike 或类似框架(可选)

构建

使用 Visual Studio 构建

  1. 在 Visual Studio 中打开 PrintSpoofer.sln 文件。

  2. 选择你的解决方案平台和配置:

    • 平台:x64 或 Win32(取决于目标架构)
    • 配置:Release(生产环境)或 Debug(开发环境)
  3. 通过 生成解决方案(Ctrl+Shift+B)构建解决方案。

  4. 编译后的 DLL 将位于:

    root@kitploit:~
    PrintSpoofer\x64\Release\PrintSpoofer.dll   (for x64)
    PrintSpoofer\Win32\Release\PrintSpoofer.dll (for x86)
    

构建选项

本项目使用以下预处理器定义:

  • REFLECTIVE_DLL_EXPORTS:启用 Reflective DLL 导出
  • REFLECTIVEDLLINJECTION_CUSTOM_DLLMAIN:使用自定义 DllMain
  • REFLECTIVEDLLINJECTION_VIA_LOADREMOTELIBRARYR:启用 LoadRemoteLibraryR(在 Release 模式下)

使用方法

与 Cobalt Strike 配合使用

PrintSpoofer 可与 Cobalt Strike 的 elevate 命令一起使用:

root@kitploit:~
elevate PrintSpoofer LISTENER_NAME

其中:

  • PrintSpoofer:elevate 模块名称
  • LISTENER_NAME:将接收提权 shell 的监听器

手动使用

可以使用 Reflective DLL 注入技术手动加载该 DLL。

预期输出

成功执行漏洞利用后,将显示以下内容:

root@kitploit:~
[+] Found privilege: SeImpersonatePrivilege
[+] Named pipe listening...
[+] ImpersonateNamedPipeClient OK
[+] Exploit successfully, enjoy your shell

文件说明

dllmain.cpp

  • DLL 入口点(DllMain)
  • 控制漏洞利用逻辑
  • 处理 Reflective DLL 特有功能

PrintSpoofer.cpp

  • CheckAndEnablePrivilege:检查并启用令牌特权
  • GenerateRandomPipeName:使用随机 UUID 生成管道名称
  • CreateSpoolNamedPipe:创建命名管道并配置安全性
  • ConnectSpoolNamedPipe:为异步连接准备管道
  • TriggerNamedPipeConnection:创建线程以触发打印后台处理程序连接
  • TriggerNamedPipeConnectionThread:执行 RPC 调用
  • GetSystem:执行令牌模拟

ms-rprn.idl

  • Microsoft MS-RPRN 协议的 IDL 定义
  • 由 MIDL 编译器处理以生成 RPC 存根

ReflectiveLoader.cpp

  • 为 Reflective DLL 注入实现 PE 解析和内存加载

免责声明

本工具仅供教育目的和授权渗透测试使用。

参考资料

  • https://www.itm4n.fr/printspoofer-abusing-impersonate-privileges/
  • https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation

许可证

本项目基于 MIT 许可证授权。更多信息,请参阅 LICENSE 文件。

下载工具