0x01 阅读须知
鸡哥安全的技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。本文所提供的工具仅用于学习,禁止用于其他!!!
0x02 漏洞说明
Juicy Potato允许以更灵活的方式利用该漏洞。在这种情况下,ohpe 和解码器在 Windows 构建审查期间发现了一个设置,其中BITS被故意禁用并占用了端口6666,因此Rotten Potato PoC 将不起作用。
什么是 BITS 和 CLSID?
-
CLSID是标识 COM 类对象的全局唯一标识符。它是一个类似UUID的标识符。
-
程序员和系统管理员使用后台智能传输服务 (BITS)从 HTTP Web 服务器和 SMB 文件共享下载文件或将文件上传到 HTTP Web 服务器和 SMB 文件共享。关键是BIT实现了IMarshal接口并允许代理声明强制 NTLM 身份验证。
Rotten Potato的 PoC 使用带有默认 CLSID 的 BITS
// Use a known local system service COM server, in this cast BITSv1
Guid clsid = new Guid("4991d34b-80a1-4291-83b6-3328366b9097");
他们发现除了 BITS 之外,还有几个进程外 COM 服务器由可能被滥用的特定 CLSID 标识。他们至少需要:
-
可由当前用户实例化,通常是具有模拟权限的服务用户
-
实现IMarshal接口
-
以提升的用户身份运行(SYSTEM、Administrator,…)
具体可以参考这里:http://ohpe.it/juicy-potato/CLSID/
优势
-
我们不需要有一个meterpreter shell
-
我们可以指定我们的 COM 服务器监听端口
-
我们可以使用 CLSID 指定滥用
0x03 漏洞复现
1.执行如下命令查看用户权限
whoami /all
whoami /priv
-t t
-t u
* 如果均未开启,那么无法提权
2.查看RPC默认端口是否为135
如果被修改(例如为111),juicypotato的参数可以使用 -n 111
如果系统禁用了RPC,并不是一定无法提权,需要满足如下条件:
找到另一系统,能够以当前用户的权限进行远程RPC登录,此时juicypotato的参数可以使用-k
例如Win7、WIn8系统,默认配置下,允许135端口的入站规则即可进行远程RPC登录
添加防火墙规则允许135端口入站的命令如下:netsh advfirewall firewall add rule name="135" protocol=TCP dir=in localport=135 action=allow
3.potato家族下载链接如下,已打包好
链接:https://pan.baidu.com/s/1GgLpm4Q9vFC2ODfCyeRyJw
提取码:jxxy
4.删除result.log文件内容,并运行juicy-potato.bat,得到一个可用的CLSID
5.运行JuicyPotato-webshell即可提权,命令如下
JuicyPotato-webshell.exe -p "whoami" -c {CLSID}
0x04 总结
-
DCOM 不与我们的本地侦听器交谈,因此没有 MITM 和漏洞利用。
-
将数据包发送到我们控制下侦听端口 135 的主机,然后将数据转发到我们的本地 COM 侦听器不起作用。问题是在这种情况下,客户端不会协商本地身份验证。
1个1朵5毛钱
天天搬砖的小M
能不能吃顿好的
就看你们的啦
原文始发于微信公众号(鸡哥的内网渗透之路):内网渗透 Juicy Potato提权