Windows NTLM 权限提升缺陷 (CVE-2023-21746)复现过程+ PoC 漏洞
2023-11-6 10:35:47 Author: Ots安全(查看原文) 阅读量:31 收藏

在不断发展的网络安全领域,一个新发现的漏洞引起了安全专业人士和研究人员的关注。Windows 中的这个本地权限提升 (LPE) 漏洞被称为“Local Potato”,编号为 CVE-2023-21746,因其潜在影响而引起人们的关注。Andrea Pierini 和 Antonio Cocomazzi 于 2022 年 9 月 9 日向 Microsoft 报告,该缺陷使权限有限的攻击者能够通过系统级控制获得对敏感文件的未经授权的访问。尽管微软在 2023 年 1 月的更新中迅速发布了补丁,但该漏洞的影响超出了其最初的范围。在这篇博文中,我们深入研究了 Local Potato 的复杂性,探讨了它的起源、它带来的潜在风险,以及允许作为系统提升权限和命令执行的补充向量。请准备好深入探索这一重大安全问题,近几个月来,该问题出现了引人注目的 PoC 演示,其中包括涉及利用 StorSvc 服务的演示。 

NTLM 身份验证:揭开流程 

当涉及 NTLM 身份验证时,标准过程涉及用户寻求通过远程服务器对自己进行身份验证。此身份验证过程围绕三个关键数据包: 

  • 数据包 1:类型 1 消息 在此初始步骤中,客户端通过向服务器发送数据包来启动身份验证过程,协商身份验证条款。或者,该数据包可以包括客户端计算机的名称及其域。收到数据包后,服务器可以验证身份验证请求是否来自不同的机器。 

  • 数据包 2:类型 2 消息 在类型 1 消息之后,服务器通过质询响应客户端。这个“挑战”本质上是生成一个随机数,用于对客户端进行身份验证,从而无需通过网络传输其凭据。通过提供独特的质询,服务器建立了验证客户端身份的安全方法。 

  • 数据包 3:类型 3 消息 为了完成身份验证过程,客户端利用类型 2 消息中收到的质询并将其与用户的密码散列相结合。该组合生成对质询的响应,然后将其作为类型 3 消息的一部分发送到服务器。通过接收此响应,服务器可以验证客户端是否拥有正确的用户密码散列,而无需通过网络传输它。这种方法确保了身份验证过程中用户凭证的机密性和完整性。 


NTLM 本地身份验证:简化流程 

当用户想要登录同一台计算机上托管的服务时,NTLM 本地身份验证就会发挥作用。由于客户端和服务器应用程序驻留在同一台计算机上,因此质询-响应机制就变得不必要了。相反,身份验证通过建立安全上下文而采用不同的方法。虽然这里不会深入探讨安全上下文的复杂性,但请将其想象为与连接相关的安全参数的集合,包括会话密钥和将用于连接的权限的用户。 

虽然这三个消息没有变化,但是认证信息发生了如下修改: 

  • 消息 1:类型 1 消息 为了启动连接,客户端发送此消息,该消息用于协商身份验证参数,类似于之前的过程。此外,它还包括客户端计算机的名称和域。服务器可以验证客户端的名称和域,仅当它们与自己的名称和域匹配时才启动本地身份验证过程。 

  • 消息 2:类型 2 消息 作为响应,服务器生成安全上下文并通过此消息将其标识 (ID) 传达给客户端。通过利用安全上下文 ID,客户端与连接建立关联,从而巩固其身份验证。 

  • 消息 3:类型 3 消息 成功与现有安全上下文 ID 关联后,客户端将空的类型 3 消息发送回服务器,指示本地身份验证过程成功完成。 

由于所有步骤都在同一台机器上进行,因此不再需要质询-响应机制。相反,机器会验证服务器和客户端应用程序的安全上下文 ID,从而简化身份验证过程。 

如何利用此漏洞 

要利用此漏洞,必须拥有一个具有预配置设置的受控测试环境。为了获得实践经验并更好地了解此漏洞的复杂性,我们将使用 tryhackme 平台进行实践练习。您可以通过单击以下链接来访问特定的漏洞利用练习:https://tryhackme.com/room/localpotato。通过进行此练习,您将能够积极参与该漏洞利用并增强对其内部工作原理的理解 

步骤 1:要在本地 Windows 计算机上开始探索和测试 CVE-2023-21746 漏洞,您可以按照下面列出的一系列步骤进行操作。要启动此过程,请首先访问提供的链接:https://tryhackme.com/room/localpotato。在网页上,找到“启动计算机”选项并继续单击它。此操作将触发预配置虚拟机 (VM) 的启动,该虚拟机包含测试上述漏洞所需的所有必要的易受攻击的组件。在访问虚拟机之前,必须登录TryHackMe。成功登录后,导航至“加入房间”选项,这将授予您访问指定房间的权限,使您能够启动其中的计算机。通过认真遵循这些说明,您可以积极参与该漏洞,在进行实验的同时在受控环境中探索其影响。  

步骤 2 :虚拟机 (VM) 启动后,可能需要根据所使用的 Windows Server 进行特定的代码修改。为此,导航到工具文件夹并找到位于“C:\tools\LPE via StorSvc \ RpcClient \ RpcClient \ storsvc_c.c ”的名为“ storesvc_c.c ”的文件。使用 Notepad++ 打开该文件。 步骤 3:取消注释第 5 行,即“#define WIN2019”,并注释掉第 3 行。由于我们当前的计算机在 Windows Server 2019 上运行,因此我们将修改该文件,使其显示如下:  步骤 4:完成必要的调整后,漏洞将被配置为利用适用于 Windows 2019 的适当 RPC接口标识符。现在代码已得到纠正,让我们继续通过桌面上的快捷方式启动开发人员的命令提示符。为了成功构建项目,请执行以下命令:“ msbuild RpcClient.sln”。  步骤5 :现在,将构建过程后创建的RpcClient.exe 文件重新定位到桌面。  

步骤 6:为了成功编译 SprintCSP.dll,我们的重点仅在于通过StorSvc \ SprintCSP \ SprintCSP \ main.c修改位于 C:\tools\LPE 中的 DoStuff ( )函数。此修改需要在函数中合并一个命令,使我们能够获得对机器的特权访问。为了简化问题,我们将确保DLL将我们当前的用户添加到管理员组中。下面,您可以找到更新的代码,反映了为实现我们期望的结果而替换的命令。  

第 7 步:让我们 继续通过桌面上的快捷方式启动开发人员的命令提示符。要成功构建项目,请执行以下命令:“ msbuild SprintCSP.sln”。 步骤 8:现在,将构建过程后创建的SprintCSP.dll 文件重新定位到桌面。 

步骤 9:在继续利用漏洞之前,请确保桌面上保存有必要的文件,即 LocalPotato.exe 漏洞、RpcClient.exe 和 SprintCSP.dll。如果您没有这些文件,请参考上一个任务来构建它们。 

首先,我们首先确认当前用户不包含在管理员组中: 

第10步:现在,让我们 尝试将SprintCSP.dll文件复制到特权路径。然而,如下所示,由于权限不足,我们遇到了“访问被拒绝”错误。尽管如此,通过利用LocalPotato的强大功能,我们可以绕过此限制并成功将 SprintCSP.dll 文件复制到 system32 目录中,即使使用非特权用户帐户进行操作也是如此。 步骤 11 :成功安装 DLL后,我们可以继续执行 RpcClient.exe,这将启动SvcRebootToFlashingMode的调用。此操作有效地触发了 DLL 中包含的有效负载的执行。 第12步:为了确认我们的漏洞利用成功执行,我们可以验证我们的用户是否已添加到管理员组。 

LocalPotato - POC:

https://github.com/decoder-it/LocalPotato

LocalPotato (aka CVE-2023-21746 & HTTP/WebDAV)         by splinter_code & decoder_it  Mandatory Args:SMB:        -i Source file to copy for SMB        -o Output file for SMB - do not specify the drive letterHTTP:        -r host/ip for HTTP        -u target URL for HTTP Optional Args:-c CLSID (Default {854A20FB-2D44-457D-992F-EF13785D2B51})-p COM server port (Default 10271) Examples:- SMB:         LocalPotato.exe -i c:\hacker\evil.dll -o windows\system32\evil.dll- HTTP/WebDAV:         LocalPotato.exe -r 127.0.0.1 -u /webdavshare/potato.local



文章来源: http://mp.weixin.qq.com/s?__biz=MzAxMjYyMzkwOA==&mid=2247502602&idx=1&sn=ee1b6d78459f10852f46add6abdf6558&chksm=9bad8241acda0b5798901ce9bec992da05b148578264cd6547d0bf329aa4644ca7fdaa0418de&scene=0&xtrack=1#rd
如有侵权请联系:admin#unsafe.sh