abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · pfsense-dhcpd-conf
类别: 配置注入 影响范围: 远程
pfSense CE 2.9.0-DEVELOPMENT (9363ac5) - pfsense.org
services_dhcpdv4_configure 将 filename "{$sm['filename']}"; 进行插值,且未使用 addslashes。GUI 存储 $_POST['filename'] 时未对引号/换行进行过滤。Kea JSON 属于 SA-26_20 跳过项。
| ID | 暂无 CVE |
| 类别 | 配置注入 |
| 影响范围 | 远程(除非另有说明,需已认证的 WebGUI) |
| CWE | CWE-74 |
| CVSS | 中危:5.4 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:L |
| 产品 | pfSense CE |
| 受影响版本 | 2.9.0-DEVELOPMENT (9363ac5b8651a1c7a333180425ce7719070f95f9) |
| 认证 | 具有 page-services-dhcpserver-editstaticmapping 权限的 WebGUI 会话 |
| 许可证 | GNU Affero GPL v3.0 |
| 实验环境 | 仅 127.0.0.1 |
我固定了公共 master 分支 9363ac5。实验环境是针对固定版本 sink 的 PHP gadget,在 127.0.0.1:19250 上提供回环 HTTP。
系列文章:https://abraxaslabs.tech/research/pfsense-ce-leftovers
| 方法 | Sink | 权限 |
|---|---|---|
| POST services_dhcp_edit.php filename | filename "{$sm['filename']}"; | 完整性: 实验环境已证实:在 chroot 配置中注入额外选项 tftp-server-name。Filename 从未到达 argv。 |
| 同一遗留点 | 同一 sink | 侦察: 未展示。 |
| 同一遗留点 | 同一 sink | 可用性: 推断:dhcpd 解析失败或注入额外 PXE 选项。 |
需要: page-services-dhcpserver-editstaticmapping。除非另有说明,POST 受 CSRF-magic 保护。WebGUI PHP-FPM 以 root 运行。
需要: page-services-dhcpserver-editstaticmapping。除非另有说明,POST 受 CSRF-magic 保护。WebGUI PHP-FPM 以 root 运行。除非另有说明,POST 受 CSRF-magic 保护。WebGUI PHP-FPM 以 root 运行。
主机 shell。chroot 之外的文件。Kea JSON。hostname 字符集。numberoptions 文本引号。
除非该页面也被授权,否则没有 Diagnostics: Command。
cd lab
./run.sh
回环 127.0.0.1:19250。Compose 项目 pfsense-dhcpd-conf。见证 PFSENSE-DHCPD-CONF-WITNESS。仅回环:127.0.0.1:19250。Compose 项目 pfsense-dhcpd-conf。见证 PFSENSE-DHCPD-CONF-WITNESS。针对固定代码行的 PHP gadget。运行结束后栈会被拆除。
最后一行:
SUCCESS PFSENSE-DHCPD-CONF control-one-filename=yes trigger-extra-statement=yes PFSENSE-DHCPD-CONF-WITNESS
在 filename/rootpath/ldap/DUID 中使用 addslashes / 拒绝引号和换行。
9363ac5b8651a1c7a333180425ce7719070f95f9