发布于2022年11月8日3年前 0x00 前言 Juicy Potato是一个Windows系统的本地电源提升工具,它是在Rottenpotato工具的基础上扩展而来,具有更广泛的应用条件。 使用的前提是你获得了SeImpersonate或者SeAssignPrimaryToken的权限,通常在webshell下使用。 那么,多汁的土豆有哪些使用方法和局限性呢?本文将对其进行检验,并根据原理分析其限制条件。 多汁土豆的下载地址: https://github.com/ohpe/juicy-potato 0x01 简介 本书将介绍以下内容: 实现原则 RottenPotatoNG的延伸 枚举可用COM对象的方法 施用方式 极限条件 防御思维 0x02 实现原理 参考资料: https://fox glove security . com/2016/09/26/rotate-potato-privilege-escalation-from-service-accounts-to-system/ 根据个人理解介绍一下实现原理。 需要了解一些事情: 使用DCOM时,如果您作为服务远程连接,权限为System,如BITS服务。 DCOM可用于通过TCP连接到本地计算机的端口,以启动NTLM验证,该验证可以重播。 默认情况下,本地用户拥有SeImpersonate和SeAssignPrimaryToken权限。 在启用了SeImpersonate权限的情况下,当调用CreateProcessWithToken时,可以传入一个新令牌来创建一个新进程。 打开SeAssignPrimaryToken权限后,可以在调用CreateProcessAsUser时传入一个新令牌来创建一个新进程。 多汁马铃薯的实现过程如下: 1、加载COM,发出请求,权限为System 尝试在指定的ip和端口位置加载COM对象。 RottenPotatoNG使用的COM对象是CLSID为{ 4991d 34b-80a 1-4291-83b 6-3328366 b 9097 }的位 没有独特的COM对象可供选择,但是Juicy Potato提供了许多。详细列表请参考以下地址: https://github . com/ohpe/juicy-potato/blob/master/CLSID/readme . MD 2、回应步骤1的请求,发起NTLM认证 一般情况下,由于权限不足,当前权限不是系统的,认证无法成功。 3、针对本地端口,同样发起NTLM认证,权限为当前用户 因为权限是当前用户,所以NTLM认证可以成功完成。 RottenPotatoNG使用的135端口 Juicy Potato支持指定任何本地端口,但是RPC一般默认为135端口,很少修改。 4、分别拦截两个NTLM认证的数据包,替换数据,通过NTLM重放使得步骤1(权限为System)的NTLM认证通过,获得System权限的Token 注意重播时NTLM认证的NTLM服务器挑战,需要修正。 5、利用System权限的Token创建新进程 如果开启了SeImpersonate权限,调用CreateProcessWithToken,传入系统权限的令牌,创建的进程就是系统权限。 或者 如果开启了SeAssignPrimaryToken权限,则调用CreateProcessAsUser,传入系统权限的令牌,创建的进程就是系统权限。 注: 详情请参考之前的文章《渗透技巧——Windows九种权限的利用》。 利用的关键: 当前用户支持SeImpersonate或SeAssignPrimaryToken权限。 以下用户拥有此权限: 本地管理员组和本地服务帐户的成员 服务控制管理器启动的服务 由组件对象模型(com)基础结构启动并配置为在特定帐户下运行的COM服务器 对于右筹来说,主要是第三类用户,常见的是LocalService用户,比如IIS和sqlserver用户。 0x03 枚举可用COM对象的方法 Juicy Potato提供了一种枚举可用COM对象的方法,步骤如下: 1、获得可用CLSID的列表 使用带有以下地址的GetCLSID.ps1: https://github . com/ohpe/juicy-potato/blob/master/CLSID/getclsid . PS1 注: 使用时,同级目录需要包含支持文件。\ utils \utils\Join-Object.ps1 成功执行后生成文件CLSID.list和CLSID.csv。 2、使用批处理调用juicypotato.exe逐个测试CLSID 批次地址如下: https://github . com/ohpe/juicy-potato/blob/master/Test/Test _ clsid . bat juicypotato.exe的参数如下: juicypotato.exe-z-l!港口!-c %%i result.log -z表示测试模式,只验证Token,不使用Token创建进程。 -l是端口,从1000开始,每个周期加1。 -c是从文件CLSID.list中获得的CLSID Juicy Potato测试了以下Windows系统: Windows 7企业版 Windows 8.1企业版 Windows 10企业版 Windows 10专业版 Windows Server 2008 R2企业版 Windows Server 2012数据中心 Windows Server 2016标准版 在测试的过程中,我在Server2012下执行GetCLSID.ps1会报错,如下图所示。 错误发生在。\ utils \utils\Join-Object.ps1 下面是一个修改方法: 1、枚举所有满足条件的CLSID Powershell代码如下: new-PS drive-Name HKCR-PS provider Registry-Root HKEY类根| Out-Null $ CLSID=Get-item property HKCR:\ CLSID \ * | select-object AppID,@ { N=' CLSIDE={$_。pschildname}} | where-object {$_。appid -ne $null} foreach($a in $CLSID) { 写主机$a.CLSID } 您可以选择将结果保存为CLSID.list 2、使用批处理调用juicypotato.exe逐个验证 地址如下: https://github . com/ohpe/juicy-potato/blob/master/Test/Test _ clsid . bat Bat脚本不需要修改。 0x04 使用方法 1、查看当前用户权限,是否符合要求 whoami /priv 如果打开SeImpersonate权限,juicypotato的参数可以使用-t t t。 如果启用了SeAssignPrimaryToken权限,则juicypotato的参数可以使用-t u。 如果两者都开启,可以选择-t * 如果都不开,就不能养权。 2、查看RPC默认端口是否为135 如果修改了(比如111),juicypotato的参数可以用-n 111。 如果系统中禁用了RPC,也不一定不能提权。需要满足以下条件: 找到另一个可以使用当前用户的权限远程登录的系统。此时,juicypotato的参数可以使用-k。 例如,Win7和WIn8系统,在默认配置下,远程RPC登录允许135端口的入站规则。 添加防火墙规则以允许135端口进入的命令如下: netsh advfirewall防火墙添加规则名称='135 '协议=TCP目录=在本地端口=135操作=允许 您也可以选择关闭防火墙。请参考绕过UAC关闭防火墙的代码: https://github . COM/3g student/Use-COM-objects-to-bypass-UAC/blob/master/disable firewall . CPP 3、根据操作系统选择可用的CLSID 引用表 https://github . com/ohpe/juicy-potato/blob/master/CLSID/readme . MD 例如,测试system Server2012,选择CLSID为{ 8 BC 3 f 05 e-d86b-11d 0-a075-00 c 04 FB 68820 } 4、选择一个系统未占用的端口作为监听端口 例如,最终参数如下: JuicyPotato.exe-t t-p c:\ windows \ system32 \ cmd . exe-l 1111-c { 8 BC 3 f 05 e-D86B-11d 0-A075-00 c 04 FB 68820 } 它意味着启动创建SeImpersonate特权的进程,并监听端口1111。使用的CLSID是{ 8 BC 3 f 05 e-d86b-11d 0-A075-00 c 04 FB 68820 } 0x05 限制条件 经过以上分析,多汁马铃薯的局限性如下: 您需要支持SeImpersonate或SeAssignPrimaryToken权限。 打开DCOM 本地RPC或远程服务器支持PRC,可以成功登录。 可以找到可用的COM对象 0x06 防御思路 从防御的角度来看,服务器禁用DCOM、禁用RPC或为每个COM对象配置属性是不现实的。 Juicy Potato的关键在于权限的控制,防止攻击者获得SeImpersonate或SeAssignPrimaryToken的权限。 0x07 补充 更多学习材料: https://bugs.chromium.org/p/project-zero/issues/detail?id=325redir=1 0x08 小结 本文对多汁马铃薯进行了测试,总结了其用法,并与腐烂马铃薯进行了比较,分析了其原理,找出了制约条件和防御思路。 留下回复
创建帐户或登录后发表意见