原理:
攻击者可以诱骗用户尝试使用NTLM对他的计算机进行身份验证,则他可以将该身份验证尝试中继到另一台计算机!
Microsoft通过使用已经进行的质询来禁止同协议NTLM身份验证来对此进行修补。这意味着从一个主机回到自身的SMB-> SMB NTLM中继将不再起作用。但是,跨协议攻击(例如HTTP-> SMB)仍然可以正常使用!
使用条件
1、查看当前用户权限,是否符合要求
whoami /all
whoami /priv
如果开启SeImpersonate权限,juicypotato的参数可以使用-t t
如果开启SeAssignPrimaryToken权限,juicypotato的参数可以使用-t u
如果均开启,可以选择-t *
如果均未开启,那么无法提权
2、查看RPC默认端口是否为135
如果被修改(例如为111),juicypotato的参数可以使用-n 111
如果系统禁用了RPC,并不是一定无法提权,需要满足如下条件:
找到另一系统,能够以当前用户的权限进行远程RPC登录,此时juicypotato的参数可以使用-k
例如Win7、WIn8系统,默认配置下,允许135端口的入站规则即可进行远程RPC登录
添加防火墙规则允许135端口入站的命令如下:
netsh advfirewall firewall add rule name="135" protocol=TCP dir=in localport=135 action=allow
3、根据操作系统选择可用的CLSID
参考列表
https://github.com/ohpe/juicy-potato/blob/master/CLSID/README.md
例如测试系统win7 ,选择CLSID为 {555F3418-D99E-4E51-800A-6E89CFD8B1D7}
4、选择一个系统未占用的端口作为监听端口
例如,最终参数如下:
JuicyPotato.exe -t t -p c:\windows\system32\cmd.exe -l 1111 -c {8BC3F05E-D86B-11D0-A075-00C04FB68820}
表示开启SeImpersonate权限创建进程,监听端口1111,使用的CLSID为{8BC3F05E-D86B-11D0-A075-00C04FB68820}
限制条件
经过以上的分析,Juicy Potato的限制条件如下:
- 需要支持SeImpersonate或者SeAssignPrimaryToken权限
- 开启DCOM
- 本地支持RPC或者远程服务器支持PRC并能成功登录
- 能够找到可用的COM对象
一般从web拿到的webshell
都是IIS服务器权限,是具有这个模仿权限的。一般大多数的服务型账户IIS、MSSQL等,有这个权限,大多数用户级的账户没有这个权限,这些都可以whoami /priv
试一下看看有没有模仿权限。
在Cobaltstrike中使用Juicypotato提权
在Cobaltstrike中使用Juicypotato提取,是使用DLL注入的方式执行Juicypotato实现权限提升
但是缺陷比较明显,只能使用默认的CLSID({4991d34b-80a1-4291-83b6-3328366b9097})进行提权,如果想使用其他CLSID请参考命令行等执行方法
下载并解压reflectiveJuicyPotato.zip,在Cobaltstike中选择脚本管理器–>load加载juicypotato.cna脚本
随后我们在提权模块即可发现多了一个JuicyPotato