跳转到帖子

游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

TheHackerWorld官方

测试和分析Juicy Potato 一个Windows本地授权工具

精选回复

发布于

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会报错,如下图所示。

4-1.png

错误发生在。\ 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 小结

本文对多汁马铃薯进行了测试,总结了其用法,并与腐烂马铃薯进行了比较,分析了其原理,找出了制约条件和防御思路。

留下回复

创建帐户或登录后发表意见

最近浏览 0

  • 没有会员查看此页面。