【漏洞通告】 Microsoft Windows PsExec 0day漏洞

發布時間 2021-01-08

0x00 漏洞概述

CVE  ID


時  間

2021-01-08

類   型

LPE

等  級

高危

遠程利用

影響范圍

PsExec v1.72-v2.2

 

0x01 漏洞詳情

image.png

PsExec是SysInternals套件的一部分,它是系統管理員的一種工具,可在計算機客戶端遠程執行應用程序。

2020年12月09日,PsExec被披露存在一個本地權限提升0day漏洞,該漏洞被命名為管道劫持(或命名管道占用)漏洞,該漏洞允許攻擊者誘使PsExec重新打開惡意創建的命名管道并授予其本地系統權限。成功利用此漏洞后,攻擊者將能夠以本地系統的身份執行任意進程,從而控制整個計算機。

相關研究人員表示,該漏洞影響PsExec版本從1.72到最新版本2.2,這意味著該漏洞已經存在大約14年了。

 

漏洞細節

PsExec包含一個名為“PSEXESVC”的嵌入式資源,它是一個可執行的服務級別組件,每當PsExec客戶機以遠程機器為目標執行PsExec時,該組件就會作為SYSTEM被提取、復制到遠程機器上并執行。PsExec客戶端和遠程PSEXESVC服務之間的通信通過命名管道進行。具體來說,名為“\PSEXESVC”的管道負責解析和執行PsExec客戶端的命令,比如“要執行哪個應用程序”、“相關命令行數據”等。

當然,出于安全原因,PSEXESVC服務的“\PSEXESVC”管道受到保護,僅允許管理員進行讀/寫訪問。

image.png

 

但是,通過管道搶注(即首先創建管道的方法),低權限應用程序可以訪問該管道。也就是說,如果本地低權限應用程序在執行PSEXESVC之前創建了“\PSEXESVC”命名管道,則PSEXESVC將獲取現有實例的句柄,而不是創建命名管道,這將產生一些意料之外的后果,稍后將看到。下面展示了PSEXESVC如何創建“\PSEXESVC”管道的反匯編:

image.png

 

在這里,從nMaxInstances參數可以看到,它允許存在無限的“\PSEXESVC”管道實例。此外,它并不能確保它是第一個創建“\PSEXESVC”管道的應用程序,并且通常使用FILE_FLAG_FIRST_PIPE_INSTANCE標志來完成。在這種情況下,它將嘗試創建命名管道,如果命名管道已經存在,則只需在調用后獲取現有“\PSEXESVC”管道的句柄即可,這將繼承現有管道的ACL。

 

以下,通過制作了一個簡單的“ PipeHijack.exe”程序,該程序創建了“\PSEXESVC”管道,該管道具有對“ David Wells”用戶的讀/寫訪問權限。

image.png

 

運行后,如果將來在本機上本地或遠程執行PsExec,PSEXESVC實例將獲得管道的句柄,并可以讀取/寫入該句柄,從而允許低權限應用程序與此PSEXESVC系統服務通信。

image.png

 

PoC鏈接:

https://github.com/tenable/poc/blob/master/Microsoft/Sysinternals/PsExecEscalate.cpp

 

0x02 處置建議

目前,Microsoft暫未發布此漏洞的安全更新,但 0patch團隊已經發布了此漏洞的微補丁。

下載鏈接:

https://blog.0patch.com/2021/01/local-privilege-escalation-0day-in.html

 

0x03 參考鏈接

https://www.bleepingcomputer.com/news/security/windows-psexec-zero-day-vulnerability-gets-a-free-micropatch/

https://medium.com/tenable-techblog/psexec-local-privilege-escalation-2e8069adc9c8

 

0x04 時間線

2020-12-09  David Wells披露漏洞

2021-01-07  0patch團隊發布微補丁

2021-01-08  VSRC發布安全通告

 

0x05 附錄

 

CVSS評分標準官網:http://www.first.org/cvss/

image.png