1. 漏洞原理

Print Nightmare 的核心原理是权限升级任意文件写入。它利用了 RpcAddPrinterDriver 这个 RPC(远程过程调用)函数中存在的逻辑缺陷

  • RpcAddPrinterDriverEx 函数:这是一个用于在服务器上安装打印机驱动的函数。通常情况下,只有拥有管理员权限的用户才能调用这个函数
  • 非特权用户的利用:漏洞的根源在于,攻击者发现可以通过一个普通用户的身份,调用这个函数,并让其加载一个恶意的 DLL 文件
  • 权限升级:当打印后台处理程序(spoolsv.exe)以 SYSTEM 权限运行,并加载这个恶意 DLL 文件时,恶意代码也会以 SYSTEM 权限执行,从而实现权限提升

简单来说,攻击者利用这个漏洞欺骗了 SYSTEM 权限的打印服务,让它去加载一个恶意的 DLL 文件,从而以最高权限运行恶意代码

2. 漏洞利用过程

一个典型的 Print Nightmare 漏洞利用过程可以分为以下几步:

  1. 准备恶意 DLL:攻击者首先需要编写一个恶意的 DLL 文件。这个 DLL 文件的核心功能是建立反向 Shell创建新的管理员账户或者执行任意系统命令
  2. 准备 SMB 共享:攻击者将这个恶意 DLL 文件放置在自己的机器上,并通过 SMB(Server Message Block)协议共享出来
  3. 发起 RPC 请求:攻击者以一个普通用户的身份,向目标机器的打印服务发起一个 RpcAddPrinterDriverEx RPC 请求
  4. 恶意 DLL 加载:在 RPC 请求中,攻击者指定要加载的驱动文件路径为自己的 SMB 共享路径。当打印服务收到这个请求后,它会以 SYSTEM 权限去连接攻击者的 SMB 共享,并加载恶意 DLL 文件
  5. 远程代码执行:一旦 DLL 文件被加载到 spoolsv.exe 进程中,其中的恶意代码就会被执行,从而在目标机器上获得 SYSTEM 权限
Copyright © 版权信息 all right reserved,powered by Gitbook该文件修订时间: 2025-09-25 03:12:57

results matching ""

    No results matching ""