abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · opnsense-wlan-wpa-line
类别: 配置行注入 可达性: 远程
OPNsense 核心 26.7.6 (a842fe48) - opnsense.org
GHSA-fq94 的遗留问题。无线 SSID 已设置 AllowNewlines=N。identity、passphrase 和 RADIUS auth_server_shared_secret 仍为裸 TextField(默认允许换行),并会写入 /var/etc/wpa_supplicant_*.conf 和 /var/etc/hostapd_*.conf。interfaces.inc 将 identity="{identity}" 插值到 wpa_supplicant 配置段中。换行或引号截断会以 root 身份添加额外指令。所需权限为 page-interfaces-wireless-edit,而非 page-all。
| ID | 暂无 CVE |
| 类别 | 配置行注入 |
| 可达性 | 远程(已认证 WebGUI) |
| CWE | CWE-93 |
| CVSS | 高危:8.1 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N |
| 产品 | OPNsense core(Deciso B.V.) |
| 受影响版本 | OPNsense core 26.7.6(a842fe48c21288d11a422cb944678e8eb308becf)Wlan.xml identity / passphrase |
| 认证 | 具有 page-interfaces-wireless-edit 权限的 WebGUI 会话 |
| 许可证 | GNU Affero GPL v3.0 |
| 实验环境 | 仅 127.0.0.1 |
我固定了标签 26.7.6。实验环境是一个固定 interfaces_wlan_configure 的 PHP gadget,在 127.0.0.1:18840 上提供回环 HTTP。Identity 中的 CR/LF 写入了额外的 # OPNSENSE-WLAN-WPA-LINE-WITNESS。SSID 保持单行。
| 方法 | 汇聚点 | 权限 |
|---|---|---|
| identity CR/LF | 在 wpa_supplicant 配置中固定 interfaces_wlan_configure 额外指令 | 完整性(实验验证): identity 后出现额外的 # OPNSENSE-WLAN-WPA-LINE-WITNESS。实验:identity-newline=yes extra-directive=yes。 |
额外 network / ssid / ap_scan / ctrl_interface 的生效 | 以 root 身份运行的 wpa_supplicant / hostapd | 完整性(推断): 额外的守护进程指令。gadget 中未启动 wpa_supplicant。 |
| SSID CR/LF | AllowNewlines=N | 否定(实验验证): SSID 保持单行。ssid-control=single-line。 |
| passphrase / RADIUS secret CR/LF | hostapd_*.conf / wpa_supplicant | 完整性(推断): 同类问题。gadget 运行的是 identity 路径。 |
| 无效的额外指令 | 无线守护进程 | 可用性(推断): hostapd / wpa_supplicant 可能无法启动。 |
| 此路径 | 无 | 侦察: 未额外读取 config.xml 中的机密。 |
实验验证与推断: identity 换行额外指令和 SSID 单行控制为实验成功。hostapd 和实际守护进程应用为推断。
前提条件: page-interfaces-wireless-edit。POST /api/interfaces/wireless_settings/*。非 page-all。需要 CSRF token。浏览器 <input type="text"> 不会保留 CR/LF;但来自该会话的直接 POST 会。
| 攻击面 | 实验 |
|---|---|
| SSID 换行 | 已约束(ssid-control=single-line) |
| 未认证 | 已关闭 |
page-all 无线管理 | 预期的无线电配置;遗留问题是委派编辑者本不应生成的额外指令 |
| CVE-2025-50989 bridge span cmdi | 现为无请求令牌的 configdRun |
| WEP 密钥 | escapeshellarg 传入 ifconfig |
无未认证。SSID 已拒绝 CR/LF。完全管理员按设计本就拥有 root。
cd lab
./run.sh
回环 127.0.0.1:18840。Compose 项目 opnsense-wlan-wpa-line。见证 OPNSENSE-WLAN-WPA-LINE-WITNESS。最后一行:
SUCCESS opnsense-wlan-wpa-line identity-newline=yes extra-directive=yes ssid-control=single-line OPNSENSE-WLAN-WPA-LINE-WITNESS
对 identity、passphrase 和 RADIUS 机密设置 AllowNewlines=N,与 SSID 相同。在 interfaces_wlan_configure 内部剥离 CR/LF 和引号,以覆盖所有调用方。额外的 hostapd / wpa_supplicant 指令应置于 page-all 之后。
a842fe48c21288d11a422cb944678e8eb308becfWlan.xmlinterfaces.inc interfaces_wlan_configureAllowNewlines=N