Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

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

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

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
pfsense-carp-vhid — pfSense CE 2.9.0-DEVELOPMENT - 高危 - 远程 - RCE - CARP VHID 残留 | Kitploit
工具/GitHubGitHub/abraxas/pfsense-carp-vhid
漏洞分析漏洞利用Web应用程序漏洞利用后渗透利用渗透测试命令与控制红队实验室与实践
GitHubabraxas/pfsense-carp-vhid

pfsense-carp-vhid

pfSense CE 2.9.0-DEVELOPMENT - 高危 - 远程 - RCE - CARP VHID 残留

查看仓库
1189天前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Abraxas Labs - pfsense-carp-vhid

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  pfsense-carp-vhid

技术文章:https://abraxaslabs.tech/research/pfsense-carp-vhid

pfsense-carp-vhid

类别: RCE 可达性: 远程

pfSense CE 2.9.0-DEVELOPMENT(9363ac5)- pfsense.org

虚拟 IP 编辑功能会从 POST 请求中存储 CARP VHID,且没有进行 1-255 范围校验。Form_Select 的选项仅存在于 HTML 中。CARP 应用时会对 VHID 使用 escapeshellarg。堆叠 IP 别名应用时会在 escapeshellarg 之外插值 vhid {$carpvip['vhid']}。CARP 状态会将同一个已存储的 VHID 插值到双引号包裹的 grep 管道中;分号仍处于引号内,但命令替换仍会在 /bin/sh -c 下执行。所需权限为 VIP 编辑 + 应用,而非 Diagnostics: Command。

ID暂无 CVE
类别RCE
可达性远程(已认证 WebGUI)
CWECWE-78
CVSS高危:8.8 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
产品pfSense CE
受影响版本2.9.0-DEVELOPMENT(9363ac5b8651a1c7a333180425ce7719070f95f9)CARP VHID
认证具备 VIP 编辑 + 应用权限的 WebGUI 会话(状态/小部件为后续触发点)
许可证GNU Affero GPL v3.0
实验环境仅 127.0.0.1

我固定了公共 master 分支 9363ac5。实验环境是一个 PHP 利用链,由固定版本的 interface_carp_configure、堆叠 ipalias 的 mwexec 以及状态 exec 组成。回环地址 127.0.0.1:18830。

攻击者可执行的操作

方法汇聚点权限
使用非整数 VHID POST carp VIP,然后在该 _vip{uniqid} 父对象上应用堆叠 IP 别名mwexec ifconfig ... alias {$gateway} {$vhid}(interfaces.inc:3238)完整性(实验验证): root shell。实验:ipalias-unescaped 写入了见证文件。对同一 VHID 的 CARP 应用未写入任何内容(carp-escaped=yes)。
同一已存储 VHID,然后 GET status_carp.php 或渲染 carp_status.widget.phpexec grep 管道(pfsense-utils.inc:794)完整性(实验验证): 双引号内的命令替换执行并写入了见证文件(status-sink=yes、status-subst=yes)。分号仍处于引号内。小部件触发点可来自另一个 GUI 会话。
同一 root shell主机文件系统侦察(推断): config.xml、密钥。
Root shell 或破坏 ifconfigCARP / 别名设备可用性(推断): 接口 / CARP / 过滤器中断。

实验验证与推断: carp-escaped、ipalias-unescaped 见证文件以及状态命令替换见证文件均为实验验证。文件系统侦察和过滤器中断为基于 root PHP-FPM 的推断。

所需权限: page-firewall-virtualipaddress-edit(保存)和 page-firewall-virtualipaddresses(应用)。状态汇聚点:page-status-carp 或任何带有 CARP 小部件的仪表盘。POST 存在 CSRF。

保持关闭的相邻攻击面

攻击面实验
CARP 应用本身对 VHID 使用 escapeshellarg,carp-escaped=yes
CARP 密码 / advbase / advskew / 子网is_ipaddr / 已转义
未认证关闭
无 HA 凭据时通过 xmlrpc 应用相同对象SA-26_22 跳过列表
Diagnostics: Command除非另行授予,否则保持关闭

实验

cd lab
./run.sh

Loopback 127.0.0.1:18830。Compose 项目 pfsense-carp-vhid。镜像标签 pfsense-carp-vhid:2.9.0-dev。见证 PFSENSE-CARP-VHID-WITNESS。最后一行:

SUCCESS PFSENSE-CARP-VHID carp-escaped=yes ipalias-unescaped=yes status-sink=yes PFSENSE-CARP-VHID-WITNESS

修复方案

在保存时将 VHID 限制为 1-255 的整数范围。在应用堆叠 IP 别名时以及对状态执行 grep 时,对 VHID 使用 escapeshellarg,与 CARP 应用已有的做法保持一致。

参考资料

  • github.com/pfsense/pfsense 9363ac5b8651a1c7a333180425ce7719070f95f9
  • firewall_virtual_ip.inc saveVIP
  • interfaces.inc 堆叠 ipalias mwexec
  • pfsense-utils.inc CARP 状态 grep
  • CWE-78
下载工具