abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · pfsense-auth-username-xss
类别: XSS 可达性: 远程
pfSense CE 2.9.0-DEVELOPMENT (9363ac5) - pfsense.org
head.inc 注销标题直接插值 $_SESSION['Username'] 原始值。passwordmg Form_StaticText 同样为原始值。本地字符集拒绝该触发载荷;LDAP 名称可绕过。
| ID | 暂无 CVE |
| 类别 | XSS |
| 可达性 | 远程(除另有说明外,需已认证 WebGUI) |
| CWE | CWE-79 |
| CVSS | 中危:5.4 CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N |
| 产品 | pfSense CE |
| 受影响版本 | 2.9.0-DEVELOPMENT (9363ac5b8651a1c7a333180425ce7719070f95f9) |
| 认证 | 使用 LDAP/RADIUS WebGUI session 的 WebGUI 会话 |
| 许可证 | GNU Affero GPL v3.0 |
| 实验环境 | 仅 127.0.0.1 |
我固定了公共 master 分支 9363ac5。实验环境是针对该固定版本 sink 的 PHP gadget,在 127.0.0.1:19170 上提供回环 HTTP。
系列文章:https://abraxaslabs.tech/research/pfsense-ce-leftovers
| 方法 | Sink | 权限影响 |
|---|---|---|
| 使用破坏引号的用户名进行 LDAP 登录 | head.inc 注销标题="Logout ({$_SESSION['Username']}@$system_url)" | 完整性: 实验验证:在注销 HTML 和 StaticText 中破坏引号并注入原始值。 |
| 同一遗留问题 | 同一 sink | 侦察: 实验验证:会话用户名会反射到每个包含 head.inc 的已认证页面。 |
| 同一遗留问题 | 同一 sink | 可用性: 未展示。 |
前置条件: LDAP/RADIUS WebGUI session。除另有说明外,POST 需 CSRF-magic。WebGUI PHP-FPM 以 root 运行。
前置条件: LDAP/RADIUS WebGUI session。除另有说明外,POST 需 CSRF-magic。WebGUI PHP-FPM 以 root 运行。除另有说明外,POST 需 CSRF-magic。WebGUI PHP-FPM 以 root 运行。
本地 [^a-zA-Z0-9.-_] 字符集。htmlspecialchars($system_url)。未认证不适用。
除非该页面也被授权,否则没有 Diagnostics: Command。
cd lab
./run.sh
回环 127.0.0.1:19170。Compose 项目 pfsense-auth-username-xss。见证 PFSENSE-AUTH-USERNAME-XSS-WITNESS。仅回环:127.0.0.1:19170。Compose 项目 pfsense-auth-username-xss。见证 PFSENSE-AUTH-USERNAME-XSS-WITNESS。针对固定代码行的 PHP gadget。运行结束后栈会被拆除。
最后一行:
SUCCESS PFSENSE-AUTH-USERNAME-XSS control-admin-encoded=yes trigger-quote-break=yes witness-unescaped=yes local-charset-blocks-trigger=yes PFSENSE-AUTH-USERNAME-XSS-WITNESS
在 head.inc 和 passwordmg 中对会话用户名使用 htmlspecialchars。
9363ac5b8651a1c7a333180425ce7719070f95f9