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

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

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

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

工具目录

分类

查看所有分类
Loading categories
Potato — Windows 本地权限提升漏洞利用,通过 NBNS 欺骗、伪造 WPAD 代理以及 HTTP 到 SMB 的 NTLM 中继来获取 NT AUTHORITY\SYSTEM 访问权限。 | Kitploit
工具/GitHubGitHub/foxglovesec/potato
权限提升漏洞利用横向移动后渗透利用网络安全渗透测试身份验证红队
GitHubfoxglovesec/potato

Potato

Windows 本地权限提升漏洞利用,通过 NBNS 欺骗、伪造 WPAD 代理以及 HTTP 到 SMB 的 NTLM 中继来获取 NT AUTHORITY\SYSTEM 访问权限。

查看仓库
7451685年前Kitploit 审核通过

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

#Potato Windows 7、8、10、Server 2008、Server 2012 上的权限提升

###工作原理 Potato 利用 Windows 中的已知问题来获取本地权限提升,即 NTLM 中继(具体为 HTTP->SMB 中继)和 NBNS 欺骗。

使用下面概述的技术,未提权用户可以在默认配置下获得对 Windows 主机的“NT AUTHORITY\SYSYTEM”级别访问权限。

该漏洞利用由 3 个主要部分组成,所有这些部分都可以通过命令行开关进行一定程度的配置:

#####1. 本地 NBNS 欺骗器 NBNS 是一种用于名称解析的广播 UDP 协议,常用于 Windows 环境。在渗透测试中,我们经常嗅探网络流量并响应在本地网络上观察到的 NBNS 查询。出于权限提升的目的,我们不能假设能够嗅探网络流量,那么如何实现 NBNS 欺骗呢?

如果我们能够提前知道目标机器(在本例中我们的目标是 127.0.0.1)将向哪个主机发送 NBNS 查询,我们就可以构造一个响应并用 NBNS 响应淹没目标主机(因为它是 UDP 协议)。一个复杂之处在于 NBNS 数据包中的 2 字节字段 TXID 必须在请求和响应中匹配。我们可以通过快速洪泛并遍历所有 65536 个可能值来克服这一点。

如果我们试图欺骗的主机已经有 DNS 记录怎么办?好吧,我们可以以一种有趣的方式强制 DNS 查找失败。使用一种称为“端口耗尽”的技术,我们绑定到每一个 UDP 端口。当你尝试执行 DNS 查找时,它会失败,因为 DNS 回复没有可用的源端口可以到达。

在测试中,这已被证明是 100% 有效的。

#####2. 伪造 WPAD 代理服务器 借助欺骗 NBNS 响应的能力,我们可以将 NBNS 欺骗器指向 127.0.0.1。我们用针对主机“WPAD”或“WPAD.DOMAIN.TLD”的 NBNS 响应数据包淹没目标机器(我们自己的机器),并声称 WPAD 主机的 IP 地址为 127.0.0.1。

同时,我们在 127.0.0.1 上本地运行一个 HTTP 服务器。当它收到对“http://wpad/wpad.dat”的请求时,它会响应类似以下内容:

root@kitploit:~
FindProxyForURL(url,host){
	if (dnsDomainIs(host, "localhost")) return "DIRECT";
	return "PROXY 127.0.0.1:80";}

这将导致目标上的所有 HTTP 流量通过我们运行在 127.0.0.1 上的服务器重定向。

有趣的是,即使由低权限用户执行此攻击,也会影响机器上的所有用户。这包括管理员和系统账户。有关示例,请参见截图“egoldstein_spoofing.png”和“dade_spoofed.png”。

#####3. HTTP -> SMB NTLM 中继 现在所有 HTTP 流量都流经我们控制的服务器,我们可以做诸如请求 NTLM 身份验证之类的事情……

在 Potato 漏洞利用中,所有请求都通过 302 重定向到“http://localhost/GETHASHESxxxxx”,其中 xxxxx 是某个唯一标识符。对“http://localhost/GETHASHESxxxxx”的请求会响应 401 请求 NTLM 身份验证。

NTLM 凭据被中继到本地 SMB 监听器,以创建一个新的系统服务来运行用户定义的命令。此命令将以“NT AUTHORITY\SYSTEM”权限运行。

###使用漏洞利用 目前用法取决于操作系统。

由于 Windows 处理代理设置和 WPAD 文件的方式有些古怪,它有时也有点不稳定。通常当漏洞利用不起作用时,需要让它继续运行并等待。当 Windows 已经有 WPAD 的缓存条目,或者因为未找到 WPAD 而允许直接互联网访问时,可能需要 30-60 分钟才能刷新。有必要让漏洞利用继续运行,并在此时间过去后稍后再次尝试触发它。

此处列出的技术按从最简单到最复杂的顺序排列。列表中后面的任何技术都应该适用于之前的所有版本。每个都包含视频和截图。

#####Windows 7 - 参见 https://www.youtube.com/watch?v=Nd6f5P3LSNM Windows 7 可以通过 Windows Defender 更新机制相当可靠地被利用。

Potato.exe 具有自动触发此机制的代码。只需运行以下命令: Potato.exe -ip <local ip> -cmd <command to run> -disable_exhaust true

这将启动 NBNS 欺骗器,将“WPAD”欺骗为 127.0.0.1,然后检查 Windows Defender 更新。

如果你的网络已经有“WPAD”的 DNS 条目,你可以尝试“-disable_exhaust false”。这应该会导致 DNS 查找失败,并且应该回退到 NBNS。我们已经测试过几次并且它有效

#####Windows Server 2008 - 参见 https://www.youtube.com/watch?v=z_IGPWgL5SY 由于 Windows Server 不附带 Defender,我们需要另一种方法。相反,我们只需检查 Windows 更新。另一个注意事项是,至少在我的域中,Server 2K8 需要 WPAD.DOMAIN.TLD 而不仅仅是 WPAD。以下是示例用法:

Potato.exe -ip <local ip> -cmd <command to run> -disable_exhaust true -disable_defender true --spoof_host WPAD.EMC.LOCAL

成功运行后,只需检查 Windows 更新。如果它没有触发,让漏洞利用继续运行约 30 分钟,然后再次检查。如果仍然不起作用,请尝试实际下载一个更新。

如果你的网络已经有“WPAD”的 DNS 条目,你可以尝试“-disable_exhaust false”。这应该会导致 DNS 查找失败,并且应该回退到 NBNS。我们已经测试过几次并且它有效

#####Windows 8/10/Server 2012 - 参见 https://www.youtube.com/watch?v=Kan58VeYpb8 在最新版本的 Windows 中,Windows Update 似乎可能不再遵循“Internet 选项”中设置的代理设置,或者检查 WPAD。相反,Windows Update 的代理设置使用“netsh winhttp proxy...”控制。

对于这些版本,我们改为依赖 Windows 的较新功能,即“不受信任证书的自动更新程序”。详细信息可在 https://support.microsoft.com/en-us/kb/2677070 和 https://technet.microsoft.com/en-us/library/dn265983.aspx 找到

来自 technet 文章:“Windows Server 2012 R2、Windows Server 2012、Windows 8.1 和 Windows 8 操作系统包含一种自动更新机制,每天下载证书信任列表 (CTL)。”

看来 Windows 的这一部分仍然使用 WPAD,即使 winhttp 代理设置被设置为直接。

在这种情况下,Potato 的用法如下: Potato.exe -ip <local ip> -cmd <cmd to run> -disable_exhaust true -disable_defender true

此时,你需要等待最多 24 小时,或者找到另一种方式来触发此更新。

如果你的网络已经有“WPAD”的 DNS 条目,你可以尝试“-disable_exhaust false”。这应该会导致 DNS 查找失败,并且应该回退到 NBNS。我们已经测试过几次并且它有效

###缓解措施

在 Windows 中启用“身份验证的扩展保护”应该可以阻止 NTLM 中继攻击。

SMB 签名也可能缓解此类攻击,但是要确认这一点还需要我进行更多研究。

###广播外 NBNS 欺骗 使用与 Potato 漏洞利用相同的 NBNS 欺骗技术,我们可以对任何我们能够与其通信 UDP 137 的主机执行 NBNS 欺骗。我们只需要足够快地发送 UDP 数据包,以便在 NBNS 请求超时之前插入有效回复。

可以在 https://www.youtube.com/watch?v=Mzn7ozkyG5g 看到此演示视频

演示实验环境具有以下设置:

PFSense 防火墙 10.0.0.0/24 -> 企业 LAN 10.0.1.0 /24 -> 服务器网络

从企业网络,我们将攻击服务器网络上的机器。

用法:python Responder.py –I eth0 –spoof <target>:<spoof address>:<spoof host>

下载工具