在 IPFire 2.29 的基于 Web 的防火墙界面 (firewall.cgi) 中发现的存储跨站点脚本 (XSS) 缺陷。
该漏洞被跟踪为 CVE-2025-50975,允许任何经过身份验证的管理员将持久性 JavaScript 注入防火墙规则参数。
存储后,当其他管理员加载规则页面时,有效负载会自动执行,这可能导致会话劫持、界面内未经授权的作,甚至更深层次的网络透视。
Key Takeaways 1. IPFire 2.29’s firewall.cgi enables admins to inject persistent JavaScript. 2. Allowing session hijacking, unauthorized actions, or further internal pivoting. 3. Upgrade; enforce input sanitization, applying strict least-privilege access.
存储的 XSS 漏洞
根据该报告,IPFire 的防火墙管理 CGI 脚本在将多个用户提供的参数呈现到 HTML 响应中之前无法清理它们。
受影响的字段包括 PROT、SRC_PORT、TGT_PORT、dnatport、key、ruleremark、src_addr、std_net_tgt 和 tgt_addr。
具有高权限 GUI 访问权限的攻击者可以制作恶意规则条目,例如:
在 ruleremark 参数中添加有效负载:
提交后,JavaScript 代码段将存储在防火墙规则集中。当任何管理员随后查看 https://<IPFire-host>:444/cgi-bin/firewall.cgi 时,该脚本将在其浏览器上下文中执行。
这种简单而强大的漏洞利用除了有效的凭据之外不需要任何社会工程,而且其复杂性相对较低。
风险因素 | 详 |
受影响的产品 | IPFire 2.29,特别是firewall.cgi接口 |
冲击 | 持久性 JavaScript 注入(存储 XSS)、未经授权的接口作 |
利用先决条件 | 对防火墙 CGI Web GUI 的经过身份验证的管理员访问权限 |
CVSS 3.1 分数 | 未指定 |
缓解措施
攻击的演示利用了 https://192.168.124.92:444/cgi-bin/firewall.cgi 的测试实例,其中 GIF 演练演示了有效负载注入和会话 cookie 泄露。
由于该缺陷在于缺少多个参数的 HTML 转义,因此多管理员环境中的 IPFire 部署尤其面临风险。
为了缓解此问题,所有firewall.cgi参数都必须通过 HTML 转义或通过白名单例程传递。
IPFire 维护者发布了 2.29.1 版本,它为 PROT、SRC_PORT、TGT_PORT、dnatport、key、ruleremark、src_addr、std_net_tgt 和 tgt_addr 实现了适当的环境卫生。
限制管理 GUI 对受信任运营商和网络的访问,并部署严格的 CSP 标头以限制防火墙界面内的内联脚本执行。
虽然 IPFire 2.29 中存在其他 XSS 变体,但这种存储的 XSS 路径代表了实际利用的最直接的向量。
管理员应优先修补和强化其防火墙管理界面,以防止恶意 JavaScript 持久存在和随后的内部网络泄露。