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

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

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

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
opnsense-tunables-loader — OPNsense 26.7.6 - 高危 - 远程 - 配置行注入 - tunables 加载器 | Kitploit
工具/GitHubGitHub/abraxas/opnsense-tunables-loader
漏洞分析漏洞利用Web应用程序漏洞利用配置审计安全虚拟化渗透测试实验室与实践
GitHubabraxas/opnsense-tunables-loader

opnsense-tunables-loader

OPNsense 26.7.6 - 高危 - 远程 - 配置行注入 - tunables 加载器

查看仓库
12天前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Abraxas Labs - opnsense-tunables-loader

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  opnsense-tunables-loader

opnsense-tunables-loader

类别: 配置行注入 可达性: 远程

OPNsense 核心 26.7.6 (a842fe48) - opnsense.org

System: Advanced: Tunables 仍会将名称/值插值到 /boot/loader.conf。这是 GHSA-fq94 的遗留同类问题。Tunables.xml 中的 tunable / value 是裸 TextField(允许换行)。system_login_configure() 写入 {$param}="{$value}"。Tunables 重新配置还会重启 login。实时 sysctl(8) 会经过 shell_safe 以及 OID 过滤,因此该环节不是 shell 注入。遗留问题是在下次启动时多出的 loader 指令。权限是 page-system-advanced-sysctl,而非 page-all。

此 GitHub 包在协调披露之前保持私有。

ID暂无 CVE
类别配置行注入
可达性远程(已认证 WebGUI / API)
CWECWE-93
CVSS高危:8.1 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
产品OPNsense core
受影响26.7.6 (a842fe48c21288d11a422cb944678e8eb308becf) System: Advanced: Tunables
认证具有 page-system-advanced-sysctl 的 WebGUI 会话或 API 密钥
许可证GNU Affero GPL v3.0
实验环境compose exec gadget(hunt slot 18850)

我固定了标签 26.7.6 的提交 a842fe48。实验环境是一个 PHP gadget,用于复现固定版本 system_login_configure() 的插值。Compose 项目为 opnsense-tunables-loader。Hunt slot 18850 属于 18800-18860 gadget 系列;此 compose 文件使用 docker compose exec php,而非发布的 HTTP 绑定。

攻击者能做什么

方法汇聚点权限
Tunables 值包含 CR/LF(hw.usb.no_boot_wait 加上 "\n# witness)在 /boot/loader.conf 中固定 system_login_configure() 额外行完整性(实验证明): 在已闭合的赋值之后,单独一行出现额外的 # OPNSENSE-TUNABLES-LOADER-WITNESS。实验:newline-extra-line=yes。
干净值 1同一写入器否定(实验证明): 单条赋值行,无 witness。实验:clean-value-single-line=yes。
下次启动时相同的额外 loader 行loader init_path / module_path / *_load / vfs.root.mountfrom / console完整性(推断): 下次启动的 loader 会采用攻击者的键。此 gadget 中未重启。
垃圾 loader 行 / 错误的 vfs.root.mountfrom/boot/loader.conf可用性(推断): 启动失败或根错误。
POST /api/core/tunables/searchItemtunables API侦察(推断): 列出 tunables,包括 current/default/type。此 ACL 的预期用途。
对有效 OID 执行实时 sysctl -wset_sysctl + OID 过滤预期页面功能。额外 loader 行是遗留问题。

实验证明 vs 推断: 换行额外 loader 行和干净值单行是实验 SUCCESS。下次启动 loader 应用为推断。是 gadget,而非完整的 OPNsense FreeBSD VM。

要求: 已登录用户或该用户的 Local API 密钥,具有 page-system-advanced-sysctl 且没有 page-all。POST /api/core/tunables/*。会话 POST 需要 CSRF。重新配置会重启 login;rc.reload_all 和启动也会调用 system_login_configure。

保持关闭的相邻攻击面

攻击面实验
实时 sysctl shell 注入shell_safe 加 OID 过滤
干净值单条赋值行
未认证401
没有 page-system-advanced-sysctl 的用户403
user-config-readonlysave() 抛出异常
page-all tunables 管理员设置真实 OID预期行为
GHSA-fq94 已修补的 GUI 文本字段不同的汇聚点;此字段未被点名

无未认证。无实时 sysctl shell。无 Diagnostics: Command。

实验

cd lab
./run.sh

Compose 项目 opnsense-tunables-loader。Witness OPNSENSE-TUNABLES-LOADER-WITNESS。最后一行:

SUCCESS opnsense-tunables-loader newline-extra-line=yes clean-value-single-line=yes OPNSENSE-TUNABLES-LOADER-WITNESS

根启动器:python3 opnsense-tunables-loader-Abraxas-Labs.py。

修复方案

从 tunables 名称和值中剥离 CR/LF 和 ",与 GHSA-fq94 同类。将名称类型设为 OID 掩码,而非裸 TextField。使用无法闭合赋值的辅助函数进行引用。除非是已知 loader 键,否则不要将 tunable 写入 /boot/loader.conf。

参考

  • github.com/opnsense/core a842fe48c21288d11a422cb944678e8eb308becf
  • system.inc system_login_configure loader.conf 插值
  • Tunables.xml 裸 TextField 名称/值
  • 同类问题(其他 GUI 文本字段,非此汇聚点):GHSA-fq94
  • CWE-93
下载工具