# SeImpersonatePrivilege提权

如果一个账户被授予 **SeImpersonatePrivilege** 特权，那么该账户可以模仿任何我们能获得引用或者句柄的令牌。我们可以通过命令**whoami /priv** 或者 **whoami /all** 来查看当前账户是否拥有该特权。通常，本地服务帐号以及域服务帐号开启该特权，例如 IIS 的默认服务账号、SQL Server 的服务账号，以及域中被一些被设置了 SPN 的服务帐号。

我们之前通过上传了 aspx 的 webshell 在 Web02 上以 IIS 服务帐号的身份获得了代码执行，我们可以在 PRIVILEGES INFORMATION 这一块看到 SeImpersonatePrivilege 特权是开启的。

[![image.png](https://raven-medicine.com/uploads/images/gallery/2023-03/scaled-1680-/TYPE5UPPgZt27EHs-image.png)](https://raven-medicine.com/uploads/images/gallery/2023-03/TYPE5UPPgZt27EHs-image.png)

利用 SeImpersonatePrivilege 提权至 SYSTEM 涉及到了令牌理论，并且利用手法也多种多样，考虑到背后原理具有一定复杂性，我们不在课程的早期进行详细讲解。但简单地解释就是，**拥有该特权的账户可以以其他用户的上下文执行代码甚至创建进程**。

对于该特权的利用，有多种工具，知名的有(土豆家族) JuicyPotato，RottenPotato，SweetPotato 等，以及 PrintSpoofer。土豆家族中各个工具利用的原理，以及适用系统版本有所不同，想深入了解其中区别，可以查阅文章 [https://jlajara.gitlab.io/Potatoes\_Windows\_Privesc](https://jlajara.gitlab.io/Potatoes_Windows_Privesc)

当前，适用性很好的利用工具有 SweetPotato ([https://github.com/CCob/SweetPotato](https://github.com/CCob/SweetPotato))，以及 PrintSpoofer ([https://github.com/itm4n/PrintSpoofer](https://github.com/itm4n/PrintSpoofer))。BadPotato ([https://github.com/BeichenDream/BadPotato](https://github.com/BeichenDream/BadPotato)) 是 PrintSpoofer 利用的 C# 实现，可以配合 execute-assembly 使用。

如果利用 PrintSpoofer 的话，要确保 **Print Spooler** 服务正在运行，否则我们需要用其他方法利用 SeImpersonatePrivilege。

[![image.png](https://raven-medicine.com/uploads/images/gallery/2023-03/scaled-1680-/d8WQxiVvm3FyOFKC-image.png)](https://raven-medicine.com/uploads/images/gallery/2023-03/d8WQxiVvm3FyOFKC-image.png)

我们使用 BadPotato 执行命令，可以发现是以 **SYSTEM** 权限运行的。

[![image.png](https://raven-medicine.com/uploads/images/gallery/2023-03/scaled-1680-/jiuwkoCim3NKQGEf-image.png)](https://raven-medicine.com/uploads/images/gallery/2023-03/jiuwkoCim3NKQGEf-image.png)