提权专题

10、土豆提权

一、课程目标

本节课将深入讲解“土豆”(Potato)家族提权工具的原理与使用。这类提权技术主要针对拥有特殊权限(如 SeImpersonatePrivilege)的服务账户(如IIS、SQL Server),通过中间人攻击或协议滥用获取SYSTEM权限。通过本课的学习,你将能够:

  1. 理解Windows服务账户的权限模型
  2. 掌握SeImpersonatePrivilege特权的核心作用
  3. 熟悉各类土豆工具(JuicyPotato, PrintSpoofer等)的适用场景
  4. 学会检测和利用此类漏洞进行提权

二、名词解释表

名词 解释
SeImpersonatePrivilege 身份模拟特权,允许进程模拟连接到它的客户端的身份
SeAssignPrimaryToken 分配主令牌特权,功能类似,常用于提权
NTLM Relay NTLM中继攻击,将认证请求转发给其他服务
COM/DCOM 组件对象模型/分布式COM,Windows组件通信机制
CLSID 类标识符,唯一标识一个COM对象
RPC 远程过程调用,土豆提权常利用RPC机制触发认证
Named Pipe 命名管道,用于进程间通信,PrintSpoofer的核心

三、技术原理

3.1 核心特权:SeImpersonatePrivilege

在Windows中,运行Web服务(IIS)或数据库服务(SQL Server)的账户通常是 NETWORK SERVICELOCAL SERVICE。这些账户虽然不是管理员,但为了处理用户请求,系统默认赋予了它们 SeImpersonatePrivilege 特权。

原理:拥有该特权的进程可以“模拟”(Impersonate)任何连接到它的客户端的身份。如果攻击者能诱骗SYSTEM权限的进程(如DCOM服务、打印服务)连接到攻击者控制的进程,攻击者就能窃取SYSTEM的令牌,从而升级权限。

3.2 攻击逻辑

  1. 监听:攻击者在本地开启一个恶意的RPC/COM监听器或命名管道。
  2. 诱骗:强制一个以SYSTEM权限运行的系统组件(如BITS服务、Print Spooler)向攻击者的监听器发起认证请求。
  3. 模拟:攻击者利用 SeImpersonatePrivilege 截获认证,生成SYSTEM权限的访问令牌。
  4. 执行:使用窃取的令牌创建一个新进程(如cmd.exe),该进程即拥有SYSTEM权限。

四、常见土豆工具演变

土豆家族随着微软的修补不断进化:

4.1 RottenPotato / HotPotato

  • 适用:较老的系统(Windows 7/2008)。
  • 原理:利用NTLM反射攻击,通过欺骗NTLM认证过程获取SYSTEM令牌。

4.2 JuicyPotato

  • 适用:Windows 10 v1809之前的版本,Server 2016/2019部分版本。
  • 原理:利用DCOM激活机制。攻击者指定一个CLSID,诱使DCOM服务以SYSTEM权限连接本地RPC端口。
  • 限制:微软在后续版本中修补了DCOM的某些行为,导致在Win10 1809+失效。

4.3 PrintSpoofer (PipePotato)

  • 适用:Windows 10/Server 2016/2019/2022 (较新版本)。
  • 原理:利用打印机后台服务(Print Spooler)和命名管道。它强制SYSTEM进程连接到攻击者创建的命名管道。
  • 特点:非常稳定,是目前最常用的提权工具之一。

4.4 GodPotato / SweetPotato

  • 适用:全版本,包括最新的Windows Server 2022。
  • 原理:SweetPotato集成了多种技术;GodPotato利用了DCOM的新利用路径,绕过了之前的限制。

五、漏洞利用实战

5.1 权限检查

首先检查当前用户是否拥有关键特权。

whoami /priv

如果输出中包含以下行,则极大概率可以提权:

SeImpersonatePrivilege        Impersionate a client after authentication    Enabled

5.2 使用JuicyPotato (针对旧版本)

需要找到一个可用的CLSID(通常工具内置列表,或自行查找)。

# 语法:JuicyPotato.exe -l <监听端口> -p <程序> -a <参数> -t *
JuicyPotato.exe -l 1337 -p c:\windows\system32\cmd.exe -a "/c whoami" -t *

5.3 使用PrintSpoofer (针对新版本)

PrintSpoofer的使用更为简单,不需要寻找CLSID。

# -i 表示交互式shell,-c 指定命令
PrintSpoofer.exe -i -c cmd.exe

执行成功后,你会直接获得一个SYSTEM权限的CMD窗口。

5.4 使用GodPotato (针对最新版本)

# 语法类似
GodPotato.exe -cmd "cmd.exe /c whoami"

六、安全建议

  1. 限制服务账号权限:如果可能,移除服务账号的 SeImpersonatePrivilege 特权(但这可能会破坏服务功能)。
  2. 更新系统:微软不断在修补COM和RPC的利用路径,保持系统更新可增加攻击难度。
  3. 使用虚拟账户:IIS等服务可以使用虚拟账户运行,限制其对系统的访问范围。