abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · pfsense-sshguard-crlf
类别: RCE 可达性: 远程
pfSense CE 2.9.0-DEVELOPMENT (9363ac5) - pfsense.org
sshguard_threshold / blocktime / detection_time 未经过 is_numericint 校验。system_sshguard_start 将 THRESHOLD= 原样写入。额外的 BACKEND= 即为 sshguard 执行的可执行文件。保存操作会重启 sshguard。与 SA-26_06 同类,但文件不同。
| 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-system-advanced-admin 权限的 WebGUI 会话 |
| 许可证 | GNU Affero GPL v3.0 |
| 实验环境 | 仅 127.0.0.1 |
我固定了公共 master 分支 9363ac5。实验环境是针对固定版本 sink 的 PHP gadget,在 127.0.0.1:18950 上提供回环 HTTP 服务。
系列文章:https://abraxaslabs.tech/research/pfsense-ce-leftovers
| 方法 | Sink | 权限 |
|---|---|---|
| POST system_advanced_admin.php sshguard_threshold | syslog.inc system_sshguard_start THRESHOLD= 然后 sshguard BACKEND exec | 完整性: 实验验证:额外的 BACKEND= 后者生效;stub 加载 sshguard.conf 并执行该 backend,后者写入了见证文件。 |
| 同一遗留问题 | 同一 sink | 侦察: 推断:backend 以 root 身份运行。 |
| 同一遗留问题 | 同一 sink | 可用性: 推断:替换 sshguard 防火墙 backend。 |
需要: page-system-advanced-admin。除非另有说明,POST 需 CSRF-magic。WebGUI PHP-FPM 以 root 运行。
需要: page-system-advanced-admin。除非另有说明,POST 需 CSRF-magic。WebGUI PHP-FPM 以 root 运行。除非另有说明,POST 需 CSRF-magic。WebGUI PHP-FPM 以 root 运行。
白名单使用 is_subnet。SA-25_09 是另一个 sshguard 漏洞。
除非该页面也被授权,否则没有 Diagnostics: Command。
cd lab
./run.sh
回环 127.0.0.1:18950。Compose 项目 pfsense-sshguard-crlf。见证文件 PFSENSE-SSHGUARD-CRLF-WITNESS。仅回环:127.0.0.1:18950。Compose 项目 pfsense-sshguard-crlf。见证文件 PFSENSE-SSHGUARD-CRLF-WITNESS。针对固定代码行的 PHP gadget。运行结束后栈会被拆除。
最后一行:
SUCCESS PFSENSE-SSHGUARD-CRLF control-single-backend=yes trigger-backend-exec=yes PFSENSE-SSHGUARD-CRLF-WITNESS
对三个 sshguard 字段使用 is_numericint。拒绝 CR/LF。
9363ac5b8651a1c7a333180425ce7719070f95f9