abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · pfsense-limiter-aqm
类别: 配置注入 可达性: 远程
pfSense CE 2.9.0-DEVELOPMENT (9363ac5) - pfsense.org
将 AQM 参数通过 FormatParameters / vsprintf 写入 /tmp/rules.limiter,然后执行 mwexec("/sbin/dnctl {$g['tmp_path']}/rules.limiter")。Apply 的 argv 是文件路径。隐藏数字删除是另一个已报告的遗留问题。
| 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-firewall-trafficshaper-limiter 权限的 WebGUI 会话 |
| 许可证 | GNU Affero GPL v3.0 |
| 实验环境 | 仅 127.0.0.1 |
我固定了公共 master 分支 9363ac5。实验环境是该固定 sink 的一个 PHP gadget,在 127.0.0.1:19260 上提供回环 HTTP。
系列文章:https://abraxaslabs.tech/research/pfsense-ce-leftovers
| 方法 | Sink | 权限 |
|---|---|---|
| POST firewall_shaper_vinterface.php AQM target/interval | vsprintf 写入 /tmp/rules.limiter,然后对该路径执行 dnctl | 完整性: 实验已证实:在 rules.limiter 中注入额外的 pipe 行。Apply 的 argv 仍是对该路径执行 dnctl。不是 shell。 |
| 同一遗留问题 | 同一 sink | 侦察: 实验已证实:witness 不在 argv 中。 |
| 同一遗留问题 | 同一 sink | 可用性: 推断:apply 后产生恶意的 dummynet pipe。 |
需要: page-firewall-trafficshaper-limiter。除非另有说明,POST 需 CSRF-magic。WebGUI PHP-FPM 以 root 运行。
需要: page-firewall-trafficshaper-limiter。除非另有说明,POST 需 CSRF-magic。WebGUI PHP-FPM 以 root 运行。除非另有说明,POST 需 CSRF-magic。WebGUI PHP-FPM 以 root 运行。
不是 shell。Limiter 名称仍受字符集限制。Create 覆盖和 delete 拼接问题已通过邮件报告。
除非该页面也被授权,否则没有 Diagnostics: Command。
cd lab
./run.sh
回环 127.0.0.1:19260。Compose 项目 pfsense-limiter-aqm。Witness PFSENSE-LIMITER-AQM-WITNESS。仅回环:127.0.0.1:19260。Compose 项目 pfsense-limiter-aqm。Witness PFSENSE-LIMITER-AQM-WITNESS。固定代码行的 PHP gadget。运行结束后栈会被拆除。
最后一行:
SUCCESS PFSENSE-LIMITER-AQM control-one-pipe-line=yes trigger-extra-dnctl=yes apply-file-argv=yes PFSENSE-LIMITER-AQM-WITNESS
对 AQM 参数进行数值检查。拒绝 CR/LF。
9363ac5b8651a1c7a333180425ce7719070f95f9