提权专题
10、土豆提权
一、课程目标
本节课将深入讲解“土豆”(Potato)家族提权工具的原理与使用。这类提权技术主要针对拥有特殊权限(如 SeImpersonatePrivilege)的服务账户(如IIS、SQL Server),通过中间人攻击或协议滥用获取SYSTEM权限。通过本课的学习,你将能够:
- 理解Windows服务账户的权限模型
- 掌握
SeImpersonatePrivilege特权的核心作用 - 熟悉各类土豆工具(JuicyPotato, PrintSpoofer等)的适用场景
- 学会检测和利用此类漏洞进行提权
二、名词解释表
| 名词 | 解释 |
|---|---|
| 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 SERVICE 或 LOCAL SERVICE。这些账户虽然不是管理员,但为了处理用户请求,系统默认赋予了它们 SeImpersonatePrivilege 特权。
原理:拥有该特权的进程可以“模拟”(Impersonate)任何连接到它的客户端的身份。如果攻击者能诱骗SYSTEM权限的进程(如DCOM服务、打印服务)连接到攻击者控制的进程,攻击者就能窃取SYSTEM的令牌,从而升级权限。
3.2 攻击逻辑
- 监听:攻击者在本地开启一个恶意的RPC/COM监听器或命名管道。
- 诱骗:强制一个以SYSTEM权限运行的系统组件(如BITS服务、Print Spooler)向攻击者的监听器发起认证请求。
- 模拟:攻击者利用
SeImpersonatePrivilege截获认证,生成SYSTEM权限的访问令牌。 - 执行:使用窃取的令牌创建一个新进程(如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"
六、安全建议
- 限制服务账号权限:如果可能,移除服务账号的
SeImpersonatePrivilege特权(但这可能会破坏服务功能)。 - 更新系统:微软不断在修补COM和RPC的利用路径,保持系统更新可增加攻击难度。
- 使用虚拟账户:IIS等服务可以使用虚拟账户运行,限制其对系统的访问范围。