【内网渗透】CVE-2025-21420 利用cleanmgr本地提权
目录
原理
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