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

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

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

订阅源联系隐私© 2026 Kitploit

工具目录

分类

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

pfsense-limiter-number

pfSense CE 2.9.0-DEVELOPMENT - 高危 - 远程 - RCE - limiter number dnctl

查看仓库
112天前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Abraxas Labs - pfsense-limiter-number

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

pfsense-limiter-number

类别: RCE 可达性: 远程

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

流量整形限流器在编辑时会发出一个隐藏的 number 字段。创建操作会用 dnpipe_find_nextnumber() 覆盖该数字。编辑操作则不会。validate_input 从不检查 number。GetNumber() 被不加引号地拼接进 dnctl pipe|sched|queue delete。PHP 的 mwexec 是 /bin/sh -c。所需权限是 page-firewall-trafficshaper-limiter,而非 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) 限流器 number
认证具有 page-firewall-trafficshaper-limiter 的 WebGUI 会话
许可证GNU Affero GPL v3.0
实验环境仅 127.0.0.1

我固定了公共 master 分支 9363ac5。实验环境是一个固定了 ReadConfig / SetNumber / delete_queue 的 PHP gadget。回环地址 127.0.0.1:18840。

攻击者能做什么

方法汇聚点权限
创建一个限流器,POST 保存时携带攻击者控制的 number,然后删除该限流器mwexec("/sbin/dnctl pipe delete " . $this->GetNumber())(shaper.inc:3820)完整性(实验已验证): root shell。实验:编辑-删除写入了见证文件(edit-delete-exec=yes)。创建覆盖和 apply-file 路径均未写入。
同样的 root shell主机文件系统侦察(推断): config.xml、密钥。
Root shell 或对攻击者数字执行 dnctldummynet可用性(推断): 限流器 / dummynet 中断。

实验已验证 vs 推断: 创建覆盖(无见证)、apply-file 路径(对文件执行 dnctl,无见证)以及编辑-删除执行(有见证)均已实验验证。文件系统侦察是从 root PHP-FPM 推断而来。

前提条件: 具有 page-firewall-trafficshaper-limiter 的 WebGUI 会话。POST 保存需要 CSRF。删除是 GET action=delete。

保持关闭的相邻攻击面

攻击面实验
创建路径dnpipe_find_nextnumber() 覆盖,create-overwrites=yes
应用路径对 /tmp/rules.limiter 执行 dnctl,文件名不受用户控制,apply-file=yes
限流器名称字符集^[a-zA-Z0-9_-]+$
未认证关闭
Diagnostics: Command除非同时被授予,否则保持关闭

进入 /tmp/rules.limiter 的 AQM 参数是额外的 dummynet 语言,而非此遗留问题。

实验环境

cd lab
./run.sh

回环地址 127.0.0.1:18840。Compose 项目 pfsense-limiter-number。镜像标签 pfsense-limiter-number:2.9.0-dev。见证 PFSENSE-LIMITER-NUMBER-WITNESS。最后一行:

SUCCESS PFSENSE-LIMITER-NUMBER create-overwrites=yes apply-file=yes edit-delete-exec=yes PFSENSE-LIMITER-NUMBER-WITNESS

修复方案

在每次 dnctl 之前对 GetNumber() 进行整数强制转换。编辑时忽略 POST 的 number,或对照实时 dummynet id 进行范围检查。创建操作已经会覆盖;让编辑操作也这样做。

参考资料

  • github.com/pfsense/pfsense 9363ac5b8651a1c7a333180425ce7719070f95f9
  • shaper.inc delete_queue / GetNumber
  • firewall_shaper_vinterface.php
  • CWE-78
下载工具