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

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

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

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
opnsense-firmware-mirror-sed — OPNsense 26.7.6 - 高危 - 远程 - 权限残留 - 自定义固件镜像 sed 跳过 pkg 指纹 | Kitploit
工具/GitHubGitHub/abraxas/opnsense-firmware-mirror-sed
权限提升漏洞分析代码分析漏洞利用Web应用程序漏洞利用安全虚拟化渗透测试供应链安全论文与研究

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
实验室与实践
GitHubabraxas/opnsense-firmware-mirror-sed

opnsense-firmware-mirror-sed

OPNsense 26.7.6 - 高危 - 远程 - 权限残留 - 自定义固件镜像 sed 跳过 pkg 指纹

查看仓库
15天前尚未审核

Abraxas Labs - opnsense-firmware-mirror-sed

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  opnsense-firmware-mirror-sed

opnsense-firmware-mirror-sed

类别: 签名跳过 可达性: 远程

OPNsense 核心 26.7.6 (a842fe48) - opnsense.org

系统:固件 set 提交自定义 mirror / flavour。核心 FILTER_SANITIZE_URL 保留 \|#;"。opnsense-update -m / -n 将该字符串插值到 OPNsense.conf 上的 sed 中,并可将 signature_type 从 "fingerprints" 翻转为 "none"。随后以 root 身份从攻击者 URL 执行 pkg install。设置页面提供仍签名的 OPNsense 包的自定义镜像。它没有“禁用签名”控件。权限为 page-system-firmware-manualupdate,而非 page-all。

Sed 位于 pin 之外的 opnsense-update 中。此 pin 上的核心是未净化的字段加上 -m 传递。实验室使用 GNU sed 重新运行该 s||| 程序文本。

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

ID暂无 CVE
类别签名跳过
可达性远程(已认证 WebGUI / API)
CWECWE-74 / CWE-347
CVSS高:7.2 CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H
产品OPNsense core
受影响26.7.6 (a842fe48c21288d11a422cb944678e8eb308becf) 固件 set 自定义镜像
认证具有 page-system-firmware-manualupdate 的 WebGUI 会话或 API 密钥
许可证GNU Affero GPL v3.0
实验室仅 127.0.0.1

我固定了标签 26.7.6 剥离 a842fe48。实验室是一个 PHP 小工具,由 FILTER_SANITIZE_URL 加上 opnsense-update 的 mod_mirrorurl sed 组成,回环 HTTP 位于 127.0.0.1:18860。PR:H 是因为固件页面已被允许安装已签名包。如果该页面被视为 PR:L,则评分为 8.8。

攻击者可以做什么

方法汇聚点权限
对带有 | 的自定义镜像执行 FILTER_SANITIZE_URL,然后执行 opnsense-update 风格的 sed重写 OPNsense.conf完整性(实验室验证): signature_type 为 "none"。对照镜像保持 "fingerprints"。实验室:sanitize-keeps-pipe=yes signature_type=none fingerprints-control=yes。
同一 set,plugins 字段setAction 丢弃 plugins否定(实验室验证): plugins 在保存前被丢弃。
然后 POST /api/core/firmware/install/<pkg>以 root 身份从攻击者 URL 执行 pkg install -y完整性(推断): 以 root 身份安装未签名包。固件页面已安装已签名包;此遗留项即为验证跳过。实验室中没有未签名载荷。
然后 POST /api/core/firmware/update 或 /upgrade以 root 身份执行 opnsense-update -pt / -u完整性(推断): 基础/内核集跳过验证(DO_INSECURE)。
GET /api/core/firmware/info、/running、/upgradestatus固件 API侦察(推断): 包列表、更新日志、镜像选项。为此 ACL 的预期用途。
POST /api/core/firmware/reboot、/poweroff、/remove/<pkg>configd 固件操作可用性(推断): 重启/关机/移除。为此 ACL 的预期用途,而非遗留项。

实验室验证 vs 推断: sanitize 保留 | 且 signature_type 为 none 是实验室 SUCCESS。实时 pkg install 未签名包是推断的。小工具,而非完整的 OPNsense FreeBSD VM。没有未签名包载荷。

要求: 已登录用户或该用户的 Local API 密钥,具有 page-system-firmware-manualupdate 且没有 page-all。会话 POST 上的 CSRF。非未认证。非仅仪表盘。

保持关闭的相邻攻击面

攻击面实验室
未认证固件401
仅仪表盘403
对照镜像 https://pkg.opnsense.orgsignature_type 保持 "fingerprints"
插件名遍历filter_pkgname
变更日志获取仍为 opnsense-verify
save() 上的 user-config-readonlythrowReadOnly()
无验证跳过的原版 HTTP 镜像传输 MITM;仍需要指纹
XMLRPC 固件仅版本字符串

无未认证。无仅仪表盘。变更日志仍签名。

实验室

cd lab
./run.sh

回环 127.0.0.1:18860。Compose 项目 opnsense-firmware-mirror-sed。见证 OPNSENSE-FIRMWARE-MIRROR-SED-WITNESS。最后一行:

SUCCESS opnsense-firmware-mirror-sed sanitize-keeps-pipe=yes signature_type=none fingerprints-control=yes OPNSENSE-FIRMWARE-MIRROR-SED-WITNESS

Root 启动器:python3 opnsense-firmware-mirror-sed-Abraxas-Labs.py。

实验室中使用的攻击镜像形态(仅见证,无未签名 pkg):

https://example.invalid/|;/signature_type/s/"fingerprints"/"none"/;#

修复

拒绝不是 URL 的自定义镜像。在 opnsense-update -m / -n 之前剥离 sed 元字符(|、;、#、"),或将 URL 作为文件传递,使 sed 永远不会将其视为程序文本。保持 signature_type: "fingerprints",除非有单独的、经过审计的控件关闭验证。不要让固件 set 将指纹重写为 "none"。

参考

  • github.com/opnsense/core a842fe48c21288d11a422cb944678e8eb308becf
  • FirmwareController.php setAction FILTER_SANITIZE_URL
  • scripts/firmware/repos/OPNsense.php opnsense-update -sd -m
  • OPNsense.conf.shadow.in 原版 signature_type: "fingerprints"
  • Pin 之外的汇聚点:opnsense-update mod_mirrorurl(在 url: 行上的 s\|\|)
  • CWE-74 / CWE-347
下载工具