abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · pfsense-rules-if-xss
类别: XSS 可达性: 远程
pfSense CE 2.9.0-DEVELOPMENT (9363ac5) - pfsense.org
当 requirefirewallinterface 开启时,firewall_rules.php 的 GET 参数 if= 会被插值到 value="" 和 iface = "" 中。当 require 关闭时,未知的 if 会被替换为 lan。
| ID | 暂无 CVE |
| 类别 | XSS |
| 可达性 | 远程(除非另有说明,需已认证的 WebGUI) |
| CWE | CWE-79 |
| CVSS | 中危:5.4 CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N |
| 产品 | pfSense CE |
| 受影响版本 | 2.9.0-DEVELOPMENT (9363ac5b8651a1c7a333180425ce7719070f95f9) |
| 认证 | 具有 page-firewall-rules 权限的 WebGUI 会话 |
| 许可证 | GNU Affero GPL v3.0 |
| 实验环境 | 仅 127.0.0.1 |
我固定了公共 master 分支 9363ac5。该实验环境是针对固定版本 sink 的 PHP gadget,在 127.0.0.1:19140 上提供回环 HTTP 服务。
系列文章:https://abraxaslabs.tech/research/pfsense-ce-leftovers
| 方法 | Sink | 权限 |
|---|---|---|
| GET firewall_rules.php?if= | value="" 以及 JS iface = "" | 完整性: 实验环境已证实:在隐藏属性和 JS 字符串中直接突破引号。 |
| 同一遗留问题 | 同一 sink | 侦察: 推断:受害者 csrf-magic / 同源 GUI。Cookie 为 httponly SameSite=Strict。 |
| 同一遗留问题 | 同一 sink | 可用性: 未展示。 |
需要: page-firewall-rules。除非另有说明,POST 需 CSRF-magic。WebGUI PHP-FPM 以 root 运行。
需要: page-firewall-rules。除非另有说明,POST 需 CSRF-magic。WebGUI PHP-FPM 以 root 运行。除非另有说明,POST 需 CSRF-magic。WebGUI PHP-FPM 以 root 运行。
其他 $if href 和 Location 使用了 htmlspecialchars。require 关闭时会替换未知的 if。未认证不适用。
除非该页面也被授予权限,否则不存在 Diagnostics: Command。
cd lab
./run.sh
回环 127.0.0.1:19140。Compose 项目 pfsense-rules-if-xss。见证 PFSENSE-RULES-IF-XSS-WITNESS。仅回环:127.0.0.1:19140。Compose 项目 pfsense-rules-if-xss。见证 PFSENSE-RULES-IF-XSS-WITNESS。针对固定代码行的 PHP gadget。运行结束后栈会被拆除。
最后一行:
SUCCESS PFSENSE-RULES-IF-XSS control-inert=yes trigger-attr=yes trigger-js=yes PFSENSE-RULES-IF-XSS-WITNESS
在两个 sink 中使用 htmlspecialchars($if, ENT_QUOTES)。针对已配置的接口对 if 进行白名单校验。
9363ac5b8651a1c7a333180425ce7719070f95f9