这是单脚本版本。原始编译版 C++ PoC 位于 legacy 分支。感谢 John Hammond 的建议,请订阅他!

PoC 视频: YouTube
John Hammond 的解析: YouTube
致意 @MSNIGHTMARE2000 带来的灵感 - 请给他一份工作并给他发邮件!
感谢 Tookie、Hazetick、belogen 和 bet3rd 成为最铁的哥们。
我还在等我们的游戏局 lusilly •`_´•
BrokenPipe 演示了通过 Steam 客户端服务从标准 Windows 账户提升至 NT AUTHORITY\SYSTEM 的本地权限提升。该概念验证会启动一个 SYSTEM 命令提示符,且不会请求管理员凭据或显示 UAC 提示。
NT AUTHORITY\SYSTEM 身份运行。whoami /user 返回了本地系统 SID,S-1-5-18。Steam 客户端服务(steamservice.exe)始终以 SYSTEM 身份运行,它接受调用方控制的安装根目录,而该目录并不在真正由 Valve 签名的安装脚本 VDF 的签名覆盖范围内。BrokenPipe 利用这一签名覆盖缺口,使特权服务从重定位路径以 SYSTEM 身份执行所包含的启动器。它不会伪造、修改或绕过 VDF 签名。
流程:
Establish IPC connection to Steam Client Service (no admin needed)
|
v
IClientInstallUtils::AddInstallScriptToWhiteList
|
| genuine Valve-signed VDF
| caller-controlled installation root <-- flaw is here
| relocated launcher becomes whitelisted
v
IClientInstallUtils::RunInstallScript
|
| service processes the run VDF
| whitelisted launcher is selected
v
Steam Client Service launches the executable as SYSTEM
|
v
the relocated launcher.exe now runs as NT AUTHORITY\SYSTEM
该证明已在最新版本的 Windows 10 和 Windows 11 x64 上,针对当前版本的 Steam 10.96.30.42 进行了验证。
无需构建步骤。BrokenPipe 是一个单一的自包含 PowerShell 脚本。由 Valve 签名的正版 VDF 以 base64 形式内嵌,Steam Client Service IPC 客户端是一个内联 C# 类型,因此无需编译或附带任何外部二进制文件。
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\BrokenPipe-PowerShell.ps1
默认情况下,该脚本会复制 C:\Windows\System32\cmd.exe,并让 Steam Client Service 以 SYSTEM 身份启动它。被重新定位的 launcher.exe 能够以 NT AUTHORITY\SYSTEM 身份运行,这本身就是证明(可在任务管理器或 Process Explorer 中确认)。如果 Steam 尚未运行,脚本会先静默启动它。
通过参数将其指向你自己的 payload:
.\BrokenPipe-PowerShell.ps1 -PayloadPath "C:\path\to\payload.exe" -PayloadArguments "your args"
BrokenPipe\
assets\
brokenpipe-system-shell.png
BrokenPipe-PowerShell.ps1
LICENSE
README.md
一切都在 BrokenPipe-PowerShell.ps1 中:它建立到 Steam Client Service 的共享内存 IPC,将内嵌的、由 Valve 签名的 VDF 针对调用方控制的安装根目录加入白名单,然后以 SYSTEM 身份运行重定位后的启动器。
这是什么?
一个标准用户 -> SYSTEM 本地权限提升。
它是如何工作的?
全都在 BrokenPipe-PowerShell.ps1 里,一个文件,从头读到尾即可。
它是不是没用?
对你来说,也许吧;对别人来说,大概不是。
它有什么危害?
你获得了 SYSTEM 权限,它比 Administrator(你右键单击并选择的那一档)高一级,比 TRUSTEDINSTALLER 低一级,而你一开始甚至都不是管理员。如果你不理解这一点,去 Google 一下(或者问问你身边友好的 LLM,比如 Grok、ChatGPT 或 Siri,笑死)。
为什么?
因为 VALVE 从三月份就已经知道这件事了,他们一直没有修复,仅仅是因为我不关心 Steam 或任何 VALVE 游戏,尤其是当 CS2 充斥着作弊者和漏洞利用者的时候。他们应该修复它,并调查那份 5 个月前的报告。
某个关于标准管理员安装的愚蠢问题或别的什么,某人提出的问题让我损失了一点脑细胞……
就连你的杀毒软件在安装时也需要管理员权限,首次安装 Steam 当然也需要管理员权限。之后,即使对标准用户,它也仅以 SYSTEM 身份运行该服务。别问我,问 VALVE 去。
最初的发布版本是一个编译好的 C++ 启动器(BrokenPipe.exe),它会解包一个内嵌的交互式实验环境,其中包括一个负责编排完全交互式 SYSTEM 控制台的代理。那个版本位于 legacy 分支上。本分支则是将同一漏洞提炼为单个 PowerShell 脚本,无需构建步骤,也没有内嵌二进制文件。
本项目仅供授权的安全研究和防御性验证使用。请仅在你拥有或已获得明确评估许可的系统上进行测试。