CVE-2022-25372:Pritunl VPN 客户端中的本地权限提升

2022-04-12 10:37:45 浏览数 (1)

Pritunl 漏洞概述

Pritunl VPN 客户端服务容易受到在 Windows 上以 SYSTEM 身份写入的任意文件的攻击。这是由于 Pritunl ProgramData 文件夹的目录权限不安全。由于特权 Pritunl VPN 服务以 SYSTEM 身份执行命令而无需指定可执行文件的完整路径,因此可以利用任意文件写入进行完全特权升级。

其影响是将权限提升到 Windows 上的 SYSTEM。

受影响的产品摘要

供应商:Pritunl

产品:Pritunl VPN Client

确认漏洞版本:1.2.3019.52

固定版本:1.2.3019.52a

产品链接:https://client.pritunl.com/#install确认漏洞平台:Windows

任意文件写入系统技术细节

用户将 V** 配置文件导入 Pritunl VPN Client 后,会在“%APPDATA%pritunlprofiles[profile_ID].ovpn”中写入一个文件。当用户尝试连接到配置文件时,VPN 配置文件会清除危险的OpenVPN 指令,然后由Pritunl VPN 服务写入“%PROGRAMDATA%Pritunl[profile_ID].ovpn”。写入文件后,Pritunl VPN 服务充当 openvpn.exe 可执行文件的包装器,并以 SYSTEM 身份执行 OpenVPN,在“–config”参数中提供经过清理的配置文件。

由于默认情况下任何用户都可以在 %PROGRAMDATA%Pritunl* 中创建新文件,因此可以使用匹配的配置文件 ID 并在尝试连接到profile Pritunl VPN 服务最终将使用修改后的配置文件执行 openvpn.exe。

即使 openvpn.exe 使用“–security-script 1”标志执行,阻止执行外部命令,这仍然允许使用“log”OpenVPN 指令,它将日志输出作为 SYSTEM 写入任何指定的文件,并且它可以控制日志输出的部分内容。

导入名为“privesc”的配置文件后,可以使用以下 PowerShell 命令并在循环运行时重复单击 privesc 配置文件上的“连接”来完成。

代码语言:javascript复制
$profile_id = (( Select - String '{"name":"privesc"' $env : APPDATA pritunl profiles* ) .filename )。拆分('。' )[ 0 ];而(1 ){ “client`ntls-client`ndev TUN`nlog`” C :\程序文件(x86 )\ Pritunl \ipconfig 。bat `"` nath -用户- pass `nca `"INJECTED CONTENT`"" | 添加内容“       ProgramDataPritunl$profile_id "}

利用文件写入实现完全权限提升

可以利用以 SYSTEM 身份写入的任意文件通过以下方式获得以 SYSTEM 身份执行的命令。

每次使用 Pritunl VPN Client 进行连接尝试时,以 SYSTEM 身份运行的 Pritunl VPN 服务都会调用“ipconfig”命令。执行“ipconfig”的命令行是在没有指定可执行文件的完整路径的情况下完成的。由于此命令是从“C:Program Files {x86)Pritunl”的工作目录执行的,因此可以利用上面的任意文件写入漏洞将命令写入“C​​:Program Files {x86)Pritunl ipconfig.bat”。然后,通过尝试使用 Pritunl VPN 客户端再次连接,该批处理文件将作为 SYSTEM 执行。

结论

披露时间表

虽然这是我们在 V** 客户端中的众多发现之一(更多即将发布),但这是唯一一个开源的。

这也是一个很好的提醒,虽然开源软件确实提供了透明度优势,但它并不是安全的灵丹妙药。

感谢 Zachary Huff 和 Pritunl 团队在披露后提供的快速补丁。

0 人点赞