目錄
原理
POC
復現
一個windows本地提權漏洞
這是一個存在于Windows磁盤清理工具(cleanmgr.exe
)中的權限提升漏洞。攻擊者可以利用該系統組件在處理特定目錄時的邏輯缺陷,通過精心構造的符號鏈接(Symbolic Link),欺騙以高權限(SYSTEM)運行的計劃任務,使其刪除或移動關鍵的系統文件,從而最終獲得系統的最高控制權(SYSTEM權限)。
原理
1. 漏洞根源:CWE-59 - 文件訪問前鏈接解析不當
這是整個漏洞的核心。簡單來說,就是程序在訪問一個文件或文件夾之前,沒有正確地驗證該路徑是否已經被“重定向”了。
-
漏洞如何發生??
cleanmgr.exe
?在刪除?C:\ESD\Windows
?等目錄的內容之前,沒有檢查這些路徑是否是符號鏈接,或者是否包含了符號鏈接。攻擊者可以提前創建一個名為?C:\ESD\Windows
?的符號鏈接,并將其指向一個極其重要的系統目錄,例如?C:\Windows\System32
。
2. 利用載體:SilentCleanup 計劃任務
漏洞本身只是一個邏輯缺陷,需要有一個“高權限”的執行環境才能被利用來提升權限。
-
什么是SilentCleanup??這是一個Windows內置的、用于自動清理磁盤空間的計劃任務。關鍵之處在于:
-
它默認以提升的權限運行(通常是SYSTEM權限)。
-
它會自動觸發?
cleanmgr.exe
(磁盤清理工具)。 -
普通用戶有權手動觸發這個任務(通過
schtasks /run
命令)。
-
-
這就構成了完美的利用條件:攻擊者以普通用戶身份登錄后,可以手動運行這個高權限任務,并利用
cleanmgr.exe
的解析缺陷,讓這個高權限進程去執行危險操作。
POC
攻擊鏈條梳理(Step-by-Step)
https://github.com/moiz-2x/CVE-2025-21420_POC
-
準備階段:
-
攻擊腳本創建三個目錄:
C:$Windows.~WS
,?C:\ESD\Windows
, 和?C:\ESD\Download
。這是cleanmgr.exe
在執行SilentCleanup任務時會掃描和清理的目錄。 -
在這些目錄里放一些無關緊要的文本文件,讓清理工具“有東西可刪”。
-
-
設置陷阱:
-
腳本會刪除剛剛創建的?
C:\ESD\Windows
?目錄。 -
然后立即在原地創建一個同名的符號鏈接,但這個鏈接指向一個關鍵的系統目錄,例如?
C:\Config.msi
。 -
C:\Config.msi
?是一個特殊的目錄,它是Windows Installer的緩存文件夾,本身受到一些保護,但此漏洞利用可以繞過這些保護。
-
-
觸發攻擊:
-
攻擊者以普通用戶身份手動觸發?
SilentCleanup
?計劃任務。 -
任務啟動,以SYSTEM權限調用?
cleanmgr.exe
。 -
cleanmgr.exe
?開始執行清理邏輯,掃描到?C:\ESD\Windows
?目錄。由于之前的操作,它現在實際上是一個指向?C:\Config.msi
?的符號鏈接。 -
cleanmgr.exe
?未能正確解析此鏈接(CWE-59),它以為自己正在清理的是無害的臨時目錄?C:\ESD\Windows
,但實際上它的刪除操作全部作用在了重要的?C:\Config.msi
?目錄上!
-
-
實現權限提升:
-
刪除?
C:\Config.msi
?中的文件本身可能不會直接獲得權限。PoC采用了更進一步的技巧:文件替換。 -
一種經典的方法是瞄準一個在登錄界面易于觸發的、會以SYSTEM權限運行的程序,例如?
osk.exe
(屏幕鍵盤)。 -
攻擊者可以先將自己的惡意可執行文件(例如一個反彈Shell)命名為?
osk.exe
。 -
通過上述漏洞,讓高權限的
cleanmgr.exe
?刪除?真正的?C:\Windows\System32\osk.exe
(這通常需要TrustedInstaller權限,但通過此漏洞間接實現了),然后將自己的惡意osk.exe
移動或復制到該位置。 -
當下次在登錄界面點擊“輕松使用”圖標并選擇打開屏幕鍵盤時,系統就會以SYSTEM權限執行攻擊者的惡意程序,從而完成權限提升。
-
復現
https://github.com/thezdi/PoC/tree/main/FilesystemEoPs
mkdir "C:\$Windows.~WS" "C:\ESD\Windows" "C:\ESD\Download" && echo AAAA > "C:\$Windows.~WS\text.txt" && echo AAAA > "C:\ESD\Windows\text.txt" && echo AAAA > "C:\ESD\Download\text.txt"
FolderOrFileDeleteToSystem.exe
FolderContentsDeleteToFolderDelete.exe /initial C:\ESD\Windows /target C:\Config.msi
schtasks /run /tn "\Microsoft\Windows\DiskCleanup\SilentCleanup" /I
osk