abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · pfsense-pppoe-secret-bang
类别: RCE 可达性: 远程
pfSense CE 2.9.0-DEVELOPMENT (9363ac5) - pfsense.org
用户名字符集允许 CR/LF。密码 ! 剥离(#10275)仅对密码开头的 ! 执行 ltrim。mpd 以 root 身份将 ! 作为外部密码助手运行。直接 POST 会保留换行符;浏览器 type=text 会将其剥离。
| ID | 暂无 CVE |
| 类别 | RCE |
| 可达性 | 远程(除非另有说明,需已认证 WebGUI) |
| CWE | CWE-78 |
| CVSS | 高危:8.8 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| 产品 | pfSense CE |
| 受影响版本 | 2.9.0-DEVELOPMENT (9363ac5b8651a1c7a333180425ce7719070f95f9) |
| 认证 | 具有 page-services-pppoeserver-edit 权限的 WebGUI 会话 |
| 许可证 | GNU Affero GPL v3.0 |
| 实验环境 | 仅 127.0.0.1 |
我固定了公共 master 9363ac5。实验环境是该固定 sink 的 PHP gadget,在 127.0.0.1:18980 上提供回环 HTTP。
系列文章:https://abraxaslabs.tech/research/pfsense-ce-leftovers
| 方法 | Sink | 权限 |
|---|---|---|
| 向 services_pppoe_edit.php 的 username 字段 POST 包含 CR/LF 的内容 | vpn_pppoe_updatesecret mpd.secret ! 助手 | 完整性: 实验已验证:username 换行加上 ! 助手行;stub PAP/CHAP 运行了该助手并写入了见证文件。密码 ! 被 GUI 拒绝。 |
| 同一遗留问题 | 同一 sink | 侦察: 推断:助手 stdout 未被使用。 |
| 同一遗留问题 | 同一 sink | 可用性: 未展示。 |
需要: page-services-pppoeserver-edit。除非另有说明,POST 受 CSRF-magic 保护。WebGUI PHP-FPM 以 root 运行。
需要: page-services-pppoeserver-edit。除非另有说明,POST 受 CSRF-magic 保护。WebGUI PHP-FPM 以 root 运行。除非另有说明,POST 受 CSRF-magic 保护。WebGUI PHP-FPM 以 root 运行。
密码 ! 的 GUI 加 ltrim。L2TP 用户名字符集。浏览器换行符剥离。
除非该页面也被授予,否则没有 Diagnostics: Command。
cd lab
./run.sh
回环 127.0.0.1:18980。Compose 项目 pfsense-pppoe-secret-bang。见证 PFSENSE-PPPOE-SECRET-BANG-WITNESS。仅回环:127.0.0.1:18980。Compose 项目 pfsense-pppoe-secret-bang。见证 PFSENSE-PPPOE-SECRET-BANG-WITNESS。固定行的 PHP gadget。运行结束后栈会被拆除。
最后一行:
SUCCESS PFSENSE-PPPOE-SECRET-BANG control-one-line=yes control-no-helper=yes password-bang-strip=yes trigger-helper=yes PFSENSE-PPPOE-SECRET-BANG-WITNESS
拒绝 PPPoE 用户名中的 CR/LF。应用与 L2TP 相同的字符集。
9363ac5b8651a1c7a333180425ce7719070f95f9