abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · pfsense-ldap-name-collision
类别: 权限残留 可达性: 远程
pfSense CE 2.9.0-DEVELOPMENT (9363ac5) - pfsense.org
getUserEntry($name) 在名称匹配时返回本地行。随后 isAdminUID() 看到 uid 0,isAllowedPage 允许所有页面。passwordmg 将该会话视为本地会话并写入该用户的哈希。uid == 0 是松散比较。
| ID | 暂无 CVE |
| 类别 | 权限残留 |
| 可达性 | 远程(除非另有说明,需已认证的 WebGUI) |
| CWE | CWE-269 |
| 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) |
| 认证 | 当 authmode != Local 时通过远程 WebGUI 登录的 WebGUI 会话;passwordmg 不是 warn-root |
| 许可证 | GNU Affero GPL v3.0 |
| 实验环境 | 仅 127.0.0.1 |
我锁定了公共 master 分支 9363ac5。实验环境是该锁定代码的 PHP gadget,在 127.0.0.1:19010 上通过回环 HTTP 运行。
系列文章:https://abraxaslabs.tech/research/pfsense-ce-leftovers
| 方法 | 汇聚点 | 权限 |
|---|---|---|
| 以本地管理员名称进行 LDAP/RADIUS 绑定,然后 POST passwordmg | getUserEntry / isAdminUID / local_user_set_password | 完整性: 实验环境已证实:远程管理员是 isAdminUID;包括 diag_command 在内的所有页面;passwordmg 设置了 uid 0 的哈希。仅存根(stub-only)的远程名称会安全失败。 |
| 同一残留 | 同一汇聚点 | 侦察: 实验环境已证实:每个页面的允许标志。 |
| 同一残留 | 同一汇聚点 | 可用性: 未展示。 |
前提条件: 当 authmode != Local 时通过远程 WebGUI 登录;passwordmg 不是 warn-root。除非另有说明,POST 上有 CSRF-magic。WebGUI PHP-FPM 以 root 运行。
前提条件: 当 authmode != Local 时通过远程 WebGUI 登录;passwordmg 不是 warn-root。除非另有说明,POST 上有 CSRF-magic。WebGUI PHP-FPM 以 root 运行。除非另有说明,POST 上有 CSRF-magic。WebGUI PHP-FPM 以 root 运行。
仅存根(stub-only)的远程名称。usermanager 本身是 warn-root。SA-26_22 xmlrpc uid 跳过是另一个不同的漏洞。
除非该页面也被授予,否则没有 Diagnostics: Command。
cd lab
./run.sh
回环 127.0.0.1:19010。Compose 项目 pfsense-ldap-name-collision。见证字符串 PFSENSE-LDAP-NAME-COLLISION-WITNESS。仅回环:127.0.0.1:19010。Compose 项目 pfsense-ldap-name-collision。见证字符串 PFSENSE-LDAP-NAME-COLLISION-WITNESS。锁定代码行的 PHP gadget。运行后栈会拆除。
最后一行:
SUCCESS PFSENSE-LDAP-NAME-COLLISION control-isadmin=no control-diag=no control-hash-unchanged=yes trigger-isadmin=yes trigger-all-pages=yes trigger-hash-set=yes uid-loose-eq=yes PFSENSE-LDAP-NAME-COLLISION-WITNESS
不要将远程名称映射到本地 uid 0 行。使用严格的 uid === '0' 加上认证来源。让 passwordmg 成为 warn-root。
9363ac5b8651a1c7a333180425ce7719070f95f9