abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · pfsense-wol-get-all
类别: CSRF 可达性: 远程
pfSense CE 2.9.0-DEVELOPMENT (9363ac5) - pfsense.org
services_wol.php 仍然存在 $_REQUEST['wakeall'] 以及 href="services_wol.php?wakeall=true",且未使用 usepost。#16961 在此公开代码树上仅为备注。
| ID | 暂无 CVE |
| 类别 | CSRF |
| 可达性 | 远程(除非另有说明,需已认证 WebGUI) |
| CWE | CWE-352 |
| CVSS | 中危:4.3 CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:N |
| 产品 | pfSense CE |
| 受影响版本 | 2.9.0-DEVELOPMENT (9363ac5b8651a1c7a333180425ce7719070f95f9) |
| 认证 | 具有 page-services-wakeonlan (session; GET mutator) 的 WebGUI 会话 |
| 许可证 | GNU Affero GPL v3.0 |
| 实验环境 | 仅 127.0.0.1 |
我固定了公开 master 9363ac5。实验环境是固定代码行对应 sink 的 PHP gadget,在 127.0.0.1:19300 上使用回环 HTTP。
系列文章:https://abraxaslabs.tech/research/pfsense-ce-leftovers
| 方法 | Sink | 权限影响 |
|---|---|---|
| GET services_wol.php?wakeall=true | 对每个已存储 MAC 调用 send_wol() | 完整性: 实验证明:GET ?wakeall=true 为两个已存储 MAC 发送了 wol。不带 wakeall 的 CONTROL GET 未发送任何内容。 |
| 同一遗留问题 | 同一 sink | 侦察: 无。 |
| 同一遗留问题 | 同一 sink | 可用性: 实验证明:会唤醒已存储的 WOL 目标。 |
需要: page-services-wakeonlan (session; GET mutator)。除非另有说明,POST 上启用 CSRF-magic。WebGUI PHP-FPM 以 root 运行。
需要: page-services-wakeonlan (session; GET mutator)。除非另有说明,POST 上启用 CSRF-magic。WebGUI PHP-FPM 以 root 运行。除非另有说明,POST 上启用 CSRF-magic。WebGUI PHP-FPM 以 root 运行。
无会话 cookie 时未认证。SameSite=Strict 仍适用于来自外部站点的 CSRF。
除非该页面也被授予权限,否则无 Diagnostics: Command。
cd lab
./run.sh
回环 127.0.0.1:19300。Compose 项目 pfsense-wol-get-all。见证 PFSENSE-WOL-GET-ALL-WITNESS。仅回环:127.0.0.1:19300。Compose 项目 pfsense-wol-get-all。见证 PFSENSE-WOL-GET-ALL-WITNESS。固定代码行对应的 PHP gadget。运行后栈会拆除。
最后一行:
SUCCESS PFSENSE-WOL-GET-ALL control-no-packets=yes trigger-wake-all-get=yes PFSENSE-WOL-GET-ALL-WITNESS
wakeall 仅允许 POST。在 Wake All 链接上使用 usepost。
9363ac5b8651a1c7a333180425ce7719070f95f9