
Une vulnérabilité de type Cross-Site Scripting (XSS) stocké existe dans Issabel PBX version 4.0.0-6. Cela permet à un attaquant authentifié d'injecter du code JavaScript ou HTML arbitraire via les champs de saisie Groupe et Description trouvés sous Système → Utilisateurs → Groupes.
| Champ | Détails |
|---|
| Identifiant CVE | CVE-2023-37191 |
| Produit | Issabel PBX (issabel-pbx) |
| Version affectée | 4.0.0-6 |
| Type de vulnérabilité | Cross-Site Scripting (XSS) stocké |
| Sévérité | Moyenne |
| Date de découverte | 7 juillet 2023 |
| Découvert par | Sahil Ojha |
| Site du vendeur | https://www.issabel.org/ |
| Code source | https://github.com/IssabelFoundation/issabelPBX |
| Testé sur | Windows |
Une vulnérabilité de Cross-Site Scripting (XSS) stocké existe dans Issabel PBX version 4.0.0-6. L’application ne parvient pas à nettoyer ou encoder correctement les entrées fournies par l’utilisateur avant de les stocker dans la base de données puis de les afficher dans le navigateur. Cela permet à un attaquant authentifié d’injecter du code JavaScript ou HTML arbitraire via les champs de saisie Groupe et Description situés dans Système → Utilisateurs → Groupes.
Une fois la charge malveillante enregistrée, elle est stockée de manière persistante sur le serveur. Chaque fois qu’un utilisateur (y compris les administrateurs) visite la page concernée, le script injecté s’exécute automatiquement dans sa session navigateur — sans aucune action supplémentaire de la part de l’attaquant. C’est ce qui distingue un XSS stocké (persistant) d’un XSS réfléchi ; l’impact est plus large et plus dangereux car la charge malveillante affecte tous les visiteurs de la page.
Système → Utilisateurs → Groupes de l’interface web d’Issabel PBXGroupe (champ nom) et Description (champ texte)Une exploitation réussie de cette vulnérabilité peut permettre à un attaquant de :
Parce que la charge malveillante est stockée sur le serveur, chaque utilisateur qui visite la page compromise est affecté — amplifiant les dégâts par rapport à une attaque XSS réfléchie.
Étape 1 : Connectez-vous à l’interface web d’Issabel PBX en utilisant des identifiants d’administrateur.
Étape 2 : Naviguez jusqu’à Système → Utilisateurs → Groupes. Dans les champs de saisie Groupe et/ou Description, entrez la charge malveillante XSS suivante :
"><script>alert(1)</script>
Les champs devraient ressembler à la capture d’écran ci-dessous :

Étape 3 : Cliquez sur Enregistrer. La charge malveillante est désormais stockée de manière persistante dans la base de données de l’application.
Étape 4 : Revenez à la page Système → Utilisateurs → Groupes (ou demandez à un autre utilisateur de la visiter). Le script injecté s’exécute automatiquement dans le navigateur, comme illustré ci-dessous :

Pour atténuer cette vulnérabilité, l’équipe de développement d’Issabel PBX devrait appliquer les correctifs suivants :
Validation des entrées : Valider strictement toutes les entrées utilisateur côté serveur. Rejeter ou nettoyer les valeurs contenant des caractères HTML spéciaux (<, >, ", ', &) dans les champs qui n’ont pas besoin de formatage HTML.
Encodage de la sortie : Lors de l’affichage des données stockées dans le navigateur, appliquer un encodage de sortie contextuel (par exemple, encodage d’entités HTML) pour neutraliser tout balisage injecté. Comme Issabel PBX est basé sur PHP, utiliser les fonctions PHP intégrées htmlspecialchars() ou htmlentities() plutôt qu’un filtrage personnalisé.
Politique de sécurité du contenu (CSP) : Mettre en place un en-tête HTTP Content Security Policy strict pour limiter les sources à partir desquelles les scripts peuvent être exécutés. Une CSP correctement configurée peut empêcher l’exécution de scripts injectés même si le nettoyage des entrées est contourné.
Audits de sécurité réguliers : Effectuer des revues de code et des tests d’intrusion périodiques pour identifier et corriger les vulnérabilités d’injection dans l’ensemble de l’application.
Ces informations sont fournies à des fins éducatives et de recherche uniquement. L’auteur n’est pas responsable de toute utilisation abusive de ces informations. Obtenez toujours une autorisation écrite appropriée avant de tester des vulnérabilités sur un système qui ne vous appartient pas.