导航菜单

pipePotato:一种新型的通用提权漏洞

 

作者:xianyu & daiker

0x00 影响

本地提权,对于任意windows Server 2012以上的windows server版本(win8以上的某些windows版本也行),从Service用户提到System 用户,在windows Server 2012,windows Server 2016,windows Server 2019全补丁的情况都测试成功了。

 

0x01 攻击流程

pipePotato:一种新型的通用提权漏洞

演示基于server 2019

  • laji.exe. msf 生成的正常木马
  • pipserver.exe 命名管道服务端,注册命名管道
  • spoolssClient.exe 打印机rpc调用客户端

首先,攻击者拥有一个服务用户,这里演示采用的是IIS服务的用户。攻击者通过pipeserver.exe注册一个名为pipexpipespoolss的恶意的命名管道等待高权限用户来连接以模拟高权限用户权限,然后通过spoolssClient.exe迫使system用户来访问攻击者构建的恶意命名管道,从而模拟system用户运行任意应用程序

 

0x02 漏洞成因

spoolsv.exe 进程会注册一个 rpc 服务,任何授权用户可以访问他,RPC 服务里面存在一个函数 RpcRemoteFindFirstPrinterChangeNotificationEx

pipePotato:一种新型的通用提权漏洞

https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rprn/eb66b221-1c1f-4249-b8bc-c5befec2314d

pipePotato:一种新型的通用提权漏洞

pszLocalMachine 可以是一个 UNC 路径(\host),然后 system 用户会访问 \hostpipespoolss,

pipePotato:一种新型的通用提权漏洞

pipePotato:一种新型的通用提权漏洞

在文档 https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rprn/9b3f8135-7022-4b72-accb-aefcc360c83b里面

server name 是这样规范的

SERVER_NAME = "\" host "" | ""

如果 SERVER_NAME 是 \127.0.0.1 ,system用户会访问 \127.0.0.1pipespoolss

pipePotato:一种新型的通用提权漏洞

问题是,如果 SERVER_NAME 是\127.0.0.1/pipe/xx,system用户会访问\127.0.0.1pipexxxpipespoolss,这个命名管道并没有注册,攻击者就可以注册这个命名管道。

pipePotato:一种新型的通用提权漏洞

pipePotato:一种新型的通用提权漏洞

当 system 用户访问这个命名管道(pipexpipespoolss),我们就能模拟system 用户开启一个新的进程。

pipePotato:一种新型的通用提权漏洞

pipePotato:一种新型的通用提权漏洞

 

0x03 时间线

2019年12月5日 向MSRC进行反馈,分配编号VULN-013177 CRM:0279000283

pipePotato:一种新型的通用提权漏洞

2019年12月5日 分配Case编号 MSRC Case 55249

pipePotato:一种新型的通用提权漏洞

2019年12月15日 向MSRC发邮件询求进度,微软2019年12月18日回复

pipePotato:一种新型的通用提权漏洞

pipePotato:一种新型的通用提权漏洞

2019年12月27日 MSRC 回信认为impersonate的权限需要administrator或者等同用户才拥有,Administrator-to-kernel并不是安全问题。事实上,所有的service 用户(包括local service,network service 都具备这个权限)。我们向MSRC发邮件反馈此事

the account used to impersonate the named pipe client use the SeImpersonatePrivilege. The SeImpersonatePrivilege is only available to accounts that have administrator or equivalent privileges. Per our servicing criteria: Administrator-to-kernel is not a security boundary.

pipePotato:一种新型的通用提权漏洞

pipePotato:一种新型的通用提权漏洞

2019年12月28日 MSRC 回信会处理,至今没有回信

pipePotato:一种新型的通用提权漏洞

2020年5月6日 在安全客上披露

本文由安全客原创发布 转载,请参考转载声明,注明出处: https://www.anquanke.com/post/id/204510

相关推荐

Virtio:一种Linux I/O虚拟化框架

译文声明 本文是翻译文章,文章原作者ibm,文章来源:developer.ibm.C++om 原文地址:https://developer.ibm.com/articles/l-virtio/ 译文仅供参考,具体内容表达以及含义原文为准 当前QEMU的PWN题目和安全研究比...

CVE-2020-1034的Exploit实现过程

译文声明 本文是翻译文章,文章原作者windows-internals,文章来源:windows-internals.C++om 原文地址:https://windows-internals.com/exploiting-a-simple-vulnerability-in-35-easy-steps-or-less/ 译文仅供...