abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · pfsense-separator-color-xss
类别: XSS 可达性: 远程
pfSense CE 2.9.0-DEVELOPMENT (9363ac5) - pfsense.org
display_separator() 将 $separator['color'] 拼接进 class="...",未做编码。order-store 复制 POST separator,未对 color 做白名单校验。文本经过 htmlspecialchars 处理。
| 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 or page-firewall-nat-portforward order-store 权限的 WebGUI 会话 |
| 许可证 | GNU Affero GPL v3.0 |
| 实验环境 | 仅 127.0.0.1 |
我锁定了公共 master 分支 9363ac5。实验环境是针对该锁定版本 sink 的 PHP gadget,回环 HTTP 监听 127.0.0.1:19160。
系列文章:https://abraxaslabs.tech/research/pfsense-ce-leftovers
| 方法 | Sink | 权限 |
|---|---|---|
| POST firewall_rules.php order-store separator color | display_separator class="...{$separator['color']}..." | 完整性: 实验已验证:在三处插值中,引号突破在 class= 中为原始输出。NAT 重排序是同一个 sink。 |
| 同一遗留点 | 同一 sink | 侦察: 推断:GUI 源中的存储型 XSS。 |
| 同一遗留点 | 同一 sink | 可用性: 未展示。 |
需要: page-firewall-rules or page-firewall-nat-portforward order-store。除非另有说明,POST 受 CSRF-magic 保护。WebGUI PHP-FPM 以 root 运行。
需要: page-firewall-rules or page-firewall-nat-portforward order-store。除非另有说明,POST 受 CSRF-magic 保护。WebGUI PHP-FPM 以 root 运行。除非另有说明,POST 受 CSRF-magic 保护。WebGUI PHP-FPM 以 root 运行。
文本编码。UI 颜色 bg-info/danger/success/warning。字符串行辅助 JS 不匹配 row/0。
除非该页面也被授权,否则没有 Diagnostics: Command。
cd lab
./run.sh
回环 127.0.0.1:19160。Compose 项目 pfsense-separator-color-xss。见证 PFSENSE-SEPARATOR-COLOR-XSS-WITNESS。仅回环:127.0.0.1:19160。Compose 项目 pfsense-separator-color-xss。见证 PFSENSE-SEPARATOR-COLOR-XSS-WITNESS。针对锁定代码行的 PHP gadget。运行结束后栈会被拆除。
最后一行:
SUCCESS PFSENSE-SEPARATOR-COLOR-XSS control-class=yes trigger-unescaped=yes text-encoded=yes string-row-closed=yes nat-same-sink=yes PFSENSE-SEPARATOR-COLOR-XSS-WITNESS
对 separator color 做白名单校验。在 class= 中使用 htmlspecialchars。
9363ac5b8651a1c7a333180425ce7719070f95f9