Skip to content
KitploitKITPLOIT
工具博客
Log in
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/muhammad-ali007/localpotato_cve-2023-21746
权限提升漏洞分析漏洞利用横向移动后渗透利用渗透测试Payload 开发二进制利用
GitHubmuhammad-ali007/localpotato_cve-2023-21746

LocalPotato_CVE-2023-21746

针对Windows本地权限提升(CVE-2023-21746)的概念验证漏洞利用,通过滥用NTLM本地认证,借助SMB共享访问和DLL劫持来获取SYSTEM权限。

查看仓库
3283年前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Windows 中的一个本地权限提升 (LPE) 漏洞于 2022 年 9 月 9 日由 Andrea Pierini (@decoder_it) 和 Antonio Cocomazzi (@splinter_code) 报告给微软。该漏洞允许主机上拥有低权限账户的攻击者以 SYSTEM 权限读/写任意文件。

虽然该漏洞本身不会直接允许以 SYSTEM 身份执行命令,但我们可以将其与多个攻击向量结合来实现这一目标。恰好在 2 月 13 日,BlackArrowSec 发布了一个利用 StorSvc 服务的权限提升 PoC,只要攻击者能够将 DLL 文件写入 PATH 中的任何目录,即可允许攻击者以 SYSTEM 权限执行代码。

LocalPotato PoC 利用了 NTLM 认证中一种称为 NTLM 本地认证的特殊情况下的缺陷,欺骗一个特权进程对攻击者针对本地 SMB 服务器启动的会话进行认证。结果是攻击者最终拥有一个连接,该连接使其能够以被欺骗进程的权限访问任何共享,包括像 C$ 或 ADMIN$ 这样的特殊共享。

该漏洞利用的执行过程如下:

  • 攻击者将触发一个特权进程连接到其控制下的恶意服务器。这与之前的 Potato 漏洞利用类似,即非特权用户可以强制操作系统创建使用特权用户(通常是 SYSTEM)的连接。
  • 恶意服务器将为特权连接实例化一个安全上下文 A,但不会立即发回。相反,攻击者将启动一个恶意客户端,该客户端同时使用其当前的非特权凭据发起一个针对本地 SMB 服务器(Windows 文件共享)的连接。客户端将发送 Type1 消息以发起连接,服务器将回复一个带有新安全上下文 B 的 ID 的 Type2 消息。
  • 攻击者将交换两个连接的上下文 ID,使特权进程接收到 SMB 服务器连接的上下文,而不是其自身的上下文。结果,特权客户端将其用户(SYSTEM)与攻击者创建的 SMB 连接的安全上下文 B 关联起来。因此,攻击者的客户端现在可以以 SYSTEM 权限访问任何网络共享!

通过拥有对 SMB 共享的特权连接,攻击者可以在目标机器的任何位置读取或写入文件。虽然这不允许我们直接对易受攻击的机器运行命令,但我们将结合不同的攻击向量来实现这一目标。

请注意,该漏洞存在于 NTLM 协议中,而非 SMB 服务器,因此,理论上相同的攻击向量可用于任何通过 NTLM 进行认证的服务。但在实践中,选择攻击协议时必须处理一些注意事项。PoC 使用 SMB 服务器来避免针对其他协议类似攻击向量的某些额外保护,甚至实现了一个快速绕过方法,使漏洞利用能够在 SMB 服务器上工作。 原始漏洞利用作者的帖子 - (https://decoder.cloud/2023/02/13/localpotato-when-swapping-the-context-leads-you-to-system/)

到目前为止,我们使用 LocalPotato 将任意文件写入目标机器。要获得特权 shell,我们仍然需要弄清楚如何利用任意写入来运行命令。

最近,发现了另一个权限提升向量,攻击者可以劫持一个缺失的 DLL,以 SYSTEM 权限运行任意命令。这个向量的唯一问题是攻击者需要将一个 DLL 写入系统的 PATH 目录中才能触发它。默认情况下,Windows PATH 只包含仅特权账户可以写入的目录。虽然可能会发现某些机器因安装特定应用程序而修改了 PATH 变量并使其容易受到攻击,但该攻击向量仅适用于特定场景。将此攻击与 LocalPotato 结合可以克服这一限制,并实现一个完全可行的权限提升漏洞利用。

StorSvc 和 DLL 劫持 正如 BlackArrowSec (https://github.com/blackarrowsec/redteam-research/tree/26e6fc0c0d30d364758fa11c2922064a9a7fd309/LPE via StorSvc) 所发现的,攻击者可以向“StorSvc”服务提供的“SvcRebootToFlashingMode”方法发送一个 RPC 调用,这反过来会触发尝试加载一个名为“SprintCSP.dll”的缺失 DLL。 如果你不熟悉 RPC,可以将其视为一个公开函数的 API,以便可以远程使用它们。在这种情况下,StorSvc 服务公开了 SvcRebootToFlashingMode 方法,任何可以访问该机器的人都可以调用它。 由于 StorSvc 以 SYSTEM 权限运行,在 PATH 中的某个位置创建 SprintCSP.dll 将在调用 SvcRebootToFlashingMode 时被加载。

编译漏洞利用 漏洞利用链接 - (https://github.com/decoder-it/LocalPotato) 要使用此漏洞利用,你需要首先编译提供的两个文件:

  • SprintCSP.dll:这是我们将要劫持的缺失 DLL。我们需要更改命令以运行反向 shell。
  • RpcClient.exe:此程序将触发对 SvcRebootToFlashingMode 的 RPC 调用。根据你针对的 Windows 版本,你可能需要稍微编辑漏洞利用的代码,因为不同的 Windows 版本使用不同的接口标识符来公开 SvcRebootToFlashingMode。 两个文件的项目可以在“LPE via StorSvc”目录中找到。

让我们从处理“RpcClient.exe”开始。如前所述,我们需要根据目标机器的 Windows 版本更改漏洞利用。为此,我们需要更改“LPE via StorSvc\RpcClient\RpcClient\storsvc_c.c”的前几行,以便选择正确的操作系统。这将设置漏洞利用使用正确的 RPC 接口标识符。现在代码已更正,让我们打开一个开发者命令提示符并通过运行以下命令构建项目: 命令: C:\LPE via StorSvc\RpcClient> msbuild RpcClient.sln C:\LPE via StorSvc\RpcClient> move x64\Debug\RpcClient.exe C:\Users\user\Desktop\ (编译后的可执行文件将出现在你的桌面上。)

现在要编译“SprintCSP.dll”,我们只需要修改“C:\LPE via StorSvc\SprintCSP\SprintCSP\main.c”中的“DoStuff()”函数,使其执行一个授予我们机器特权访问权限的命令。为简单起见,我们将使 DLL 将当前用户添加到 Administrators 组。我们也可以从目标机器获取一个反向 shell。 我们现在通过运行以下命令编译 DLL,并将结果移回桌面: 命令: C:\LPE via StorSvc\SprintCSP> msbuild SprintCSP.sln C:\LPE via StorSvc\SprintCSP> move x64\Debug\SprintCSP.dll C:\Users\user\Desktop\

我们现在准备启动漏洞利用。确保你有“LocalPotato.exe”漏洞利用程序、“RpcClient.exe”和“SprintCSP.dll”文件。

  • 让我们首先验证当前用户是否不是 Administrators 组的成员。
  • 要成功利用“StorSvc”,我们需要将“SprintCSP.dll”复制到当前 PATH 中的任何目录中。我们可以通过运行以下命令来验证 PATH: C:> reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" -v Path
  • 我们将针对 %SystemRoot%\system32 目录,该目录扩展为“C:\windows\system32”。不过,你应该可以使用任何目录。
  • 通过使用 LocalPotato,即使我们使用非特权用户,也可以将 SprintCSP.dll 复制到 system32: C:\Users\user\Desktop> LocalPotato.exe -i SprintCSP.dll -o \Windows\System32\SprintCSP.dll
  • 放置好 DLL 后,我们现在可以运行“RpcClient.exe”来触发对“SvcRebootToFlashingMode”的调用,从而有效执行 DLL 中的有效负载。 C:\Users\user\Desktop> RpcClient.exe
  • 要验证漏洞利用是否按预期工作,我们可以检查我们的用户现在是否是 Administrators 组的成员。 C:> net user user

检测与缓解

检测 现在我们已经了解了 localpotato 漏洞利用的工作原理以及如何将其与 StorSrv 服务链起来以 SYSTEM 身份执行代码,是时候看看如何在系统中检测此活动以及如何防止此类攻击了。

YARA 规则:由于此攻击涉及在命令行终端中带参数运行可执行文件,两种常见的检测方法是使用模式匹配工具 YARA 检测文件模式,并检查此黑客工具 localpotato.exe 执行产生的事件。由于攻击使用名为 localpotato.exe 的黑客工具,我们可以创建一个 YARA 规则来检测系统中是否存在此工具,方法是使用 YARA 或其他检测工具(如 THOR)扫描主机。 (YARA 规则已附加到此仓库中,此最小规则在 localpotato 可执行文件中查找常见字符串模式。)

Sigma 规则:SIGMA 是一种通用签名语言,用于根据事件日志中发现的模式编写检测规则。为了在网络中检测 localpotato,预计需要启用集中式日志监控。以下 SIGMA 规则取自 SIGMA 官方仓库 (https://github.com/SigmaHQ/sigma/blob/master/rules/windows/process_creation/proc_creation_win_hktl_localpotato.yml)。

  • 检测 LocalPotato(规则已附加到仓库中)
  • 检测 Storsvc 和 SprintCSP.dll 劫持 我们了解到 localpotato 漏洞与 Storsvc 结合以劫持 SprintCSP.dll 并以 SYSTEM 身份执行。以下附加的 SIGMA 规则取自官方 GitHub,可用于检测此活动。

我们可以使用这些 sigma 规则转换为现有的检测/监控工具,并搜索事件日志以搜寻潜在的攻击。

缓解

  • 补丁更新:localpotato 漏洞利用针对的是 Windows 操作系统中的一个漏洞。确保所有系统都安装了最新的安全补丁,以防止攻击者利用此漏洞。此漏洞不影响已修补的操作系统。
  • 最小权限原则:防止攻击者利用 localpotato 漏洞利用的一种方法是实施最小权限原则。这意味着限制用户仅访问执行其工作职能所需的资源。通过这样做,攻击者不太可能获得执行漏洞利用所需的提权。
  • 监控可疑活动:使用“Splunk”等工具监控网络上的可疑活动。寻找 localpotato 攻击的迹象,例如异常进程活动或尝试执行恶意代码。
下载工具